Skip to content

feat(chat): adopt flipcash2 0.16.0 (private groups, bio, cover picture) - #974

Merged
bmc08gt merged 8 commits into
mainfrom
chore/flipcash2-0.16.0
Oct 5, 2026
Merged

bmc08gt merged 8 commits into
mainfrom
chore/flipcash2-0.16.0

Conversation

@bmc08gt

@bmc08gt bmc08gt commented Oct 5, 2026 •

Copy link
Copy Markdown
Collaborator

Pins flipcash2-client-protocol 0.16.0 (code-payments/flipcash2-client-protocol#23), and Package.resolved resolves it at a5cc6f8a.

Adopts the 0.16.0 contract in FlipcashCore, with no UI:

  • .group → .publicGroup in ChatService.startChat, which the contract rename requires to compile. Nothing builds a private_group start yet.
  • The seven lobby and key-envelope RPCs on ChatService, with Error* enums in proto order, and async wrappers in FlipClient+Chat (getLobbyMembers pages to the end).
  • setBio and setCoverPicture on ProfileService and FlipClient+Profile. Profile gains bio and coverPicture (reusing ProfilePicture).
  • Conversation.isPrivate/inLobby, in memory only. They aren't persisted, so a conversation restored from SQLite reads false until the server copy refreshes.
  • ConversationStreamEvent.lobbyChanged, decoded from lobby_updates. The store and ConversationController ignore it for now.
  • encryptionRequired on ErrorSendMessage (3) and ErrorEditMessage (6). EncryptedChatClient refetches the conversation on it, the same as encryptionNotAllowed.

KeyEnvelope travels as opaque scheme/nonce/ciphertext. Wrapping and unwrapping the chat key, and sealing messages with CHAT_KEY_XCHACHA20POLY1305, is not here: it has to land on both platforms together. ChatSeal.open rejects the new scheme, so private-group messages show as unsupported until then.

Only the last scaffolding commit compiles on its own; the rename lives there.

@bmc08gt
bmc08gt marked this pull request as ready for review October 5, 2026 21:15
Add Conversation.description (in-memory), decode MetadataUpdate.DescriptionChanged
into the store, and map DESCRIPTION_MODERATED on StartChat and EditChat results.
EditChat models unchanged, set, and clear explicitly via
ConversationDescriptionEdit, since the wire tells them apart by whether the
wrapper is set.
@bmc08gt
bmc08gt merged commit 0f5ffc6 into main Oct 5, 2026
1 of 3 checks passed
bmc08gt added a commit that referenced this pull request Oct 5, 2026
Package.swift has pinned 0.17.0 since #974, but Package.resolved still named 0.16.0. Xcode Cloud resolves only from the committed file, so deploys fail at resolution until it matches.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant