mirror of
https://github.com/meshtastic/firmware.git
synced 2025-12-21 18:22:32 +00:00
Rework Delete flow
This commit is contained in:
@@ -601,28 +601,36 @@ void menuHandler::deleteMessagesMenu()
|
|||||||
{
|
{
|
||||||
enum optionsNumbers { Back = 0, DeleteOldest, DeleteThis, DeleteAll, enumEnd };
|
enum optionsNumbers { Back = 0, DeleteOldest, DeleteThis, DeleteAll, enumEnd };
|
||||||
|
|
||||||
|
static const char *optionsArray[enumEnd];
|
||||||
|
static int optionsEnumArray[enumEnd];
|
||||||
|
int options = 0;
|
||||||
|
|
||||||
auto mode = graphics::MessageRenderer::getThreadMode();
|
auto mode = graphics::MessageRenderer::getThreadMode();
|
||||||
|
|
||||||
|
optionsArray[options] = "Back";
|
||||||
|
optionsEnumArray[options++] = Back;
|
||||||
|
|
||||||
|
optionsArray[options] = "Delete Oldest";
|
||||||
|
optionsEnumArray[options++] = DeleteOldest;
|
||||||
|
|
||||||
|
// If viewing ALL chats → hide “Delete This Chat”
|
||||||
|
if (mode != graphics::MessageRenderer::ThreadMode::ALL) {
|
||||||
|
optionsArray[options] = "Delete This Chat";
|
||||||
|
optionsEnumArray[options++] = DeleteThis;
|
||||||
|
}
|
||||||
#if defined(M5STACK_UNITC6L)
|
#if defined(M5STACK_UNITC6L)
|
||||||
static const char *optionsArrayAll[] = {"Back", "Delete Oldest", "Delete All"};
|
optionsArray[options] = "Delete All";
|
||||||
static const char *optionsArrayNormal[] = {"Back", "Delete Oldest", "Delete This Chat", "Delete All"};
|
|
||||||
#else
|
#else
|
||||||
static const char *optionsArrayAll[] = {"Back", "Delete Oldest", "Delete All Chats"};
|
optionsArray[options] = "Delete All Chats";
|
||||||
static const char *optionsArrayNormal[] = {"Back", "Delete Oldest", "Delete This Chat", "Delete All Chats"};
|
|
||||||
#endif
|
#endif
|
||||||
|
optionsEnumArray[options++] = DeleteAll;
|
||||||
|
|
||||||
BannerOverlayOptions bannerOptions;
|
BannerOverlayOptions bannerOptions;
|
||||||
bannerOptions.message = "Delete Messages";
|
bannerOptions.message = "Delete Messages";
|
||||||
|
|
||||||
// If viewing ALL chats → hide “Delete This Chat”
|
bannerOptions.optionsArrayPtr = optionsArray;
|
||||||
if (mode == graphics::MessageRenderer::ThreadMode::ALL) {
|
bannerOptions.optionsEnumPtr = optionsEnumArray;
|
||||||
bannerOptions.optionsArrayPtr = optionsArrayAll;
|
bannerOptions.optionsCount = options;
|
||||||
bannerOptions.optionsCount = 3;
|
|
||||||
} else {
|
|
||||||
bannerOptions.optionsArrayPtr = optionsArrayNormal;
|
|
||||||
bannerOptions.optionsCount = 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
bannerOptions.bannerCallback = [mode](int selected) -> void {
|
bannerOptions.bannerCallback = [mode](int selected) -> void {
|
||||||
int ch = graphics::MessageRenderer::getThreadChannel();
|
int ch = graphics::MessageRenderer::getThreadChannel();
|
||||||
uint32_t peer = graphics::MessageRenderer::getThreadPeer();
|
uint32_t peer = graphics::MessageRenderer::getThreadPeer();
|
||||||
@@ -634,6 +642,7 @@ void menuHandler::deleteMessagesMenu()
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (selected == DeleteAll) {
|
if (selected == DeleteAll) {
|
||||||
|
LOG_INFO("Deleting all messages");
|
||||||
messageStore.clearAllMessages();
|
messageStore.clearAllMessages();
|
||||||
graphics::MessageRenderer::clearThreadRegistries();
|
graphics::MessageRenderer::clearThreadRegistries();
|
||||||
graphics::MessageRenderer::clearMessageCache();
|
graphics::MessageRenderer::clearMessageCache();
|
||||||
@@ -641,6 +650,7 @@ void menuHandler::deleteMessagesMenu()
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (selected == DeleteOldest) {
|
if (selected == DeleteOldest) {
|
||||||
|
LOG_INFO("Deleting oldest message");
|
||||||
|
|
||||||
if (mode == graphics::MessageRenderer::ThreadMode::ALL) {
|
if (mode == graphics::MessageRenderer::ThreadMode::ALL) {
|
||||||
messageStore.deleteOldestMessage();
|
messageStore.deleteOldestMessage();
|
||||||
@@ -655,6 +665,7 @@ void menuHandler::deleteMessagesMenu()
|
|||||||
|
|
||||||
// This only appears in non-ALL modes
|
// This only appears in non-ALL modes
|
||||||
if (selected == DeleteThis) {
|
if (selected == DeleteThis) {
|
||||||
|
LOG_INFO("Deleting all messages in this thread");
|
||||||
|
|
||||||
if (mode == graphics::MessageRenderer::ThreadMode::CHANNEL) {
|
if (mode == graphics::MessageRenderer::ThreadMode::CHANNEL) {
|
||||||
messageStore.deleteAllMessagesInChannel(ch);
|
messageStore.deleteAllMessagesInChannel(ch);
|
||||||
|
|||||||
Reference in New Issue
Block a user