Procházet zdrojové kódy

stop sending presence to users you have not yet authorized

Mike před 1 měsícem
rodič
revize
858d316099
2 změnil soubory, kde provedl 32 přidání a 2 odebrání
  1. 1 1
      state/relationship.go
  2. 31 1
      state/relationship_test.go

+ 1 - 1
state/relationship.go

@@ -29,7 +29,7 @@ WITH myScreenName AS (SELECT ?),
                               COALESCE(clientSide.isPermit OR feedbag.isPermit, FALSE) AS isPermit,
                               COALESCE(clientSide.isDeny OR feedbag.isDeny, FALSE) AS isDeny
                        FROM (SELECT feedbag.screenName                                   AS _screenName,
-                                    MAX(CASE WHEN feedbag.classId = 0 THEN 1 ELSE 0 END) AS isBuddy,
+                                    MAX(CASE WHEN feedbag.classId = 0 AND NOT feedbag.authPending THEN 1 ELSE 0 END) AS isBuddy,
                                     MAX(CASE WHEN feedbag.classId = 2 THEN 1 ELSE 0 END) AS isPermit,
                                     MAX(CASE WHEN feedbag.classId = 3 THEN 1 ELSE 0 END) AS isDeny
                              FROM feedbag

+ 31 - 1
state/relationship_test.go

@@ -3136,7 +3136,7 @@ func TestSQLiteUserStore_AllRelationships(t *testing.T) {
 			},
 		},
 		{
-			name:            "feedbag server-side: buddy with auth pending does not count on your list",
+			name:            "feedbag server-side: I have a buddy that I have not yet authorized, don't show on list",
 			me:              NewIdentScreenName("me"),
 			clientSideLists: map[IdentScreenName]buddyList{},
 			serverSideLists: map[IdentScreenName]buddyList{
@@ -3164,6 +3164,36 @@ func TestSQLiteUserStore_AllRelationships(t *testing.T) {
 				},
 			},
 		},
+		{
+			name:            "feedbag server-side: A user has me on their list and I have not yet authorized them, don't show on list",
+			me:              NewIdentScreenName("me"),
+			clientSideLists: map[IdentScreenName]buddyList{},
+			serverSideLists: map[IdentScreenName]buddyList{
+				NewIdentScreenName("me"): {
+					privacyMode:      wire.FeedbagPDModePermitAll,
+					buddyList:        []IdentScreenName{},
+					buddyPendingAuth: []IdentScreenName{},
+					permitList:       []IdentScreenName{},
+					denyList:         []IdentScreenName{},
+				},
+				NewIdentScreenName("them"): {
+					privacyMode:      wire.FeedbagPDModePermitAll,
+					buddyList:        []IdentScreenName{NewIdentScreenName("me")},
+					buddyPendingAuth: []IdentScreenName{NewIdentScreenName("me")},
+					permitList:       []IdentScreenName{},
+					denyList:         []IdentScreenName{},
+				},
+			},
+			expect: []Relationship{
+				{
+					User:          NewIdentScreenName("them"),
+					BlocksYou:     false,
+					YouBlock:      false,
+					IsOnTheirList: false,
+					IsOnYourList:  false,
+				},
+			},
+		},
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {