fix(QuickMsgScreen): show "N marked read" alert for per-contact and per-channel mark-as-read

MODE_SELECT already showed the count; CONTACT_PICK ("Mark as read") and
CHANNEL_PICK ("Mark all read") were silently clearing unread without
any feedback. Count is read before zeroing so the alert is accurate.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Jakub
2026-06-09 07:43:51 +02:00
co-authored by Claude Sonnet 4.6
parent 51ce15bbdc
commit fec4828124
@@ -1197,7 +1197,11 @@ public:
if (the_mesh.getContactByIdx(_sorted[_contact_sel], ci)) { if (the_mesh.getContactByIdx(_sorted[_contact_sel], ci)) {
int sel = _ctx_menu.selectedIndex(); int sel = _ctx_menu.selectedIndex();
if (sel == 0) { if (sel == 0) {
int cleared = (int)_task->getDMUnread(ci.id.pub_key);
_task->clearDMUnread(ci.id.pub_key); _task->clearDMUnread(ci.id.pub_key);
char msg[32];
snprintf(msg, sizeof(msg), "%d marked read", cleared);
_task->showAlert(msg, 800);
} else if (sel == 3) { } else if (sel == 3) {
// Pin / Unpin // Pin / Unpin
int pinned_slot = _task->findFavouriteSlot(ci.id.pub_key); int pinned_slot = _task->findFavouriteSlot(ci.id.pub_key);
@@ -1327,7 +1331,11 @@ public:
uint8_t ch_idx = _channel_indices[_channel_sel]; uint8_t ch_idx = _channel_indices[_channel_sel];
int sel = _ctx_menu.selectedIndex(); int sel = _ctx_menu.selectedIndex();
if (sel == 0) { if (sel == 0) {
int cleared = (int)_ch_unread[ch_idx];
_ch_unread[ch_idx] = 0; _ch_unread[ch_idx] = 0;
char msg[32];
snprintf(msg, sizeof(msg), "%d marked read", cleared);
_task->showAlert(msg, 800);
} }
// sel 1/2/3 already handled by LEFT/RIGHT; ENTER just closes. // sel 1/2/3 already handled by LEFT/RIGHT; ENTER just closes.
} }