BIOS-33821: Fix Facebook contact disappearing from SNC once a DM exists#285
Draft
Fizzadar wants to merge 1 commit into
Draft
BIOS-33821: Fix Facebook contact disappearing from SNC once a DM exists#285Fizzadar wants to merge 1 commit into
Fizzadar wants to merge 1 commit into
Conversation
Messenger DMs are created as ENCRYPTED_OVER_WA_ONE_TO_ONE (type 15), but SearchUsers only surfaced plain ONE_TO_ONE results, so a contact vanished from Start New Chat once a DM existed. Relax the SearchUsers filter to accept all 1:1 thread types via IsOneToOne(). Make GetFBID() return OtherUserId when set, falling back to ResultId for any 1:1 thread type.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
On Facebook, once a DM exists with a contact, that contact disappears from Start New Chat search / Connections. Searching the name without spaces makes them reappear.
Root cause
Messenger DMs are created as
ENCRYPTED_OVER_WA_ONE_TO_ONE(ThreadType 15), butSearchUsersonly surfaced plainONE_TO_ONE(type 1) results. Once a DM exists, Meta returns the contact as a type-15 existing-thread result, which was filtered out twice (the connector filter andGetFBID()returning 0 for non-type-1).Fix
pkg/connector/startchat.go: relax theSearchUsersfilter to accept all 1:1 thread types viaThreadType.IsOneToOne()(still gated onCanViewerMessageandGetFBID() != 0).pkg/messagix/table/search.go:GetFBID()now returnsOtherUserIdwhen set, falling back to parsingResultIdfor any 1:1 thread type.Verification
go buildandgo vetpass on the changed packages. Direct on-bridge repro (search a contact with an existing Messenger E2EE DM, confirm it now appears) recommended before merge — the raw type-15 search response was inferred from the struct + the with/without-space asymmetry, not captured in trace logs.