Conversation
Sample app builds 📱Below you will find the list of the latest versions of the sample apps. It's recommended to always download the latest builds of the sample apps to accurately test the pull request. |
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #660 +/- ##
============================================
+ Coverage 63.15% 69.07% +5.91%
- Complexity 514 838 +324
============================================
Files 118 149 +31
Lines 3602 4601 +999
Branches 445 628 +183
============================================
+ Hits 2275 3178 +903
- Misses 1186 1189 +3
- Partials 141 234 +93 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
|
Build available to test |
|
📏 SDK Binary Size Comparison Report
|
messaginginapp/src/main/java/io/customer/messaginginapp/gist/data/listeners/Queue.kt
Show resolved
Hide resolved
messaginginapp/src/main/java/io/customer/messaginginapp/state/InAppMessageReducer.kt
Show resolved
Hide resolved
messaginginapp/src/main/java/io/customer/messaginginapp/gist/data/listeners/Queue.kt
Show resolved
Hide resolved
|
|
| logger.error("Failed to delete inbox message ${message.toLogString()}: ${e.message}") | ||
| } | ||
| } | ||
| } |
There was a problem hiding this comment.
Delete inbox message calls view-logging endpoint instead
High Severity
The logDeleted method calls gistQueueService.logUserMessageView() which POSTs to /api/v1/logs/queue/{queueId} — the same endpoint used by logView for logging that a user viewed a message. No actual delete endpoint (e.g., @DELETE or a PATCH with a deletion flag) is defined in GistQueueService. By contrast, logOpenedStatus correctly uses a dedicated @PATCH("/api/v1/messages/{queueId}") endpoint. Deleting an inbox message will instead log a "view" event on the server, meaning the message won't actually be deleted and will reappear on the next sync.
Additional Locations (1)
There was a problem hiding this comment.
That's intentional. The same API is used for marking an in app message as viewed and for deleting an inbox message. I'll think of more descriptive name and rename the method later to minimize confusion.
## [4.16.0](4.15.2...4.16.0) (2026-02-20) ### Features * support for notification inbox ([#660](#660)) ([7bc46da](7bc46da))


Summary
This PR adds support for upcoming feature of notification inbox.
Changes
Includes previously approved/merged PRs:
Note
Medium Risk
Touches core message fetching/state flow (queue API contract, SSE event handling, caching, and new server mutations), so regressions could affect message delivery and read/unread synchronization.
Overview
Adds first-class Notification Inbox support to the in-app messaging SDK via a new
NotificationInboxAPI (ModuleMessagingInApp.inbox()), including listener-based updates, topic filtering/sorting, and client actions to mark opened/unopened, delete, and track clicks.Extends the message pipeline to fetch and stream inbox messages alongside in-app messages: queue fetch moves to
/api/v4/userswith a newQueueMessagesResponse, SSE addsinbox_messages, state gainsinboxMessages, and new middleware/reducer logic deduplicates byqueueIdand syncs opened/deleted updates (plus metrics) back to the server.Improves caching semantics by converting 304->200 responses, persisting raw responses, and caching per-message opened status in
InAppPreferenceStoreto preserve local read/unread changes when serving cached data; includes comprehensive unit/integration tests and a sample app inbox UI screen.Written by Cursor Bugbot for commit b5cf24d. This will update automatically on new commits. Configure here.