From 03de91c8d2c4dace3e031e323f3424c6dfb0ce16 Mon Sep 17 00:00:00 2001 From: Kuba Kleczkowski Date: Mon, 24 Apr 2023 10:41:54 +0200 Subject: [PATCH] [MOS-975] Fixed missing new message notification New message notificationis not cleared on locked phone when phone was locked from thread window. --- .../ApplicationMessages.cpp | 17 ++++++++++++++++- .../ApplicationMessages.hpp | 7 +++++++ .../windows/SMSThreadViewWindow.cpp | 4 ++++ pure_changelog.md | 1 + 4 files changed, 28 insertions(+), 1 deletion(-) diff --git a/module-apps/application-messages/ApplicationMessages.cpp b/module-apps/application-messages/ApplicationMessages.cpp index e0fba622a..247c42f72 100644 --- a/module-apps/application-messages/ApplicationMessages.cpp +++ b/module-apps/application-messages/ApplicationMessages.cpp @@ -25,7 +25,7 @@ #include #include #include - +#include namespace app { static constexpr auto messagesStackDepth = 1024 * 6; // 6Kb stack size @@ -38,6 +38,8 @@ namespace app AsyncCallbackReceiver{this} { bus.channels.push_back(sys::BusChannel::ServiceDBNotifications); + bus.channels.push_back(sys::BusChannel::PhoneLockChanges); + addActionReceiver(manager::actions::CreateSms, [this](auto &&data) { return handleCreateSmsAction(std::move(data)); }); addActionReceiver(manager::actions::ShowSmsTemplates, [this](auto &&data) { @@ -70,6 +72,16 @@ namespace app } return sys::MessageNone{}; }); + + connect(typeid(locks::UnlockedPhone), [&](sys::Message *msg) -> sys::MessagePointer { + phoneLockState = PhoneLockState::Unlocked; + return sys::MessageNone{}; + }); + + connect(typeid(locks::LockedPhone), [&](sys::Message *msg) -> sys::MessagePointer { + phoneLockState = PhoneLockState::Locked; + return sys::MessageNone{}; + }); } // Invoked upon receiving data message @@ -85,6 +97,9 @@ namespace app if (msg != nullptr) { userInterfaceDBNotification(msgl, [&]([[maybe_unused]] sys::Message *, [[maybe_unused]] const std::string &) { + if (phoneLockState == PhoneLockState::Locked) { + return false; + } return msg->interface == db::Interface::Name::SMSThread || msg->interface == db::Interface::Name::SMS || msg->interface == db::Interface::Name::SMSTemplate; diff --git a/module-apps/application-messages/include/application-messages/ApplicationMessages.hpp b/module-apps/application-messages/include/application-messages/ApplicationMessages.hpp index be2b22b0b..3565bf079 100644 --- a/module-apps/application-messages/include/application-messages/ApplicationMessages.hpp +++ b/module-apps/application-messages/include/application-messages/ApplicationMessages.hpp @@ -69,6 +69,13 @@ namespace app private: ActionResult handleCreateSmsAction(std::unique_ptr data); + + enum class PhoneLockState + { + Locked, + Unlocked + }; + PhoneLockState phoneLockState = PhoneLockState::Unlocked; }; template <> diff --git a/module-apps/application-messages/windows/SMSThreadViewWindow.cpp b/module-apps/application-messages/windows/SMSThreadViewWindow.cpp index f5f61dc6c..3ebd334ed 100644 --- a/module-apps/application-messages/windows/SMSThreadViewWindow.cpp +++ b/module-apps/application-messages/windows/SMSThreadViewWindow.cpp @@ -61,6 +61,10 @@ namespace gui void SMSThreadViewWindow::onBeforeShow(ShowMode mode, SwitchData *data) { + if (mode == ShowMode::GUI_SHOW_RETURN) { + smsList->rebuildList(); + } + if (auto pdata = dynamic_cast(data); pdata) { LOG_INFO("Thread data received: %" PRIu32, pdata->thread->ID); saveInfoAboutPreviousAppForProperSwitchBack(data); diff --git a/pure_changelog.md b/pure_changelog.md index d8e0357ef..27109f1f5 100644 --- a/pure_changelog.md +++ b/pure_changelog.md @@ -41,6 +41,7 @@ * Fixed USB charging port detection. * Fixed Template window clearing after all templates are removed. * Fixed wrong notification about multiple unread messages in case there's only one unread left +* Fixed missing notification about new SMS when phone was locked on application Messages ## [1.7.0 2023-03-23] ### Changed / Improved