diff --git a/zulipterminal/core.py b/zulipterminal/core.py index 2799210ab9..5fefb4cc45 100644 --- a/zulipterminal/core.py +++ b/zulipterminal/core.py @@ -523,6 +523,21 @@ def stream_muting_confirmation_popup( mute_this_stream = partial(self.model.toggle_stream_muted_status, stream_id) self.loop.widget = PopUpConfirmationView(self, question, mute_this_stream) + def exit_compose_confirmation_popup(self) -> None: + question = urwid.Text( + ( + "bold", + "Please confirm that you wish to exit the compose box.\n" + "(You can save the message as a draft upon returning to compose)", + ), + "center", + ) + write_box = self.view.write_box + popup_view = PopUpConfirmationView( + self, question, write_box.exit_compose_box, location="center" + ) + self.loop.widget = popup_view + def copy_to_clipboard(self, text: str, text_category: str) -> None: try: pyperclip.copy(text) diff --git a/zulipterminal/ui_tools/boxes.py b/zulipterminal/ui_tools/boxes.py index 36128f444a..f1f4f3f555 100644 --- a/zulipterminal/ui_tools/boxes.py +++ b/zulipterminal/ui_tools/boxes.py @@ -710,6 +710,12 @@ def autocomplete_emojis( return emoji_typeahead, emojis + def exit_compose_box(self) -> None: + self._set_compose_attributes_to_defaults() + self.view.controller.exit_editor_mode() + self.main_view(False) + self.view.middle_column.set_focus("body") + def keypress(self, size: urwid_Size, key: str) -> Optional[str]: if self.is_in_typeahead_mode and not ( is_command_key("AUTOCOMPLETE", key) @@ -801,10 +807,11 @@ def keypress(self, size: urwid_Size, key: str) -> Optional[str]: ) elif is_command_key("GO_BACK", key): self.send_stop_typing_status() - self._set_compose_attributes_to_defaults() - self.view.controller.exit_editor_mode() - self.main_view(False) - self.view.middle_column.set_focus("body") + confirmation_msg_length = 10 + if len(self.msg_write_box.edit_text) > confirmation_msg_length: + self.view.controller.exit_compose_confirmation_popup() + else: + self.exit_compose_box() elif is_command_key("MARKDOWN_HELP", key): self.view.controller.show_markdown_help() return key