Philipp Hörist pushed to branch master at gajim / gajim
Commits:
-
5302d834
by Philipp Hörist at 2019-08-21T16:06:20Z
-
c91d29c9
by Philipp Hörist at 2019-08-21T16:07:16Z
-
dca797ba
by Philipp Hörist at 2019-08-21T19:14:56Z
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:
| ... | ... | @@ -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():
|
| ... | ... | @@ -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]
|
| ... | ... | @@ -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 |
|
| ... | ... | @@ -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:
|
| ... | ... | @@ -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)
|
| ... | ... | @@ -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):
|