~aleteoryx/muditaos

03de91c8d2c4dace3e031e323f3424c6dfb0ce16 — Kuba Kleczkowski 2 years ago c8ad07c
[MOS-975] Fixed missing new message notification

New message notificationis not cleared on locked phone
when phone was locked from thread window.
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