diff options
author | wurstsalat <mailtrash@posteo.de> | 2022-10-07 21:52:10 +0300 |
---|---|---|
committer | wurstsalat <mailtrash@posteo.de> | 2022-10-07 21:52:10 +0300 |
commit | 55b2ab5b5e78cf6c75a1cd5be04ffa7556fe4bd7 (patch) | |
tree | b1bfeefdd830d065d02ce13c37d13f1c14f7e22e | |
parent | 6fc44b33203ac562a3b368a3e4f44b19623075c1 (diff) |
refactor: GroupchatContact: Add muc_context property
-rw-r--r-- | gajim/common/helpers.py | 10 | ||||
-rw-r--r-- | gajim/common/modules/contacts.py | 10 | ||||
-rw-r--r-- | gajim/common/settings.py | 13 | ||||
-rw-r--r-- | gajim/gtk/conversation/rows/message.py | 9 | ||||
-rw-r--r-- | gajim/gtk/notification_manager.py | 11 |
5 files changed, 29 insertions, 24 deletions
diff --git a/gajim/common/helpers.py b/gajim/common/helpers.py index 83313187b..7596194f6 100644 --- a/gajim/common/helpers.py +++ b/gajim/common/helpers.py @@ -1427,16 +1427,6 @@ def get_group_chat_nick(account: str, room_jid: Union[JID, str]) -> str: return nick -def get_muc_context(jid: JID) -> Optional[str]: - disco_info = app.storage.cache.get_last_disco_info(jid) - if disco_info is None: - return None - - if (disco_info.muc_is_members_only and disco_info.muc_is_nonanonymous): - return 'private' - return 'public' - - def get_random_muc_localpart() -> str: rand = random.randrange(4) is_vowel = bool(random.getrandbits(1)) diff --git a/gajim/common/modules/contacts.py b/gajim/common/modules/contacts.py index ded751f41..8e3c98d66 100644 --- a/gajim/common/modules/contacts.py +++ b/gajim/common/modules/contacts.py @@ -672,6 +672,16 @@ class GroupchatContact(CommonContact): return disco_info.is_irc @property + def muc_context(self) -> Optional[str]: + disco_info = self.get_disco() + if disco_info is None: + return None + + if disco_info.muc_is_members_only and disco_info.muc_is_nonanonymous: + return 'private' + return 'public' + + @property def encryption_available(self) -> bool: disco_info = self.get_disco() if disco_info is None: diff --git a/gajim/common/settings.py b/gajim/common/settings.py index ce189d0b0..e2ff4f922 100644 --- a/gajim/common/settings.py +++ b/gajim/common/settings.py @@ -41,7 +41,6 @@ from gajim import IS_PORTABLE from gajim.common import app from gajim.common import configpaths from gajim.common import optparser -from gajim.common.helpers import get_muc_context from gajim.common.storage.base import Encoder from gajim.common.storage.base import json_decoder from gajim.common.setting_values import APP_SETTINGS @@ -842,7 +841,9 @@ class Settings: return self._account_settings[account]['group_chat'][jid][setting] except KeyError: - context = get_muc_context(jid) + client = app.get_client(account) + contact = client.get_module('Contacts').get_contact(jid) + context = contact.muc_context if context is None: # If there is no disco info available # to determine the context assume public @@ -905,7 +906,9 @@ class Settings: default = ACCOUNT_SETTINGS['group_chat'][setting] if default in (HAS_APP_DEFAULT, HAS_ACCOUNT_DEFAULT): - context = get_muc_context(jid) + client = app.get_client(account) + contact = client.get_module('Contacts').get_contact(jid) + context = contact.muc_context if context is None: # If there is no disco info available # to determine the context assume public @@ -951,7 +954,9 @@ class Settings: for account, acc_settings in self._account_settings.items(): for jid in acc_settings['group_chat']: if context is not None: - if get_muc_context(jid) != context: + client = app.get_client(account) + contact = client.get_module('Contacts').get_contact(jid) + if contact.muc_context != context: continue self.set_group_chat_setting(account, jid, setting, value) diff --git a/gajim/gtk/conversation/rows/message.py b/gajim/gtk/conversation/rows/message.py index 1da167118..9e7c8463d 100644 --- a/gajim/gtk/conversation/rows/message.py +++ b/gajim/gtk/conversation/rows/message.py @@ -40,7 +40,6 @@ from gajim.common.const import TRUST_SYMBOL_DATA from gajim.common.helpers import AdditionalDataDict from gajim.common.helpers import from_one_line from gajim.common.helpers import get_group_chat_nick -from gajim.common.helpers import get_muc_context from gajim.common.helpers import message_needs_highlight from gajim.common.helpers import to_user_string from gajim.common.i18n import _ @@ -118,12 +117,12 @@ class MessageRow(BaseRow): text, additional_data) if is_previewable: - context = None - if self._is_groupchat: - context = get_muc_context(self._contact.jid) + muc_context = None + if isinstance(self._contact, GroupchatContact): + muc_context = self._contact.muc_context self._message_widget = PreviewWidget(account) app.preview_manager.create_preview( - text, self._message_widget, from_us, context) + text, self._message_widget, from_us, muc_context) else: self._message_widget = MessageWidget(account) self._message_widget.add_with_styling(text, nickname=name) diff --git a/gajim/gtk/notification_manager.py b/gajim/gtk/notification_manager.py index a5f140a86..98c5adc7c 100644 --- a/gajim/gtk/notification_manager.py +++ b/gajim/gtk/notification_manager.py @@ -34,7 +34,6 @@ from gajim.common.events import UnsubscribedPresenceReceived from gajim.common.events import MucInvitation from gajim.common.events import MucDecline from gajim.common.helpers import get_groupchat_name -from gajim.common.helpers import get_muc_context from .menus import get_subscription_menu from .util import open_window @@ -240,8 +239,9 @@ class NotificationManager(Gtk.ListBox): self.update_unread_count() jid = event.from_.bare - muc_context = get_muc_context(event.muc) - if (muc_context == 'private' and + client = app.get_client(event.account) + contact = client.get_module('Contacts').get_contact(event.muc) + if (contact.muc_context == 'private' and not event.muc.bare_match(event.from_)): contact = self._client.get_module('Contacts').get_contact(jid) text = _('%(contact)s invited you to %(chat)s') % { @@ -411,8 +411,9 @@ class InvitationReceivedRow(NotificationRow): title_label.get_style_context().add_class('bold') self.grid.attach(title_label, 2, 1, 1, 1) - muc_context = get_muc_context(event.muc) - if (muc_context == 'private' and + client = app.get_client(event.account) + contact = client.get_module('Contacts').get_contact(event.muc) + if (contact.muc_context == 'private' and not event.muc.bare_match(event.from_)): contact = self._client.get_module('Contacts').get_contact(jid) invitation_text = _('%(contact)s invited you to %(chat)s') % { |