From 6b9f691c4eb811ef2fbdb62329831f44206a4618 Mon Sep 17 00:00:00 2001 From: Nico Alt <nicoalt@posteo.org> Date: Wed, 30 Dec 2020 12:00:00 +0000 Subject: [PATCH] Make send button in chat input work --- briar-gtk/briar_gtk/actions/window.py | 10 ++++++++++ briar-gtk/briar_gtk/presenters/main_window.py | 4 ++++ briar-gtk/briar_gtk/presenters/private_chat.py | 9 +++++++++ 3 files changed, 23 insertions(+) diff --git a/briar-gtk/briar_gtk/actions/window.py b/briar-gtk/briar_gtk/actions/window.py index e853349..5edf1cd 100644 --- a/briar-gtk/briar_gtk/actions/window.py +++ b/briar-gtk/briar_gtk/actions/window.py @@ -31,6 +31,7 @@ class WindowActions(Actions): self._setup_open_emoji_menu_action() self._setup_open_main_window_action() self._setup_open_private_chat_action() + self._setup_send_message_action() def _setup_back_to_sidebar_action(self): self._setup_action("back-to-sidebar", None, self._back_to_sidebar) @@ -66,6 +67,9 @@ class WindowActions(Actions): self._setup_action("open-private-chat", GLib.VariantType.new("i"), self._open_private_chat) + def _setup_send_message_action(self): + self._setup_action("send-message", None, self._send_message) + # pylint: disable=unused-argument def _back_to_sidebar(self, action, parameter): if not isinstance(self.widget.current_view, MainWindowView): @@ -118,3 +122,9 @@ class WindowActions(Actions): "Should open private chat only from MainWindowView") self.widget.current_view.presenter.open_private_chat( contact_id.get_int32()) + + # pylint: disable=unused-argument + def _send_message(self, action, parameter): + if not isinstance(self.widget.current_view, MainWindowView): + raise Exception("Should send message only from MainWindowView") + self.widget.current_view.presenter.send_message() diff --git a/briar-gtk/briar_gtk/presenters/main_window.py b/briar-gtk/briar_gtk/presenters/main_window.py index 59a0e3f..511b1e7 100644 --- a/briar-gtk/briar_gtk/presenters/main_window.py +++ b/briar-gtk/briar_gtk/presenters/main_window.py @@ -53,6 +53,10 @@ class MainWindowPresenter: self._view.builder, contact_id, self._sidebar_presenter) self._private_chat_presenter = private_chat_view.presenter + def send_message(self): + if isinstance(self._private_chat_presenter, PrivateChatPresenter): + self._private_chat_presenter.send_message() + def _setup_destroy_listener(self): self._view.connect("destroy", self._on_destroy) diff --git a/briar-gtk/briar_gtk/presenters/private_chat.py b/briar-gtk/briar_gtk/presenters/private_chat.py index 2f6e41a..8723d91 100644 --- a/briar-gtk/briar_gtk/presenters/private_chat.py +++ b/briar-gtk/briar_gtk/presenters/private_chat.py @@ -103,6 +103,15 @@ class PrivateChatPresenter: self._hide_chat_menu_button() self._disconnect_chat_entry_signals() + def send_message(self): + chat_entry = self._view.builder.get_object("chat_entry") + # Text does not only contain whitespace + if len(self._get_text_from_text_view(chat_entry).strip()) == 0: + return False + self._send_message(chat_entry) + self._sidebar_presenter.refresh_contacts() + return True + def disconnect_signals(self): for signal in self._signals: APP().api.socket_listener.disconnect(signal) -- GitLab