feat(chat): add persistence and coordinator#871
Merged
Conversation
New ChatId message, ChatUpdate event type for real-time chat streaming, and objc_class_prefix additions on contact protos. Signed-off-by: Brandon McAnsh <git@bmcreations.dev>
Bidirectional event stream Api, Service, Repository, and Controller plus shared chat domain models and proto ↔ domain extensions. Domain models: ChatId, ChatMessage, MessageContent, MessagePointer, TypingNotification, ChatType, ChatMember, ChatMetadata, MetadataUpdate, ChatUpdate. Uses openBidirectionalStream from OCP bidi infrastructure with ping/pong keepalive. EventStreamingController exposes a SharedFlow of ChatUpdate for downstream consumers. Signed-off-by: Brandon McAnsh <git@bmcreations.dev>
Unary RPCs for GetChat and GetDmChatFeed — Api, Service, ChatMetadataMapper, Repository, and Controller. Introduces ChatFeedPage domain model, GetChatError and GetDmChatFeedError sealed classes, and Hilt wiring. Signed-off-by: Brandon McAnsh <git@bmcreations.dev>
All 6 messaging RPCs — GetMessage, GetMessages, GetMessagesByIds, SendMessage, AdvancePointer, NotifyIsTyping — Api, Service, Repository, and Controller. Introduces ClientMessageId domain model, SendMessageError, GetMessageError, GetMessagesError, AdvancePointerError, and NotifyIsTypingError sealed classes, and Hilt wiring. Signed-off-by: Brandon McAnsh <git@bmcreations.dev>
Add three new Room tables (chat_metadata, chat_messages, chat_members) with corresponding entities, DAOs, and ChatTypeConverters for JSON serialization. Bump database version 18 → 19 with additive AutoMigration. Signed-off-by: Brandon McAnsh <git@bmcreations.dev>
Add ChatMetadataDataSource, ChatMessageDataSource, ChatMemberDataSource wrapping the new chat DAOs with null-safe FlipcashDatabase access. Add ChatEntityMapper for bidirectional domain ↔ entity conversion. Signed-off-by: Brandon McAnsh <git@bmcreations.dev>
Add apps/flipcash/shared/chat/ with ChatCoordinator that bridges the gRPC chat service controllers with Room persistence and exposes reactive state to feature modules. Follows the ContactCoordinator pattern: SessionListener for login hydration, DefaultLifecycleObserver for stream lifecycle, network reconnect for re-sync. Key capabilities: - Feed sync via ChatController.getDmChatFeed() - Event stream processing for real-time messages, pointers, typing - Optimistic message sends with SENDING/SENT/FAILED status tracking - Ephemeral typing indicators (in-memory only) - Full reset on logout via RealSessionController Signed-off-by: Brandon McAnsh <git@bmcreations.dev>
6937605 to
b4967f3
Compare
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.
No description provided.