From 9c1d55c8443f583b8d24cd69cd85cfd892e395f0 Mon Sep 17 00:00:00 2001 From: Jason P Date: Tue, 6 Jan 2026 15:26:45 -0600 Subject: [PATCH] Add option to Mute/Unmute Channel to BaseUI (#9194) --- src/graphics/draw/MenuHandler.cpp | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/graphics/draw/MenuHandler.cpp b/src/graphics/draw/MenuHandler.cpp index 5687c8620..138995ebe 100644 --- a/src/graphics/draw/MenuHandler.cpp +++ b/src/graphics/draw/MenuHandler.cpp @@ -449,13 +449,14 @@ void menuHandler::clockMenu() } void menuHandler::messageResponseMenu() { - enum optionsNumbers { Back = 0, ViewMode, DeleteAll, DeleteOldest, ReplyMenu, Aloud, enumEnd }; + enum optionsNumbers { Back = 0, ViewMode, DeleteAll, DeleteOldest, ReplyMenu, MuteChannel, Aloud, enumEnd }; static const char *optionsArray[enumEnd]; static int optionsEnumArray[enumEnd]; int options = 0; auto mode = graphics::MessageRenderer::getThreadMode(); + int threadChannel = graphics::MessageRenderer::getThreadChannel(); optionsArray[options] = "Back"; optionsEnumArray[options++] = Back; @@ -467,6 +468,15 @@ void menuHandler::messageResponseMenu() optionsArray[options] = "View Chats"; optionsEnumArray[options++] = ViewMode; + // If viewing ALL chats, hide “Mute Chat” + if (mode != graphics::MessageRenderer::ThreadMode::ALL && mode != graphics::MessageRenderer::ThreadMode::DIRECT) { + const uint8_t chIndex = (threadChannel != 0) ? (uint8_t)threadChannel : channels.getPrimaryIndex(); + auto &chan = channels.getByIndex(chIndex); + + optionsArray[options] = chan.settings.module_settings.is_muted ? "Unmute Channel" : "Mute Channel"; + optionsEnumArray[options++] = MuteChannel; + } + // Delete submenu optionsArray[options] = "Delete"; optionsEnumArray[options++] = 900; @@ -502,6 +512,14 @@ void menuHandler::messageResponseMenu() menuHandler::menuQueue = menuHandler::reply_menu; screen->runNow(); + } else if (selected == MuteChannel) { + const uint8_t chIndex = (ch != 0) ? (uint8_t)ch : channels.getPrimaryIndex(); + auto &chan = channels.getByIndex(chIndex); + if (chan.settings.has_module_settings) { + chan.settings.module_settings.is_muted = !chan.settings.module_settings.is_muted; + nodeDB->saveToDisk(); + } + // Delete submenu } else if (selected == 900) { menuHandler::menuQueue = menuHandler::delete_messages_menu;