M module-apps/application-messages/ApplicationMessages.cpp => module-apps/application-messages/ApplicationMessages.cpp +16 -1
@@ 25,7 25,7 @@
#include <service-cellular/CellularMessage.hpp>
#include <service-db/DBNotificationMessage.hpp>
#include <service-appmgr/Controller.hpp>
-
+#include <apps-common/locks/data/PhoneLockMessages.hpp>
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;
M module-apps/application-messages/include/application-messages/ApplicationMessages.hpp => module-apps/application-messages/include/application-messages/ApplicationMessages.hpp +7 -0
@@ 69,6 69,13 @@ namespace app
private:
ActionResult handleCreateSmsAction(std::unique_ptr<gui::SwitchData> data);
+
+ enum class PhoneLockState
+ {
+ Locked,
+ Unlocked
+ };
+ PhoneLockState phoneLockState = PhoneLockState::Unlocked;
};
template <>
M module-apps/application-messages/windows/SMSThreadViewWindow.cpp => module-apps/application-messages/windows/SMSThreadViewWindow.cpp +4 -0
@@ 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<SMSThreadData *>(data); pdata) {
LOG_INFO("Thread data received: %" PRIu32, pdata->thread->ID);
saveInfoAboutPreviousAppForProperSwitchBack(data);
M pure_changelog.md => pure_changelog.md +1 -0
@@ 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