diff --git a/briar-gtk/briar_gtk/containers/private_chat.py b/briar-gtk/briar_gtk/containers/private_chat.py index 9208995d8ad63bbd4a071cbc956299e350d49a1a..b91afa853381c5226c3c76c87296b3a3551e79db 100644 --- a/briar-gtk/briar_gtk/containers/private_chat.py +++ b/briar-gtk/briar_gtk/containers/private_chat.py @@ -26,6 +26,7 @@ class PrivateChatContainer(Container): self._signals = list() self._contact_name = contact_name self._contact_id = contact_id + self._previous_message = dict() self._setup_view() self._load_content() @@ -100,7 +101,12 @@ class PrivateChatContainer(Container): def _add_message(self, message): if self._is_not_message(message): return - message_widget = PrivateMessageWidget(self._contact_name, message) + message_widget = PrivateMessageWidget( + self._contact_name, + message, + self._previous_message + ) + self._previous_message = message self._messages_box.add(message_widget) @staticmethod diff --git a/briar-gtk/briar_gtk/widgets/private_message.py b/briar-gtk/briar_gtk/widgets/private_message.py index 9563fc0203b06050e7a6cf0c7b8e033a9ca87aa1..73d40a60820a8aa562331b23d68e00d523d9f37a 100644 --- a/briar-gtk/briar_gtk/widgets/private_message.py +++ b/briar-gtk/briar_gtk/widgets/private_message.py @@ -13,13 +13,12 @@ from gi.repository import Gtk class PrivateMessageWidget(Gtk.ListBoxRow): - def __init__(self, contact_name, message): + def __init__(self, contact_name, message, previous_message): super().__init__() - self._setup_view(contact_name, message) + self._setup_view(contact_name, message, previous_message) - def _setup_view(self, contact_name, message): + def _setup_view(self, contact_name, message, previous_message): self.set_selectable(False) - self.set_margin_top(12) username = contact_name username_style_class = "username" @@ -37,12 +36,15 @@ class PrivateMessageWidget(Gtk.ListBoxRow): message["text"]) body = PrivateMessageWidget._create_body(body_content) - content = PrivateMessageWidget._create_content(info, body) - message_box = PrivateMessageWidget._create_message_box(content) - event_box = Gtk.EventBox() - event_box.add(message_box) + if self._should_include_info(message, previous_message): + self.set_margin_top(12) + content = PrivateMessageWidget._create_content(info, body) + message_box = PrivateMessageWidget._create_message_box(content) + else: + message_box = PrivateMessageWidget._create_message_box(body) + event_box.add(message_box) self.add(event_box) self.show_all() @@ -109,3 +111,16 @@ class PrivateMessageWidget(Gtk.ListBoxRow): message_box = Gtk.Box.new(Gtk.Orientation.HORIZONTAL, 10) message_box.pack_start(content, True, True, 0) return message_box + + @staticmethod + def _should_include_info(message, previous_message): + if "local" not in previous_message: + return True + if message["local"] != previous_message["local"]: + return True + + time = datetime.fromtimestamp(message.get("timestamp", 0) / 1000) + previous_time = datetime.fromtimestamp( + previous_message.get("timestamp", 0) / 1000) + time_difference = time - previous_time + return time_difference.total_seconds() > 60