~aleteoryx/muditaos

788852fc8b6582888cb0a02a9e2c10996016e755 — rrandomsky 2 years ago d846711
[MOS-1030] Fix for losing drafted message and recipient number in new message windows

Fixed a scenario where a user left a draft message with the recipient's phone number
in the new message window, and when they wanted to go back to that message,
the phone number and message could disappear.
M module-apps/application-messages/windows/NewMessage.cpp => module-apps/application-messages/windows/NewMessage.cpp +12 -4
@@ 50,7 50,9 @@ namespace gui
        std::unique_ptr<gui::TextBackup> state;
    };

    std::unique_ptr<NewMessageWindow::MessageMemento> NewMessageWindow::memento =
    std::unique_ptr<NewMessageWindow::MessageMemento> NewMessageWindow::mementoMessage =
        std::make_unique<NewMessageWindow::MessageMemento>();
    std::unique_ptr<NewMessageWindow::MessageMemento> NewMessageWindow::mementoRecipient =
        std::make_unique<NewMessageWindow::MessageMemento>();

    NewMessageWindow::NewMessageWindow(app::ApplicationCommon *app)


@@ 72,7 74,8 @@ namespace gui

    void NewMessageWindow::onBeforeShow(ShowMode mode, SwitchData *data)
    {
        memento->restoreState(message);
        mementoMessage->restoreState(message);
        mementoRecipient->restoreState(recipient);
        if (data == nullptr) {
            return;
        }


@@ 236,6 239,9 @@ namespace gui
                    return true;
                }
            }
            if (inputEvent.isShortRelease(KeyCode::KEY_RF)) {
                onClose(CloseReason::WindowSwitch);
            }
            return false;
        };
        recipient->setTextChangedCallback([this]([[maybe_unused]] Item &item, const UTF8 &text) {


@@ 295,7 301,8 @@ namespace gui
            if (event.isShortRelease(KeyCode::KEY_LF)) {
                auto app = dynamic_cast<app::ApplicationMessages *>(application);
                assert(app != nullptr);
                memento->setState(message);
                mementoMessage->setState(message);
                mementoRecipient->setState(recipient);
                return app->newMessageOptions(getName(), message);
            }
            if (event.isShortRelease(KeyCode::KEY_RF)) {


@@ 321,7 328,8 @@ namespace gui
        }

        if (reason != CloseReason::ApplicationClose) {
            memento->setState(message);
            mementoMessage->setState(message);
            mementoRecipient->setState(recipient);
            message->clear();
            return;
        }

M module-apps/application-messages/windows/NewMessage.hpp => module-apps/application-messages/windows/NewMessage.hpp +2 -1
@@ 50,6 50,7 @@ namespace gui
        /// MessageMemento shall be used whenever there is a need for temporary window switch in normal (uninterrupted)
        /// flow of new message preparation, such as using options or recipient selection.
        class MessageMemento;
        static std::unique_ptr<MessageMemento> memento;
        static std::unique_ptr<MessageMemento> mementoMessage;
        static std::unique_ptr<MessageMemento> mementoRecipient;
    };
} /* namespace gui */

M pure_changelog.md => pure_changelog.md +1 -0
@@ 41,6 41,7 @@
* Fixed disabled screen autolock in meditation app
* Fixed multiple issues with input fields in "New alarm" window
* Fixed the ability to create a contact with the same primary and secondary phone number, which resulted in mismatching
* Fixed losing drafted message and recipient number in new message windows

## [1.7.2 2023-07-28]