Philipp Hörist pushed to branch master at gajim / gajim
Commits: 55b2ab5b by wurstsalat at 2022-10-07T20:52:10+02:00 refactor: GroupchatContact: Add muc_context property
- - - - -
5 changed files:
- gajim/common/helpers.py - gajim/common/modules/contacts.py - gajim/common/settings.py - gajim/gtk/conversation/rows/message.py - gajim/gtk/notification_manager.py
Changes:
===================================== 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))
===================================== gajim/common/modules/contacts.py ===================================== @@ -671,6 +671,16 @@ def is_irc(self) -> bool: return False 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()
===================================== gajim/common/settings.py ===================================== @@ -41,7 +41,6 @@ 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 @@ def get_group_chat_setting(self, 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 @@ def set_group_chat_setting(self, 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 @@ def set_group_chat_settings(self, 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)
===================================== gajim/gtk/conversation/rows/message.py ===================================== @@ -40,7 +40,6 @@ 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 @@ def __init__(self, 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)
===================================== gajim/gtk/notification_manager.py ===================================== @@ -34,7 +34,6 @@ 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 @@ def add_invitation_received(self, event: MucInvitation) -> None: 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 @@ def __init__(self, account: str, event: MucInvitation) -> None: 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') % {
View it on GitLab: https://dev.gajim.org/gajim/gajim/-/commit/55b2ab5b5e78cf6c75a1cd5be04ffa755...