fix: isGroupHandle incorrectly returns false for group chats #42
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
isGroupHandle(identifier:guid:)inRPCPayloads.swiftalways returnsfalsefor group chats in RPC output (is_groupfield).The function prefers
identifieroverguid:For group chats:
identifier= bare GUID (e.g.,70012e07fc544289a74e87ecaf2ebe93) — no prefixguid= prefixed (e.g.,any;+;70012e07fc544289a74e87ecaf2ebe93) — has;+;Since
ChatInfoalways populatesidentifier, it's never empty, soguidis never checked. The bare GUID doesn't contain;+;, so the function returnsfalse.Additionally, the
;-;check is incorrect — that prefix indicates DMs (any;-;+14155551212), not groups.Fix
Always check
guid(which carries the prefix), also checkidentifieras a fallback, and only match the group prefix;+;.Verification
Tested with
imsg rpc --jsonon macOS 15.x:Before fix:
"is_group": false❌"is_group": false✅After fix:
"is_group": true✅"is_group": false✅This affects both
chats.listandmessagenotification payloads in the RPC server. The CLIwatchandhistorycommands (which useMessagePayload/OutputModels.swift) are unaffected since they don't emitis_group.