summaryrefslogtreecommitdiff
path: root/poezio/tabs
diff options
context:
space:
mode:
authorMaxime “pep” Buquet <pep@bouah.net>2019-04-08 13:49:57 +0100
committerMaxime “pep” Buquet <pep@bouah.net>2019-04-08 14:01:09 +0100
commitbf2225468e8f496a45db477b596eb7d233cb813f (patch)
tree86fefa7497fc2d1d9a75442bc993a3b2b50055af /poezio/tabs
parent6ab49c188a6e5bb95773165f0bdbd672b41c8c81 (diff)
downloadpoezio-bf2225468e8f496a45db477b596eb7d233cb813f.tar.gz
poezio-bf2225468e8f496a45db477b596eb7d233cb813f.tar.bz2
poezio-bf2225468e8f496a45db477b596eb7d233cb813f.tar.xz
poezio-bf2225468e8f496a45db477b596eb7d233cb813f.zip
Revert work on tabs module to change tab.name to JID.
This reverts commits: d693479d05f1ada999c0e29a9d9e2f021dd59e50 2d0cc092fcd154b2d14be0c5ac0ff338607824a0 89a61b84bdb29d3df8c08436c3484fddba8d2ef1 8194d9afbdec2daa1377e07ebb26bb99406473d0 e256c31875c8b67d85fe30d3e2c14c896066657a a21335ac171a827a613dcce744898e822689c9d3 c96e528a8fd1313f75cb792a8e4826fbcfde1bec 0551867bfdb8dfa7dbd5964a15a1a950510e2c71 6ab49c188a6e5bb95773165f0bdbd672b41c8c81
Diffstat (limited to 'poezio/tabs')
-rw-r--r--poezio/tabs/basetabs.py26
-rw-r--r--poezio/tabs/conversationtab.py12
-rw-r--r--poezio/tabs/muctab.py5
-rw-r--r--poezio/tabs/privatetab.py28
4 files changed, 31 insertions, 40 deletions
diff --git a/poezio/tabs/basetabs.py b/poezio/tabs/basetabs.py
index c6d8b6b6..213f39d7 100644
--- a/poezio/tabs/basetabs.py
+++ b/poezio/tabs/basetabs.py
@@ -20,7 +20,7 @@ from datetime import datetime
from xml.etree import cElementTree as ET
from typing import Any, Callable, Dict, List, Optional
-from slixmpp import JID, InvalidJID, Message
+from slixmpp import JID, Message
from poezio.core.structs import Command, Completion, Status
from poezio import timed_events
@@ -462,16 +462,8 @@ class ChatTab(Tab):
plugin_keys = {} # type: Dict[str, Callable]
message_type = 'chat'
- def __init__(self, core, jid: Optional[JID] = None):
+ def __init__(self, core, jid=''):
Tab.__init__(self, core)
- if jid is not None and not isinstance(jid, JID):
- # XXX: Remove logging once we're more or less sure we've switched
- # all calls.
- log.debug('ChatTab.name: %r: Not a JID object.', jid, exc_info=True)
- try:
- jid = JID(jid)
- except InvalidJID:
- log.debug('ChatTab.name: invalid JID.')
self.name = jid
self.text_win = None
self.directed_presence = None
@@ -522,9 +514,8 @@ class ChatTab(Tab):
raise NotImplementedError
def load_logs(self, log_nb: int) -> Optional[List[Dict[str, Any]]]:
- if self.name is not None:
- return logger.get_logs(self.name.bare, log_nb)
- return None
+ logs = logger.get_logs(safeJID(self.name).bare, log_nb)
+ return logs
def log_message(self,
txt: str,
@@ -534,9 +525,7 @@ class ChatTab(Tab):
"""
Log the messages in the archives.
"""
- if self.name is None:
- return None
- name = self.name.bare
+ name = safeJID(self.name).bare
if not logger.log_message(name, nickname, txt, date=time, typ=typ):
self.core.information('Unable to write in the log file', 'Error')
@@ -781,9 +770,8 @@ class ChatTab(Tab):
class OneToOneTab(ChatTab):
- def __init__(self, core, jid: JID):
+ def __init__(self, core, jid=''):
ChatTab.__init__(self, core, jid)
- assert self.name.bare
self.__status = Status("", "")
self.last_remote_message = datetime.now()
@@ -813,7 +801,7 @@ class OneToOneTab(ChatTab):
return
self.__status = status
hide_status_change = config.get_by_tabname('hide_status_change',
- self.name.bare)
+ safeJID(self.name).bare)
now = datetime.now()
dff = now - self.last_remote_message
if hide_status_change > -1 and dff.total_seconds() > hide_status_change:
diff --git a/poezio/tabs/conversationtab.py b/poezio/tabs/conversationtab.py
index 23529a9b..d1ad608c 100644
--- a/poezio/tabs/conversationtab.py
+++ b/poezio/tabs/conversationtab.py
@@ -15,8 +15,6 @@ import curses
import logging
from typing import Dict, Callable
-from slixmpp import JID
-
from poezio.tabs.basetabs import OneToOneTab, Tab
from poezio import common
@@ -44,7 +42,7 @@ class ConversationTab(OneToOneTab):
additional_information = {} # type: Dict[str, Callable[[str], str]]
message_type = 'chat'
- def __init__(self, core, jid: JID):
+ def __init__(self, core, jid):
OneToOneTab.__init__(self, core, jid)
self.nick = None
self.nick_sent = False
@@ -402,10 +400,10 @@ class DynamicConversationTab(ConversationTab):
plugin_commands = {} # type: Dict[str, Command]
plugin_keys = {} # type: Dict[str, Callable]
- def __init__(self, core, jid: JID, resource=None):
+ def __init__(self, core, jid, resource=None):
self.locked_resource = None
+ self.name = safeJID(jid).bare
ConversationTab.__init__(self, core, jid)
- self.name.resource = None
self.info_header = windows.DynamicConversationInfoWin()
self.register_command(
'unlock', self.unlock_command, shortdesc='Deprecated, do nothing.')
@@ -472,8 +470,8 @@ class StaticConversationTab(ConversationTab):
plugin_commands = {} # type: Dict[str, Command]
plugin_keys = {} # type: Dict[str, Callable]
- def __init__(self, core, jid: JID):
- assert jid.resource
+ def __init__(self, core, jid):
+ assert (safeJID(jid).resource)
ConversationTab.__init__(self, core, jid)
self.info_header = windows.ConversationInfoWin()
self.resize()
diff --git a/poezio/tabs/muctab.py b/poezio/tabs/muctab.py
index 1a9217b3..17abb369 100644
--- a/poezio/tabs/muctab.py
+++ b/poezio/tabs/muctab.py
@@ -55,7 +55,7 @@ class MucTab(ChatTab):
additional_information = {} # type: Dict[str, Callable[[str], str]]
lagged = False
- def __init__(self, core, jid: JID, nick: str, password: str = None):
+ def __init__(self, core, jid, nick, password=None):
ChatTab.__init__(self, core, jid)
self.joined = False
self._state = 'disconnected'
@@ -63,6 +63,7 @@ class MucTab(ChatTab):
self.own_nick = nick
# self User object
self.own_user = None # type: Optional[User]
+ self.name = jid
self.password = password
# buffered presences
self.presence_buffer = []
@@ -1481,7 +1482,7 @@ class MucTab(ChatTab):
r = None
for user in self.users:
if user.nick == nick:
- r = self.core.open_private_window(str(self.name), user.nick)
+ r = self.core.open_private_window(self.name, user.nick)
if r and len(args) == 2:
msg = args[1]
self.core.tabs.current_tab.command_say(
diff --git a/poezio/tabs/privatetab.py b/poezio/tabs/privatetab.py
index ae34527a..cec68ac5 100644
--- a/poezio/tabs/privatetab.py
+++ b/poezio/tabs/privatetab.py
@@ -20,6 +20,7 @@ from poezio.tabs import OneToOneTab, MucTab, Tab
from poezio import windows
from poezio import xhtml
+from poezio.common import safeJID
from poezio.config import config
from poezio.core.structs import Command
from poezio.decorators import refresh_wrapper
@@ -39,9 +40,10 @@ class PrivateTab(OneToOneTab):
message_type = 'chat'
additional_information = {} # type: Dict[str, Callable[[str], str]]
- def __init__(self, core, name: JID, nick: str):
+ def __init__(self, core, name, nick):
OneToOneTab.__init__(self, core, name)
self.own_nick = nick
+ self.name = name
self.text_win = windows.TextWin()
self._text_buffer.add_window(self.text_win)
self.info_header = windows.PrivateInfoWin()
@@ -63,13 +65,13 @@ class PrivateTab(OneToOneTab):
shortdesc='Get the software version of a jid.')
self.resize()
self.parent_muc = self.core.tabs.by_name_and_class(
- self.name.bare, MucTab)
+ safeJID(name).bare, MucTab)
self.on = True
self.update_commands()
self.update_keys()
def remote_user_color(self):
- user = self.parent_muc.get_user_by_name(self.name.resource)
+ user = self.parent_muc.get_user_by_name(safeJID(self.name).resource)
if user:
return dump_tuple(user.color)
return super().remote_user_color()
@@ -103,7 +105,9 @@ class PrivateTab(OneToOneTab):
del PrivateTab.additional_information[plugin_name]
def load_logs(self, log_nb):
- return logger.get_logs(self.name.full.replace('/', '\\'), log_nb)
+ logs = logger.get_logs(
+ safeJID(self.name).full.replace('/', '\\'), log_nb)
+ return logs
def log_message(self, txt, nickname, time=None, typ=1):
"""
@@ -217,7 +221,7 @@ class PrivateTab(OneToOneTab):
"""
if args:
return self.core.command.version(args[0])
- jid = self.name
+ jid = safeJID(self.name)
self.core.xmpp.plugin['xep_0092'].get_version(
jid, callback=self.core.handler.on_version_result)
@@ -229,7 +233,7 @@ class PrivateTab(OneToOneTab):
if arg and arg[0]:
self.parent_muc.command_info(arg[0])
else:
- user = self.name.resource
+ user = safeJID(self.name).resource
self.parent_muc.command_info(user)
def resize(self):
@@ -272,7 +276,7 @@ class PrivateTab(OneToOneTab):
self.input.refresh()
def get_nick(self):
- return self.name.resource
+ return safeJID(self.name).resource
def on_input(self, key, raw):
if not raw and key in self.key_func:
@@ -284,7 +288,7 @@ class PrivateTab(OneToOneTab):
empty_after = self.input.get_text() == '' or (
self.input.get_text().startswith('/')
and not self.input.get_text().startswith('//'))
- tab = self.core.tabs.by_name_and_class(self.name.bare, MucTab)
+ tab = self.core.tabs.by_name_and_class(safeJID(self.name).bare, MucTab)
if tab and tab.joined:
self.send_composing_chat_state(empty_after)
return False
@@ -297,7 +301,7 @@ class PrivateTab(OneToOneTab):
self.text_win.remove_line_separator()
self.text_win.add_line_separator(self._text_buffer)
- tab = self.core.tabs.by_name_and_class(self.name.bare, MucTab)
+ tab = self.core.tabs.by_name_and_class(safeJID(self.name).bare, MucTab)
if tab and tab.joined and config.get_by_tabname(
'send_chat_states', self.general_jid) and self.on:
self.send_chat_state('inactive')
@@ -306,7 +310,7 @@ class PrivateTab(OneToOneTab):
def on_gain_focus(self):
self.state = 'current'
curses.curs_set(1)
- tab = self.core.tabs.by_name_and_class(self.name.bare, MucTab)
+ tab = self.core.tabs.by_name_and_class(safeJID(self.name).bare, MucTab)
if tab and tab.joined and config.get_by_tabname(
'send_chat_states',
self.general_jid,
@@ -341,7 +345,7 @@ class PrivateTab(OneToOneTab):
'info_col': dump_tuple(get_theme().COLOR_INFORMATION_TEXT)
},
typ=2)
- new_jid = self.name.bare + '/' + user.nick
+ new_jid = safeJID(self.name).bare + '/' + user.nick
self.name = new_jid
return self.core.tabs.current_tab is self
@@ -422,7 +426,7 @@ class PrivateTab(OneToOneTab):
self.add_message(txt=reason, typ=2)
def matching_names(self):
- return [(3, self.name.resource), (4, self.name)]
+ return [(3, safeJID(self.name).resource), (4, self.name)]
def add_error(self, error_message):
theme = get_theme()