Fix growing unread notification counts by unifying key generation logic #253
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.
Fixes #109
I discovered a bug with the notification count persistence where
src/service/pusher/append.rswas manually constructing database keys using raw bytes (concatenating user ID, separator, and room ID), whereas thereset_notification_countslogic innotification.rsuses a structured tuple key(UserId, RoomId).This mismatch meant that
incrementandresetwere operating on different database keys. As a result, new notifications would increment a counter that the reset logic never touched, causing unread counts to grow indefinitely without ever being cleared. This PR refactorsappend.rsto use the same(UserId, RoomId)tuple key structure and updates the increment logic to use the async database API, ensuring that increments and resets target the same entry.Validations:
Verified that the code compiles correctly with cargo check.
Confirmed key structure matches
notification.rs.