diff options
| author | pepper <3782201+rohvani@users.noreply.github.com> | 2026-08-11 21:02:47 -0400 |
|---|---|---|
| committer | pepper <3782201+rohvani@users.noreply.github.com> | 2026-08-13 12:17:40 -0400 |
| commit | 473d6c2558c72a8dbbcf591e387c080baf2f531a (patch) | |
| tree | 4ec29f5fc170aa92098ca5c5c74dc53e97604342 /indra/newview/llnotificationhandlerutil.cpp | |
| parent | f6fa702706aeba8c5a3760a98883943cba3c973b (diff) | |
Implement ChatService persistent history stitching
Synchronize eligible direct IM conversations through the ChatService
capabilities into durable per-resident CSV archives. Validate deterministic
conversation IDs, UUIDv1 ordering, complete discovery and history payloads,
and the account-wide deletion cutoff before a bounded pass can append or
rebuild an archive.
Run discovery, pacing, retries, metadata resolution, and participant paging
through one account-scoped manager. Immediately prioritize new Direct
sessions, P2P previews, and accepted inbound IMs while honoring transcript
consent, authoritative mute state, capability changes, and fail-closed
account state.
Stitch ordinary and monthly legacy plaintext before the oldest accumulated
service row, keep normal plaintext logging active, and merge the first
validated service page in memory while older backfill continues. Drive
Direct and Preview reloads and their nonmodal loading status from shared
resident snapshots.
Maintain the human-readable chat_service_index.csv manifest and protect
archive updates with strict validation, torn-tail repair, corrupt-file
preservation, private file stamps, and atomic replacement. Extend Delete
Transcripts with a durable TimeUUID boundary and an asynchronous sweep that
suppresses every historical source until cleanup completes safely.
Add core coverage for deterministic IDs, UUIDv1 and timestamp validation,
strict page and list contracts, RFC 4180 CSV quoting, archive scanning, torn
tails, and corrupt records.
Diffstat (limited to 'indra/newview/llnotificationhandlerutil.cpp')
| -rw-r--r-- | indra/newview/llnotificationhandlerutil.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/indra/newview/llnotificationhandlerutil.cpp b/indra/newview/llnotificationhandlerutil.cpp index cdf7f05ada..ca11107f61 100644 --- a/indra/newview/llnotificationhandlerutil.cpp +++ b/indra/newview/llnotificationhandlerutil.cpp @@ -327,11 +327,11 @@ void LLHandlerUtil::decIMMesageCounter(const LLNotificationPtr& notification) { LLSD arg; arg["session_id"] = session_id; - session->mNumUnread--; + session->mNumUnread = llmax(0, session->mNumUnread - 1); arg["num_unread"] = session->mNumUnread; - session->mParticipantUnreadMessageCount--; + session->mParticipantUnreadMessageCount = + llmax(0, session->mParticipantUnreadMessageCount - 1); arg["participant_unread"] = session->mParticipantUnreadMessageCount; LLIMModel::getInstance()->mNewMsgSignal(arg); } } - |
