Philipp Hörist pushed to branch master at gajim / gajim

Commits:

6 changed files:

Changes:

  • gajim/common/contacts.py
    ... ... @@ -183,16 +183,9 @@ class Contact(CommonContact):
    183 183
     
    
    184 184
         def _get_groupchat_name(self):
    
    185 185
             from gajim.common import app
    
    186
    +        from gajim.common.helpers import get_groupchat_name
    
    186 187
             con = app.connections[self.account.name]
    
    187
    -        name = con.get_module('Bookmarks').get_name_from_bookmark(self.jid)
    
    188
    -        if name:
    
    189
    -            return name
    
    190
    -
    
    191
    -        disco_info = app.logger.get_last_disco_info(self.jid)
    
    192
    -        if disco_info is not None:
    
    193
    -            if disco_info.muc_room_name:
    
    194
    -                return disco_info.muc_room_name
    
    195
    -        return self.jid.split('@')[0]
    
    188
    +        return get_groupchat_name(con, self.jid)
    
    196 189
     
    
    197 190
         def get_shown_groups(self):
    
    198 191
             if self.is_observer():
    

  • gajim/common/helpers.py
    ... ... @@ -1628,3 +1628,16 @@ def to_user_string(error):
    1628 1628
         if error.app_condition is not None:
    
    1629 1629
             return '%s (%s)' % (condition, error.app_condition)
    
    1630 1630
         return condition
    
    1631
    +
    
    1632
    +
    
    1633
    +def get_groupchat_name(con, jid):
    
    1634
    +    name = con.get_module('Bookmarks').get_name_from_bookmark(jid)
    
    1635
    +    if name:
    
    1636
    +        return name
    
    1637
    +
    
    1638
    +    disco_info = app.logger.get_last_disco_info(jid)
    
    1639
    +    if disco_info is not None:
    
    1640
    +        if disco_info.muc_name:
    
    1641
    +            return disco_info.muc_name
    
    1642
    +
    
    1643
    +    return jid.split('@')[0]

  • gajim/common/modules/bookmarks.py
    ... ... @@ -16,10 +16,10 @@
    16 16
     
    
    17 17
     from typing import Any
    
    18 18
     from typing import List
    
    19
    +from typing import Dict
    
    19 20
     from typing import Optional
    
    20 21
     
    
    21 22
     import nbxmpp
    
    22
    -from nbxmpp.protocol import JID
    
    23 23
     from nbxmpp.util import is_error_result
    
    24 24
     from nbxmpp.structs import BookmarkData
    
    25 25
     from nbxmpp.const import BookmarkStoreType
    
    ... ... @@ -196,52 +196,16 @@ class Bookmarks(BaseModule):
    196 196
                                                      str(bookmark.jid),
    
    197 197
                                                      minimized=minimize)
    
    198 198
     
    
    199
    -    def add_bookmark(self,
    
    200
    -                     name: str,
    
    201
    -                     jid: JID,
    
    202
    -                     autojoin: bool,
    
    203
    -                     password: str,
    
    204
    -                     nick: str) -> None:
    
    205
    -
    
    206
    -        bookmark = self.get_bookmark_from_jid(jid)
    
    207
    -        if bookmark is not None:
    
    208
    -            self._bookmarks.remove(bookmark)
    
    209
    -
    
    210
    -        bookmark = BookmarkData(jid=jid,
    
    211
    -                                name=name,
    
    212
    -                                autojoin=autojoin,
    
    213
    -                                password=password,
    
    214
    -                                nick=nick)
    
    215
    -        self._bookmarks.append(bookmark)
    
    216
    -        self.store_bookmarks()
    
    217
    -
    
    218
    -    def set_autojoin(self, jid, enabled):
    
    199
    +    def modify(self, jid: str, **kwargs: Dict[str, str]) -> None:
    
    219 200
             bookmark = self.get_bookmark_from_jid(jid)
    
    220 201
             if bookmark is None:
    
    221
    -            return
    
    222
    -        self._log.info('Set autojoin for: %s to %s', jid, enabled)
    
    223
    -        self._bookmarks.remove(bookmark)
    
    224
    -        bookmark = bookmark._replace(autojoin=enabled)
    
    225
    -        self._bookmarks.append(bookmark)
    
    226
    -        self.store_bookmarks()
    
    227
    -
    
    228
    -    def set_nickname(self, jid, nick):
    
    229
    -        bookmark = self.get_bookmark_from_jid(jid)
    
    230
    -        if bookmark is None:
    
    231
    -            return
    
    232
    -        self._log.info('Set nick for: %s to %s', jid, nick)
    
    233
    -        self._bookmarks.remove(bookmark)
    
    234
    -        bookmark = bookmark._replace(nick=nick)
    
    235
    -        self._bookmarks.append(bookmark)
    
    236
    -        self.store_bookmarks()
    
    202
    +            bookmark = BookmarkData(jid=jid, **kwargs)
    
    203
    +            self._log.info('Add new bookmark: %s', bookmark)
    
    204
    +        else:
    
    205
    +            self._log.info('Modify bookmark: %s %s', jid, kwargs)
    
    206
    +            self._bookmarks.remove(bookmark)
    
    207
    +            bookmark = bookmark._replace(**kwargs)
    
    237 208
     
    
    238
    -    def set_name(self, jid, name):
    
    239
    -        bookmark = self.get_bookmark_from_jid(jid)
    
    240
    -        if bookmark is None:
    
    241
    -            return
    
    242
    -        self._log.info('Set name for: %s to %s', jid, name)
    
    243
    -        self._bookmarks.remove(bookmark)
    
    244
    -        bookmark = bookmark._replace(name=name)
    
    245 209
             self._bookmarks.append(bookmark)
    
    246 210
             self.store_bookmarks()
    
    247 211
     
    

  • gajim/common/modules/muc.py
    ... ... @@ -189,7 +189,7 @@ class MUC(BaseModule):
    189 189
                 typ='unavailable',
    
    190 190
                 status=reason)
    
    191 191
             # We leave a group chat, disable bookmark autojoin
    
    192
    -        self._con.get_module('Bookmarks').set_autojoin(room_jid, False)
    
    192
    +        self._con.get_module('Bookmarks').modify(room_jid, autojoin=False)
    
    193 193
     
    
    194 194
         def configure_room(self, room_jid):
    
    195 195
             self._nbxmpp('MUC').request_config(room_jid,
    
    ... ... @@ -389,8 +389,8 @@ class MUC(BaseModule):
    389 389
             if properties.is_nickname_changed:
    
    390 390
                 if properties.is_muc_self_presence:
    
    391 391
                     muc_data.nick = properties.muc_user.nick
    
    392
    -                self._con.get_module('Bookmarks').set_nickname(muc_data.jid,
    
    393
    -                                                               muc_data.nick)
    
    392
    +                self._con.get_module('Bookmarks').modify(muc_data.jid,
    
    393
    +                                                         nick=muc_data.nick)
    
    394 394
                 app.contacts.remove_gc_contact(self._account, contact)
    
    395 395
                 contact.name = properties.muc_user.nick
    
    396 396
                 app.contacts.add_gc_contact(self._account, contact)
    
    ... ... @@ -600,12 +600,11 @@ class MUC(BaseModule):
    600 600
                                  account=self._account,
    
    601 601
                                  room_jid=room_jid))
    
    602 602
     
    
    603
    -            # We successfully joined a MUC, set autojoin bookmark
    
    604
    -            self._con.get_module('Bookmarks').add_bookmark(None,
    
    605
    -                                                           muc_data.jid,
    
    606
    -                                                           True,
    
    607
    -                                                           muc_data.password,
    
    608
    -                                                           muc_data.nick)
    
    603
    +            # We successfully joined a MUC, set add bookmark with autojoin
    
    604
    +            self._con.get_module('Bookmarks').modify(muc_data.jid,
    
    605
    +                                                     autojoin=True,
    
    606
    +                                                     password=muc_data.password,
    
    607
    +                                                     nick=muc_data.nick)
    
    609 608
     
    
    610 609
         def _on_voice_request(self, _con, _stanza, properties):
    
    611 610
             if not properties.is_voice_request:
    

  • gajim/gtk/groupchat_info.py
    ... ... @@ -21,9 +21,11 @@ from gi.repository import Gtk
    21 21
     from nbxmpp.protocol import NS_MAM_1
    
    22 22
     from nbxmpp.protocol import NS_MAM_2
    
    23 23
     
    
    24
    +from gajim.common import app
    
    24 25
     from gajim.common.i18n import _
    
    25 26
     from gajim.common.i18n import Q_
    
    26 27
     from gajim.common.helpers import open_uri
    
    28
    +from gajim.common.helpers import get_groupchat_name
    
    27 29
     from gajim.common.const import RFC5646_LANGUAGE_TAGS
    
    28 30
     
    
    29 31
     from gajim.gtk.util import get_builder
    
    ... ... @@ -141,9 +143,13 @@ class GroupChatInfoScrolled(Gtk.ScrolledWindow):
    141 143
         def set_from_disco_info(self, info):
    
    142 144
             self._info = info
    
    143 145
             # Set name
    
    144
    -        has_name = bool(info.muc_name)
    
    145
    -        self._ui.name.set_text(info.muc_name or '')
    
    146
    -        self._ui.name.set_visible(has_name)
    
    146
    +        if self._account is None:
    
    147
    +            name = info.muc_name
    
    148
    +        else:
    
    149
    +            con = app.connections[self._account]
    
    150
    +            name = get_groupchat_name(con, info.jid)
    
    151
    +        self._ui.name.set_text(name)
    
    152
    +        self._ui.name.set_visible(True)
    
    147 153
     
    
    148 154
             # Set description
    
    149 155
             has_desc = bool(info.muc_description)
    

  • gajim/gtk/start_chat.py
    ... ... @@ -27,6 +27,7 @@ from gajim.common import app
    27 27
     from gajim.common import helpers
    
    28 28
     from gajim.common.helpers import validate_jid
    
    29 29
     from gajim.common.helpers import to_user_string
    
    30
    +from gajim.common.helpers import get_groupchat_name
    
    30 31
     from gajim.common.i18n import _
    
    31 32
     from gajim.common.const import AvatarSize
    
    32 33
     from gajim.common.const import MUC_DISCO_ERRORS
    
    ... ... @@ -125,21 +126,10 @@ class StartChatDialog(Gtk.ApplicationWindow):
    125 126
                 self.new_groupchat_rows[account] = None
    
    126 127
                 con = app.connections[account]
    
    127 128
                 bookmarks = con.get_module('Bookmarks').bookmarks
    
    128
    -            groupchats = {}
    
    129 129
                 for bookmark in bookmarks:
    
    130
    -                groupchats[str(bookmark.jid)] = bookmark.name
    
    131
    -
    
    132
    -            for jid in app.contacts.get_gc_list(account):
    
    133
    -                if jid in groupchats:
    
    134
    -                    continue
    
    135
    -                groupchats[jid] = None
    
    136
    -
    
    137
    -            for jid in groupchats:
    
    138
    -                name = groupchats[jid]
    
    139
    -                if not name:
    
    140
    -                    name = app.get_nick_from_jid(jid)
    
    141
    -                row = ContactRow(account, None, jid, name,
    
    142
    -                                 show_account, True)
    
    130
    +                jid = str(bookmark.jid)
    
    131
    +                name = get_groupchat_name(con, jid)
    
    132
    +                row = ContactRow(account, None, jid, name, show_account, True)
    
    143 133
                     self._ui.listbox.add(row)
    
    144 134
     
    
    145 135
         def _on_page_changed(self, stack, _param):