Welcome to mirror list, hosted at ThFree Co, Russian Federation.

dev.gajim.org/gajim/gajim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwurstsalat <mailtrash@posteo.de>2022-10-07 21:52:10 +0300
committerwurstsalat <mailtrash@posteo.de>2022-10-07 21:52:10 +0300
commit55b2ab5b5e78cf6c75a1cd5be04ffa7556fe4bd7 (patch)
treeb1bfeefdd830d065d02ce13c37d13f1c14f7e22e
parent6fc44b33203ac562a3b368a3e4f44b19623075c1 (diff)
refactor: GroupchatContact: Add muc_context property
-rw-r--r--gajim/common/helpers.py10
-rw-r--r--gajim/common/modules/contacts.py10
-rw-r--r--gajim/common/settings.py13
-rw-r--r--gajim/gtk/conversation/rows/message.py9
-rw-r--r--gajim/gtk/notification_manager.py11
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') % {