summaryrefslogtreecommitdiff
path: root/indra/newview/llnotificationhandlerutil.cpp
AgeCommit message (Collapse)Author
2026-09-10Consolidate ChatService reconciliation and fix live IM replaypepper
Merge archives, plaintext and head previews by service ID and occurrence before applying history limits. Keep loaded history and visible context in ChatService so IM sessions and previews share one composer, with ordinary live appends remaining independent of history replay. Preserve original bodies and send-versus-receipt timing through offline delivery and translation. Match known send times exactly and online receipt times within a rolling 60-second window. Consume eligible occurrences once in chronological order so repeated messages survive reconciliation across minute boundaries. Link offer fallback text to its notification ID and advance the replay cursor for each actual row. Missing or delayed fallback rows can no longer cause the following live IM to be skipped. Dispatch ChatService presentation through the main-loop queue with runtime and current-state checks. This prevents login deadlocks from reentering font initialization in another coroutine. Await deletion invalidation before continuing cleanup so a delayed clear cannot erase later messages. Validated with the Release viewer build, all 34 LLChatServiceHistoryCore cases, and native delivery, archive, offer replay and coroutine-deadlock fixtures. The deadlock fixtures reproduce the original hangs and pass with deferred presentation.
2026-08-13Improve ChatService history readabilitypepper
Add phase-oriented comments around history synchronization, archive validation, asynchronous view updates, and transcript deletion. Expand dense control flow and restore readable spacing throughout the ChatService implementation and its integration points without changing behavior. Restore unrelated end-of-file formatting so it drops out of the overall PR diff.
2026-08-13Implement ChatService persistent history stitchingpepper
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.
2025-03-05#3051 fix for Group notices get logged into wrong fileMaxim Nikolenko
2024-05-22Fix line endlingsAnsariel
2024-05-22Merge remote-tracking branch 'origin/main' into DRTVWR-600-maint-AAnsariel
# Conflicts: # autobuild.xml # indra/cmake/CMakeLists.txt # indra/cmake/GoogleMock.cmake # indra/llaudio/llaudioengine_fmodstudio.cpp # indra/llaudio/llaudioengine_fmodstudio.h # indra/llaudio/lllistener_fmodstudio.cpp # indra/llaudio/lllistener_fmodstudio.h # indra/llaudio/llstreamingaudio_fmodstudio.cpp # indra/llaudio/llstreamingaudio_fmodstudio.h # indra/llcharacter/llmultigesture.cpp # indra/llcharacter/llmultigesture.h # indra/llimage/llimage.cpp # indra/llimage/llimagepng.cpp # indra/llimage/llimageworker.cpp # indra/llimage/tests/llimageworker_test.cpp # indra/llmessage/tests/llmockhttpclient.h # indra/llprimitive/llgltfmaterial.h # indra/llrender/llfontfreetype.cpp # indra/llui/llcombobox.cpp # indra/llui/llfolderview.cpp # indra/llui/llfolderviewmodel.h # indra/llui/lllineeditor.cpp # indra/llui/lllineeditor.h # indra/llui/lltextbase.cpp # indra/llui/lltextbase.h # indra/llui/lltexteditor.cpp # indra/llui/lltextvalidate.cpp # indra/llui/lltextvalidate.h # indra/llui/lluictrl.h # indra/llui/llview.cpp # indra/llwindow/llwindowmacosx.cpp # indra/newview/app_settings/settings.xml # indra/newview/llappearancemgr.cpp # indra/newview/llappearancemgr.h # indra/newview/llavatarpropertiesprocessor.cpp # indra/newview/llavatarpropertiesprocessor.h # indra/newview/llbreadcrumbview.cpp # indra/newview/llbreadcrumbview.h # indra/newview/llbreastmotion.cpp # indra/newview/llbreastmotion.h # indra/newview/llconversationmodel.h # indra/newview/lldensityctrl.cpp # indra/newview/lldensityctrl.h # indra/newview/llface.inl # indra/newview/llfloatereditsky.cpp # indra/newview/llfloatereditwater.cpp # indra/newview/llfloateremojipicker.h # indra/newview/llfloaterimsessiontab.cpp # indra/newview/llfloaterprofiletexture.cpp # indra/newview/llfloaterprofiletexture.h # indra/newview/llgesturemgr.cpp # indra/newview/llgesturemgr.h # indra/newview/llimpanel.cpp # indra/newview/llimpanel.h # indra/newview/llinventorybridge.cpp # indra/newview/llinventorybridge.h # indra/newview/llinventoryclipboard.cpp # indra/newview/llinventoryclipboard.h # indra/newview/llinventoryfunctions.cpp # indra/newview/llinventoryfunctions.h # indra/newview/llinventorygallery.cpp # indra/newview/lllistbrowser.cpp # indra/newview/lllistbrowser.h # indra/newview/llpanelobjectinventory.cpp # indra/newview/llpanelprofile.cpp # indra/newview/llpanelprofile.h # indra/newview/llpreviewgesture.cpp # indra/newview/llsavedsettingsglue.cpp # indra/newview/llsavedsettingsglue.h # indra/newview/lltooldraganddrop.cpp # indra/newview/llurllineeditorctrl.cpp # indra/newview/llvectorperfoptions.cpp # indra/newview/llvectorperfoptions.h # indra/newview/llviewerparceloverlay.cpp # indra/newview/llviewertexlayer.cpp # indra/newview/llviewertexturelist.cpp # indra/newview/macmain.h # indra/test/test.cpp
2024-05-07secondlife/viewer#1333 BOOL to bool conversion leftovers: ternariesAlexander Gavriliuk
2024-04-29#824 Process source files in bulk: replace tabs with spaces, convert CRLF to ↵Andrey Lihatskiy
LF, and trim trailing whitespaces as needed
2024-02-21Convert remaining BOOL to boolAnsariel
2023-02-13SL-18268 - Viewer update to read group chat history.simon
Feature described at https://community.secondlife.com/blogs/entry/12652-coming-soon-to-a-viewer-near-you-group-chat-history/
2020-07-22SL-13620 FIXED The code appears instead of the maturity icon in the chat historyMnikolenko Productengine
2019-07-03DRTVWR-493 LLAvatarNameCache to singletoneandreykproductengine
2017-05-24MAINT-7434 FIXED SLURL instead of username appears in "have said something ↵Mnikolenko Productengine
new" text for some messages
2017-02-15MAINT-7118 Swapping legacy people API with new cacheandreykproductengine
2015-11-10remove execute permission from many files that should not have itOz Linden
2013-10-08merge from viewer-releaseRichard Linden
2013-09-06MAINT-3110 FIXED new crash in LLNotificationsUI::LLHandlerUtil::logToIMP2Pmaksymsproductengine
2013-08-09second phase summer cleaningRichard Linden
replace llinfos, lldebugs, etc with new LL_INFOS(), LL_DEBUGS(), etc.
2013-03-29Update Mac and Windows breakpad builds to latestGraham Madarasz
2013-01-30Pull merge from lindenlab/viewer-developementMerov Linden
2012-12-06CHUI-494: WIP First pass at getting the suppression of events in DND working.William Todd Stinson
2012-11-09CHUI-337 FIXED: To avoid confusion with a classes "...conversation..." and ↵AlexanderP ProductEngine
in accordance with the naming convention in the project, some classes and corresponding files should be renamed: LLIMConversation -> LLFloaterIMSessionTab LLIMFloater -> LLFloaterIMSession LLNearbyChat -> LLFloaterIMNearbyChat LLIMFloaterContainer -> LLFloaterIMContainer LLNearbyChatBarListener -> LLFloaterIMNearbyChatListener LLNearbyChatHandler -> LLFloaterIMNearbyChatHandler
2012-10-22CHUI-433: Implemented an alternate solution to the problem. The original ↵Gilbert Gonzales
solution was ambiguous and incomplete and also preserved an existing hack. The new solution removes a hack/deprecated code (setActiveSession/getActiveSession functions). Basically, a toast message is not displayed if the user already has the conversation in focus. When the conversation floater loses focus toasts message will be displayed for that conversation.
2012-09-26MAINT-994 Oskar Linden login issuesKelly Washington
* Set max persistent notifications to 250 * Don't register for notification callbacks until after peristent ones are loaded. reviewed with Simon
2012-09-07CHUI-323 FIXED (Local chat message panel out of position in Conversation ↵AlexanderP ProductEngine
floater): Prevented too early creation LLNearbyChat
2012-08-31CHUI-315 (Nearby chat messages do not appear in conversation floater): ↵AlexanderP ProductEngine
cancelled inheritance LLNearbyChat from LLSingleton; set mSingleInstance flag for it.
2012-08-22CHUI_310 make NearbyChat a singletoneAlexanderP ProductEngine
2012-06-08EXP-1953: First pass at implementing the maturity flow during a teleport via ↵Todd Stinson
lure.
2012-05-18CHUI-112 FIX Clicking Show or Discard in an inventory offer toast does not ↵Richard Linden
dismiss toast removed special case logic for dealing with user online/offline collisions added ability to cancel old duplicate notifications
2012-04-12CHUI-87 FIXED crash in handling notifications after viewer disconnect.Seth ProductEngine
Notification handlers now use LLHandles to screen channels.
2012-04-26merge with viewer-releaseRichard Linden
2012-03-29CHUI-51 WIP notifications routig code cleanupRichard Linden
phase 2, removal of extraneous signaling in favor of llnotificationchannels made notificationchannels work better with overrides and lifetime managed by creator
2012-03-27CHUI-51 WIP notifications routig code cleanupRichard Linden
phase 1, removal of most of llnotificationhandler
2011-09-27EXP-1247 Nearby chat as part of chat floaterLeyla Farazha
2011-04-13STORM-941 FIXED IM history to use the resident's user name for the log file ↵Seth ProductEngine
name. Added conversions from legacy names or SLURLs with avatar id to the user names in cases of logging P2P sessions and inventory offers. Removed asynchronous writes to temporary IM log file depending on name cache responses.
2010-09-16MergeLeyla Farazha
2010-09-13Bunch of trivial typo fixes that were bothering me on another branch!Tofu Linden
2010-09-03Post-convert merge by convert_monolith.py from ↵Aimee Linden
/Users/Aimee/Documents/Work/Linden-Lab/Development/viewer/convert/viewer-identity-evolution
2010-08-13Change license from GPL to LGPL (version 2.1)Oz Linden
2010-06-02removed "SESSION_NAME" in favor of doing a gCacheName lookupLeyla Farazha
reviewed by James
2010-05-11merge from dessie/viewer-public right before SLE code landedJames Cook
2010-05-06EXT-7097 FIXEDAlexei Arabadji
Replaced usage usage of "ObjectGiveItemUnknownUser" notification with functionality provided by LLPostponedNotification class; reviewed by Vadim Savchuk at https://codereview.productengine.com/secondlife/r/345/ --HG-- branch : product-engine
2010-04-30Partial display name support in money transaction notificationsJames Cook
2010-04-01fixed EXT-2801 Record "object return" notification into IM history, not chat ↵Alexei Arabadji
history, * added class for LLPostponedNotification to rpovide possibility postpone adding notification to notifications system till sender avatar name will be received from cache name; * rolled back changes related to fix of EXT-4779; * avoided passing avatar id when logging 'Object Return' notification to nearby chat; eviewed by Vadim Savchuk at https://jira.secondlife.com/browse/EXT-6373 --HG-- branch : product-engine
2010-03-30Remove some notifications eliminated in mergeJames Cook
2010-03-29Merge latest viewer-hotfix, approximately equal to Viewer 2.0 finalJames Cook
2010-03-25fixed EXT-6489 “"User not online - inventory has been saved" should be ↵Alexei Arabadji
logged to IM log”, reviewed by Mike Antipov at https://codereview.productengine.com/secondlife/r/90/ --HG-- branch : product-engine
2010-03-23Fixed normal subtask EXT-6441 - Do not show "friendship accepted" toast if ↵Dmitry Zaporozhan
respective IM window is open and in focus. Minor changes to supress toast for FriendshipAccepted notification. --HG-- branch : product-engine
2010-03-19Updated normal task EXT-5905 - Resolving offers.Dmitry Zaporozhan
Reusable notifications are deleted when user closes IM floater(old - when user closes Viewer). --HG-- branch : product-engine
2010-03-19Automated merge with https://hg.productengine.com/secondlife/viewer-2-0/Alexei Arabadji
--HG-- branch : product-engine