Philipp Hörist pushed to branch master at gajim / gajim
Commits: 893e9810 by Philipp Hörist at 2019-08-17T22:17:12Z Bookmarks: Store name/nickname/password on change
- - - - - 12411298 by Philipp Hörist at 2019-08-18T13:43:27Z Fix test
There are no legacy accounts anymore
- - - - - 10ce4f5a by Philipp Hörist at 2019-08-18T20:34:03Z MUC: Correctly handle forced nickname changes
- - - - - 3457e3f5 by Philipp Hörist at 2019-08-18T20:34:35Z Groupchat: Fix detecting if subject change is allowed
- - - - -
4 changed files:
- gajim/common/modules/bookmarks.py - gajim/common/modules/muc.py - gajim/groupchat_control.py - test/no_gui/unit/test_contacts.py
Changes:
===================================== gajim/common/modules/bookmarks.py ===================================== @@ -192,17 +192,16 @@ class Bookmarks(BaseModule): nick: str) -> None:
bookmark = self.get_bookmark_from_jid(jid) - if bookmark is None: - bookmark = BookmarkData(jid=jid, - name=name, - autojoin=autojoin, - password=password, - nick=nick) - self._bookmarks.append(bookmark) - self.store_bookmarks() - - elif not bookmark.autojoin: - self.set_autojoin(jid, True) + 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): bookmark = self.get_bookmark_from_jid(jid) @@ -214,6 +213,26 @@ class Bookmarks(BaseModule): 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() + + 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() + def remove(self, jid: str, publish: bool = True) -> None: bookmark = self.get_bookmark_from_jid(jid) if bookmark is None:
===================================== gajim/common/modules/muc.py ===================================== @@ -389,10 +389,14 @@ 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) app.contacts.remove_gc_contact(self._account, contact) contact.name = properties.muc_user.nick app.contacts.add_gc_contact(self._account, contact) - self._log.info('Nickname changed: %s to %s', + initiator = 'Server' if properties.is_nickname_modified else 'User' + self._log.info('%s nickname changed: %s to %s', + initiator, properties.jid, properties.muc_user.nick) self._raise_muc_event('muc-nickname-changed', properties) @@ -402,9 +406,14 @@ class MUC(BaseModule): self._add_new_muc_contact(properties) if properties.is_muc_self_presence: self._log.info('Self presence: %s', properties.jid) - self._raise_muc_event('muc-self-presence', properties) if muc_data.state == MUCJoinedState.JOINING: self._start_join_timeout(room_jid) + if (properties.is_nickname_modified or + muc_data.nick != properties.muc_nickname): + muc_data.nick = properties.muc_nickname + self._log.info('Server modified nickname to: %s', + properties.muc_nickname) + self._raise_muc_event('muc-self-presence', properties) if properties.is_new_room: self.configure_room(room_jid) else:
===================================== gajim/groupchat_control.py ===================================== @@ -552,7 +552,7 @@ class GroupchatControl(ChatControlBase):
if self.disco_info is None: return False - return self.disco_info.muc_subjectmod + return self.disco_info.muc_subjectmod or False
def _get_action(self, name): win = self.parent_win.window
===================================== test/no_gui/unit/test_contacts.py ===================================== @@ -95,14 +95,6 @@ class TestContacts(unittest.TestCase): # Not yet implemented to remain backwart compatible # self.assertEqual(contact, copy, msg="Must be equal")
- def test_legacy_accounts_handling(self): - self.contacts.add_account("one") - self.contacts.add_account("two") - - self.contacts.remove_account("one") - - self.assertEqual(["old"], self.contacts.get_accounts()) - def test_legacy_contacts_from_groups(self): jid1 = "test1@gajim.org" jid2 = "test2@gajim.org"
View it on GitLab: https://dev.gajim.org/gajim/gajim/compare/d800ca8e4272c830f24ed0a433be0a3f81...