Add Group Message Read Receipt Functionality #1029
Open
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.
part of openimsdk/open-im-server#3527
Summary
SDK-side support for group message read receipts: introduce a cursor model, a sync API, and improved notification handling.
Part of openimsdk/open-im-server#3527
Data Model
readCursorState
: stores the latest per-conversationcursorVersion
used as the anchor for incremental sync.ReadCursor
: maintains (convID, uid) → maxReadSeq for each user in a conversation.Message.AttachmentInfo.cursorVersion
: records thecursorVersion
at the last projection/update, enabling idempotency and preventing duplicate projections.API
getConversationReadCursors()
: syncs conversation read cursors from the server to local storage; persists(convID, uid, maxReadSeq)
and updates local caches/indexes.projectGroupReadInfo()
: projects cursor data from the local DB ontoMessage.AttachmentInfo
; recommended to call for messages in the visible viewport.Notifications
readCursorState
andReadCursor
.