meshcore-open/lib
Ryan Malloy daca42701c
Notification rate limiting (#110)
* Add notification rate limiting with privacy-safe debug logging

- Add batching system to prevent notification storms (3s rate limit, 5s batch window)
- Queue rapid notifications and show batch summaries
- Debug logs show device names for adverts, sender/channel for messages (no content leaks)
- Remove unused _maxBatchSize constant

Context: Added after getting notification-flooded while evaluating RF flood management. The irony.

* Update notification_service.dart

I made a mistake and removed this

* Add l10n support for notification strings

Addresses PR #110 review feedback to use the translations system:
- Add notification strings to app_en.arb (plurals for batch summary)
- Update NotificationService to use lookupAppLocalizations()
- Wire locale from MaterialApp to NotificationService
- Regenerate localization files

New strings added (English only, translations needed):
- notification_activityTitle: "MeshCore Activity"
- notification_messagesCount: "{count} message(s)"
- notification_channelMessagesCount: "{count} channel message(s)"
- notification_newNodesCount: "{count} new node(s)"
- notification_newTypeDiscovered: "New {type} discovered"
- notification_receivedNewMessage: "Received new message"

* Add notification string translations for all supported languages

Translated notification_activityTitle, notification_messagesCount,
notification_channelMessagesCount, notification_newNodesCount,
notification_newTypeDiscovered, and notification_receivedNewMessage
to: bg, de, es, fr, it, nl, pl, pt, ru, sk, sl, sv, uk, zh

Includes proper ICU plural forms for Slavic languages (few/many/other)
and Slovenian dual form.

* Apply dart format to notification_service.dart

---------

Co-authored-by: Winston Lowe <wel97459@gmail.com>
2026-02-08 18:42:15 -08:00
..
connector Refactor unread message tracking and implement channel caching (#126) 2026-02-04 20:34:03 -07:00
helpers format dart files 2026-02-04 08:32:35 -08:00
l10n Notification rate limiting (#110) 2026-02-08 18:42:15 -08:00
models Refactor unread message tracking and implement channel caching (#126) 2026-02-04 20:34:03 -07:00
screens reduce map marker size (#131) 2026-02-08 18:40:58 -08:00
services Notification rate limiting (#110) 2026-02-08 18:42:15 -08:00
storage Refactor unread message tracking and implement channel caching (#126) 2026-02-04 20:34:03 -07:00
utils Integrate SharePlus plugin for enhanced sharing functionality across platforms 2026-02-08 12:26:49 -08:00
widgets reduce map marker size (#131) 2026-02-08 18:40:58 -08:00
main.dart Notification rate limiting (#110) 2026-02-08 18:42:15 -08:00