Philipp Hörist pushed to branch master at gajim / gajim
Commits: 5302d834 by Philipp Hörist at 2019-08-21T16:06:20Z StartChat: Show correct group chat name
- - - - - c91d29c9 by Philipp Hörist at 2019-08-21T16:07:16Z Bookmarks: Replace some methods with modify()
- - - - - dca797ba by Philipp Hörist at 2019-08-21T19:14:56Z GroupchatInfo: Show correct group chat name
- - - - -
6 changed files:
- gajim/common/contacts.py - gajim/common/helpers.py - gajim/common/modules/bookmarks.py - gajim/common/modules/muc.py - gajim/gtk/groupchat_info.py - gajim/gtk/start_chat.py
Changes:
===================================== gajim/common/contacts.py ===================================== @@ -183,16 +183,9 @@ class Contact(CommonContact):
def _get_groupchat_name(self): from gajim.common import app + from gajim.common.helpers import get_groupchat_name con = app.connections[self.account.name] - name = con.get_module('Bookmarks').get_name_from_bookmark(self.jid) - if name: - return name - - disco_info = app.logger.get_last_disco_info(self.jid) - if disco_info is not None: - if disco_info.muc_room_name: - return disco_info.muc_room_name - return self.jid.split('@')[0] + return get_groupchat_name(con, self.jid)
def get_shown_groups(self): if self.is_observer():
===================================== gajim/common/helpers.py ===================================== @@ -1628,3 +1628,16 @@ def to_user_string(error): if error.app_condition is not None: return '%s (%s)' % (condition, error.app_condition) return condition + + +def get_groupchat_name(con, jid): + name = con.get_module('Bookmarks').get_name_from_bookmark(jid) + if name: + return name + + disco_info = app.logger.get_last_disco_info(jid) + if disco_info is not None: + if disco_info.muc_name: + return disco_info.muc_name + + return jid.split('@')[0]
===================================== gajim/common/modules/bookmarks.py ===================================== @@ -16,10 +16,10 @@
from typing import Any from typing import List +from typing import Dict from typing import Optional
import nbxmpp -from nbxmpp.protocol import JID from nbxmpp.util import is_error_result from nbxmpp.structs import BookmarkData from nbxmpp.const import BookmarkStoreType @@ -196,52 +196,16 @@ class Bookmarks(BaseModule): str(bookmark.jid), minimized=minimize)
- def add_bookmark(self, - name: str, - jid: JID, - autojoin: bool, - password: str, - nick: str) -> None: - - bookmark = self.get_bookmark_from_jid(jid) - if bookmark is not None: - self._bookmarks.remove(bookmark) - - bookmark = BookmarkData(jid=jid, - name=name, - autojoin=autojoin, - password=password, - nick=nick) - self._bookmarks.append(bookmark) - self.store_bookmarks() - - def set_autojoin(self, jid, enabled): + def modify(self, jid: str, **kwargs: Dict[str, str]) -> None: bookmark = self.get_bookmark_from_jid(jid) if bookmark is None: - return - self._log.info('Set autojoin for: %s to %s', jid, enabled) - self._bookmarks.remove(bookmark) - bookmark = bookmark._replace(autojoin=enabled) - self._bookmarks.append(bookmark) - self.store_bookmarks() - - def set_nickname(self, jid, nick): - bookmark = self.get_bookmark_from_jid(jid) - if bookmark is None: - return - self._log.info('Set nick for: %s to %s', jid, nick) - self._bookmarks.remove(bookmark) - bookmark = bookmark._replace(nick=nick) - self._bookmarks.append(bookmark) - self.store_bookmarks() + bookmark = BookmarkData(jid=jid, **kwargs) + self._log.info('Add new bookmark: %s', bookmark) + else: + self._log.info('Modify bookmark: %s %s', jid, kwargs) + self._bookmarks.remove(bookmark) + bookmark = bookmark._replace(**kwargs)
- def set_name(self, jid, name): - bookmark = self.get_bookmark_from_jid(jid) - if bookmark is None: - return - self._log.info('Set name for: %s to %s', jid, name) - self._bookmarks.remove(bookmark) - bookmark = bookmark._replace(name=name) self._bookmarks.append(bookmark) self.store_bookmarks()
===================================== gajim/common/modules/muc.py ===================================== @@ -189,7 +189,7 @@ class MUC(BaseModule): typ='unavailable', status=reason) # We leave a group chat, disable bookmark autojoin - self._con.get_module('Bookmarks').set_autojoin(room_jid, False) + self._con.get_module('Bookmarks').modify(room_jid, autojoin=False)
def configure_room(self, room_jid): self._nbxmpp('MUC').request_config(room_jid, @@ -389,8 +389,8 @@ class MUC(BaseModule): if properties.is_nickname_changed: if properties.is_muc_self_presence: muc_data.nick = properties.muc_user.nick - self._con.get_module('Bookmarks').set_nickname(muc_data.jid, - muc_data.nick) + self._con.get_module('Bookmarks').modify(muc_data.jid, + nick=muc_data.nick) app.contacts.remove_gc_contact(self._account, contact) contact.name = properties.muc_user.nick app.contacts.add_gc_contact(self._account, contact) @@ -600,12 +600,11 @@ class MUC(BaseModule): account=self._account, room_jid=room_jid))
- # We successfully joined a MUC, set autojoin bookmark - self._con.get_module('Bookmarks').add_bookmark(None, - muc_data.jid, - True, - muc_data.password, - muc_data.nick) + # We successfully joined a MUC, set add bookmark with autojoin + self._con.get_module('Bookmarks').modify(muc_data.jid, + autojoin=True, + password=muc_data.password, + nick=muc_data.nick)
def _on_voice_request(self, _con, _stanza, properties): if not properties.is_voice_request:
===================================== gajim/gtk/groupchat_info.py ===================================== @@ -21,9 +21,11 @@ from gi.repository import Gtk from nbxmpp.protocol import NS_MAM_1 from nbxmpp.protocol import NS_MAM_2
+from gajim.common import app from gajim.common.i18n import _ from gajim.common.i18n import Q_ from gajim.common.helpers import open_uri +from gajim.common.helpers import get_groupchat_name from gajim.common.const import RFC5646_LANGUAGE_TAGS
from gajim.gtk.util import get_builder @@ -141,9 +143,13 @@ class GroupChatInfoScrolled(Gtk.ScrolledWindow): def set_from_disco_info(self, info): self._info = info # Set name - has_name = bool(info.muc_name) - self._ui.name.set_text(info.muc_name or '') - self._ui.name.set_visible(has_name) + if self._account is None: + name = info.muc_name + else: + con = app.connections[self._account] + name = get_groupchat_name(con, info.jid) + self._ui.name.set_text(name) + self._ui.name.set_visible(True)
# Set description has_desc = bool(info.muc_description)
===================================== gajim/gtk/start_chat.py ===================================== @@ -27,6 +27,7 @@ from gajim.common import app from gajim.common import helpers from gajim.common.helpers import validate_jid from gajim.common.helpers import to_user_string +from gajim.common.helpers import get_groupchat_name from gajim.common.i18n import _ from gajim.common.const import AvatarSize from gajim.common.const import MUC_DISCO_ERRORS @@ -125,21 +126,10 @@ class StartChatDialog(Gtk.ApplicationWindow): self.new_groupchat_rows[account] = None con = app.connections[account] bookmarks = con.get_module('Bookmarks').bookmarks - groupchats = {} for bookmark in bookmarks: - groupchats[str(bookmark.jid)] = bookmark.name - - for jid in app.contacts.get_gc_list(account): - if jid in groupchats: - continue - groupchats[jid] = None - - for jid in groupchats: - name = groupchats[jid] - if not name: - name = app.get_nick_from_jid(jid) - row = ContactRow(account, None, jid, name, - show_account, True) + jid = str(bookmark.jid) + name = get_groupchat_name(con, jid) + row = ContactRow(account, None, jid, name, show_account, True) self._ui.listbox.add(row)
def _on_page_changed(self, stack, _param):
View it on GitLab: https://dev.gajim.org/gajim/gajim/compare/aa3cc79e300040827e3816611d1a95ce75...