logging: Remove the "typ" passing when adding or logging messages
This commit is contained in:
parent
bbc22fc8bc
commit
f56811d546
9 changed files with 137 additions and 127 deletions
|
@ -71,7 +71,11 @@ from poezio.core.structs import (
|
|||
POSSIBLE_SHOW,
|
||||
)
|
||||
|
||||
from poezio.ui.types import Message, InfoMessage
|
||||
from poezio.ui.types import (
|
||||
Message,
|
||||
InfoMessage,
|
||||
PersistentInfoMessage,
|
||||
)
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
@ -1328,7 +1332,7 @@ class Core:
|
|||
"""
|
||||
tab = self.tabs.by_name_and_class(jid, tabs.ConversationTab)
|
||||
if tab is not None:
|
||||
tab.add_message(InfoMessage(msg), typ=2)
|
||||
tab.add_message(PersistentInfoMessage(msg))
|
||||
if self.tabs.current_tab is tab:
|
||||
self.refresh_window()
|
||||
|
||||
|
@ -1743,12 +1747,11 @@ class Core:
|
|||
nickname='Error',
|
||||
nick_color=get_theme().COLOR_ERROR_MSG,
|
||||
),
|
||||
typ=2,
|
||||
)
|
||||
code = error['error']['code']
|
||||
if code == '401':
|
||||
msg = 'To provide a password in order to join the room, type "/join / password" (replace "password" by the real password)'
|
||||
tab.add_message(InfoMessage(msg), typ=2)
|
||||
tab.add_message(PersistentInfoMessage(msg))
|
||||
if code == '409':
|
||||
if config.getstr('alternative_nickname') != '':
|
||||
if not tab.joined:
|
||||
|
@ -1757,11 +1760,10 @@ class Core:
|
|||
else:
|
||||
if not tab.joined:
|
||||
tab.add_message(
|
||||
InfoMessage(
|
||||
PersistentInfoMessage(
|
||||
'You can join the room with another nick, '
|
||||
'by typing "/join /other_nick"'
|
||||
),
|
||||
typ=2,
|
||||
)
|
||||
)
|
||||
self.refresh_window()
|
||||
|
||||
|
|
|
@ -38,7 +38,13 @@ from poezio.logger import logger
|
|||
from poezio.roster import roster
|
||||
from poezio.text_buffer import CorrectionError, AckError
|
||||
from poezio.theming import dump_tuple, get_theme
|
||||
from poezio.ui.types import XMLLog, Message as PMessage, BaseMessage, InfoMessage
|
||||
from poezio.ui.types import (
|
||||
XMLLog,
|
||||
Message as PMessage,
|
||||
BaseMessage,
|
||||
InfoMessage,
|
||||
PersistentInfoMessage,
|
||||
)
|
||||
|
||||
from poezio.core.commands import dumb_callback
|
||||
|
||||
|
@ -318,7 +324,7 @@ class HandlerCore:
|
|||
error = '\x19%s}%s\x19o' % (dump_tuple(get_theme().COLOR_CHAR_NACK),
|
||||
error_msg)
|
||||
if not tab.nack_message('\n' + error, message['id'], message['to']):
|
||||
tab.add_message(InfoMessage(error), typ=0)
|
||||
tab.add_message(InfoMessage(error))
|
||||
self.core.refresh_window()
|
||||
|
||||
def on_normal_message(self, message):
|
||||
|
@ -421,8 +427,7 @@ class HandlerCore:
|
|||
history=delayed,
|
||||
identifier=message['id'],
|
||||
jid=jid,
|
||||
),
|
||||
typ=1,
|
||||
)
|
||||
)
|
||||
|
||||
if not own and 'private' in config.getlist('beep_on'):
|
||||
|
@ -627,7 +632,7 @@ class HandlerCore:
|
|||
identifier=message['id'],
|
||||
)
|
||||
typ = 2
|
||||
tab.add_message(ui_msg, typ)
|
||||
tab.add_message(ui_msg)
|
||||
if highlight:
|
||||
self.core.events.trigger('highlight', message, tab)
|
||||
|
||||
|
@ -723,8 +728,7 @@ class HandlerCore:
|
|||
user=user,
|
||||
identifier=message['id'],
|
||||
jid=message['from'],
|
||||
),
|
||||
typ=1,
|
||||
)
|
||||
)
|
||||
if sent:
|
||||
tab.set_last_sent_message(message, correct=replaced)
|
||||
|
@ -1214,53 +1218,53 @@ class HandlerCore:
|
|||
if show_unavailable or hide_unavailable or non_priv or logging_off\
|
||||
or non_anon or semi_anon or full_anon:
|
||||
tab.add_message(
|
||||
InfoMessage(
|
||||
PersistentInfoMessage(
|
||||
'Info: A configuration change not privacy-related occurred.'
|
||||
),
|
||||
typ=2)
|
||||
)
|
||||
modif = True
|
||||
if show_unavailable:
|
||||
tab.add_message(
|
||||
InfoMessage(
|
||||
PersistentInfoMessage(
|
||||
'Info: The unavailable members are now shown.'
|
||||
),
|
||||
typ=2)
|
||||
)
|
||||
elif hide_unavailable:
|
||||
tab.add_message(
|
||||
InfoMessage(
|
||||
PersistentInfoMessage(
|
||||
'Info: The unavailable members are now hidden.',
|
||||
),
|
||||
typ=2)
|
||||
)
|
||||
if non_anon:
|
||||
tab.add_message(
|
||||
InfoMessage(
|
||||
PersistentInfoMessage(
|
||||
'\x191}Warning:\x19%(info_col)s} The room is now not anonymous. (public JID)' % info_col
|
||||
),
|
||||
typ=2)
|
||||
)
|
||||
elif semi_anon:
|
||||
tab.add_message(
|
||||
InfoMessage(
|
||||
PersistentInfoMessage(
|
||||
'Info: The room is now semi-anonymous. (moderators-only JID)',
|
||||
),
|
||||
typ=2)
|
||||
)
|
||||
elif full_anon:
|
||||
tab.add_message(
|
||||
InfoMessage(
|
||||
PersistentInfoMessage(
|
||||
'Info: The room is now fully anonymous.',
|
||||
),
|
||||
typ=2)
|
||||
)
|
||||
if logging_on:
|
||||
tab.add_message(
|
||||
InfoMessage(
|
||||
PersistentInfoMessage(
|
||||
'\x191}Warning: \x19%(info_col)s}This room is publicly logged' % info_col
|
||||
),
|
||||
typ=2)
|
||||
)
|
||||
elif logging_off:
|
||||
tab.add_message(
|
||||
InfoMessage(
|
||||
PersistentInfoMessage(
|
||||
'Info: This room is not logged anymore.',
|
||||
),
|
||||
typ=2)
|
||||
)
|
||||
if modif:
|
||||
self.core.refresh_window()
|
||||
|
||||
|
@ -1303,18 +1307,18 @@ class HandlerCore:
|
|||
|
||||
if nick_from:
|
||||
tab.add_message(
|
||||
InfoMessage(
|
||||
PersistentInfoMessage(
|
||||
"%(user)s set the subject to: \x19%(text_col)s}%(subject)s" % fmt,
|
||||
time=time,
|
||||
),
|
||||
typ=2)
|
||||
)
|
||||
else:
|
||||
tab.add_message(
|
||||
InfoMessage(
|
||||
PersistentInfoMessage(
|
||||
"The subject is: \x19%(text_col)s}%(subject)s" % fmt,
|
||||
time=time,
|
||||
),
|
||||
typ=2)
|
||||
)
|
||||
tab.topic = subject
|
||||
tab.topic_from = nick_from
|
||||
if self.core.tabs.by_name_and_class(
|
||||
|
|
|
@ -11,13 +11,14 @@ conversations and roster changes
|
|||
|
||||
import mmap
|
||||
import re
|
||||
from typing import List, Dict, Optional, IO, Any
|
||||
from typing import List, Dict, Optional, IO, Any, Union
|
||||
from datetime import datetime
|
||||
|
||||
from poezio import common
|
||||
from poezio.config import config
|
||||
from poezio.xhtml import clean_text
|
||||
from poezio.theming import dump_tuple, get_theme
|
||||
from poezio.ui.types import Message, BaseMessage, LoggableTrait
|
||||
|
||||
import logging
|
||||
|
||||
|
@ -134,10 +135,7 @@ class Logger:
|
|||
|
||||
def log_message(self,
|
||||
jid: str,
|
||||
nick: str,
|
||||
msg: str,
|
||||
date: Optional[datetime] = None,
|
||||
typ: int = 1) -> bool:
|
||||
msg: Union[BaseMessage, Message]) -> bool:
|
||||
"""
|
||||
log the message in the appropriate jid's file
|
||||
type:
|
||||
|
@ -147,7 +145,16 @@ class Logger:
|
|||
"""
|
||||
if not config.get_by_tabname('use_log', jid):
|
||||
return True
|
||||
logged_msg = build_log_message(nick, msg, date=date, typ=typ)
|
||||
if not isinstance(msg, LoggableTrait):
|
||||
return True
|
||||
date = msg.time
|
||||
txt = msg.txt
|
||||
typ = 2
|
||||
nick = ''
|
||||
if isinstance(msg, Message):
|
||||
nick = msg.nickname or ''
|
||||
typ = 1
|
||||
logged_msg = build_log_message(nick, txt, date=date, typ=typ)
|
||||
if not logged_msg:
|
||||
return True
|
||||
jid = str(jid).replace('/', '\\')
|
||||
|
|
|
@ -49,8 +49,13 @@ from poezio.text_buffer import TextBuffer
|
|||
from poezio.theming import get_theme, dump_tuple
|
||||
from poezio.user import User
|
||||
from poezio.ui.funcs import truncate_nick
|
||||
from poezio.ui.types import BaseMessage, InfoMessage, Message
|
||||
from poezio.timed_events import DelayedEvent
|
||||
from poezio.ui.types import (
|
||||
BaseMessage,
|
||||
Message,
|
||||
PersistentInfoMessage,
|
||||
LoggableTrait,
|
||||
)
|
||||
|
||||
from slixmpp import JID, InvalidJID, Message as SMessage
|
||||
|
||||
|
@ -580,6 +585,11 @@ class ChatTab(Tab):
|
|||
else:
|
||||
raise TypeError("Name %r must be of type JID or str." % value)
|
||||
|
||||
@property
|
||||
def log_name(self) -> str:
|
||||
"""Name used for the log filename"""
|
||||
return self.jid.bare
|
||||
|
||||
@property
|
||||
def jid(self) -> JID:
|
||||
return copy(self._jid)
|
||||
|
@ -595,22 +605,17 @@ class ChatTab(Tab):
|
|||
def general_jid(self) -> JID:
|
||||
raise NotImplementedError
|
||||
|
||||
def log_message(self, message: BaseMessage, typ: int = 1):
|
||||
def log_message(self, message: BaseMessage):
|
||||
"""
|
||||
Log the messages in the archives.
|
||||
"""
|
||||
name = self.jid.bare
|
||||
if not isinstance(message, Message):
|
||||
if not isinstance(message, LoggableTrait):
|
||||
return
|
||||
was_logged = logger.log_message(
|
||||
name, message.nickname or '', message.txt,
|
||||
date=message.time, typ=typ
|
||||
)
|
||||
if not was_logged:
|
||||
if not logger.log_message(self.log_name, message):
|
||||
self.core.information('Unable to write in the log file', 'Error')
|
||||
|
||||
def add_message(self, message: BaseMessage, typ=1):
|
||||
self.log_message(message, typ=typ)
|
||||
def add_message(self, message: BaseMessage):
|
||||
self.log_message(message)
|
||||
self._text_buffer.add_message(message)
|
||||
|
||||
def modify_message(self,
|
||||
|
@ -627,7 +632,7 @@ class ChatTab(Tab):
|
|||
txt, old_id, new_id, user=user, jid=jid, time=time
|
||||
)
|
||||
if message:
|
||||
self.log_message(message, typ=1)
|
||||
self.log_message(message)
|
||||
self.text_win.modify_message(message.identifier, message)
|
||||
self.core.refresh_window()
|
||||
return True
|
||||
|
@ -1025,8 +1030,7 @@ class OneToOneTab(ChatTab):
|
|||
if status.show in SHOW_NAME:
|
||||
msg += 'show: %s, ' % SHOW_NAME[status.show]
|
||||
self.add_message(
|
||||
InfoMessage(txt=msg[:-2]),
|
||||
typ=2,
|
||||
PersistentInfoMessage(txt=msg[:-2])
|
||||
)
|
||||
|
||||
def ack_message(self, msg_id: str, msg_jid: JID):
|
||||
|
|
|
@ -178,7 +178,7 @@ class ConversationTab(OneToOneTab):
|
|||
(' and their last status was %s' % status)
|
||||
if status else '',
|
||||
)
|
||||
self.add_message(InfoMessage(msg), typ=0)
|
||||
self.add_message(InfoMessage(msg))
|
||||
self.core.refresh_window()
|
||||
|
||||
self.core.xmpp.plugin['xep_0012'].get_last_activity(
|
||||
|
@ -206,15 +206,12 @@ class ConversationTab(OneToOneTab):
|
|||
'status': status,
|
||||
}
|
||||
),
|
||||
typ=0,
|
||||
)
|
||||
return True
|
||||
else:
|
||||
self.add_message(
|
||||
InfoMessage("No information available"),
|
||||
typ=0,
|
||||
)
|
||||
return True
|
||||
self.add_message(
|
||||
InfoMessage("No information available"),
|
||||
)
|
||||
return True
|
||||
|
||||
@command_args_parser.quoted(0, 1)
|
||||
async def command_version(self, args):
|
||||
|
|
|
@ -29,6 +29,7 @@ from typing import (
|
|||
Tuple,
|
||||
Union,
|
||||
Set,
|
||||
Type,
|
||||
Pattern,
|
||||
TYPE_CHECKING,
|
||||
)
|
||||
|
@ -58,6 +59,8 @@ from poezio.ui.types import (
|
|||
Message,
|
||||
MucOwnJoinMessage,
|
||||
MucOwnLeaveMessage,
|
||||
StatusMessage,
|
||||
PersistentInfoMessage,
|
||||
)
|
||||
|
||||
if TYPE_CHECKING:
|
||||
|
@ -220,7 +223,7 @@ class MucTab(ChatTab):
|
|||
'color_spec': spec_col,
|
||||
'nick': self.own_nick,
|
||||
}
|
||||
self.add_message(MucOwnLeaveMessage(msg), typ=2)
|
||||
self.add_message(MucOwnLeaveMessage(msg))
|
||||
self.disconnect()
|
||||
muc.leave_groupchat(self.core.xmpp, self.jid.bare, self.own_nick,
|
||||
message)
|
||||
|
@ -343,7 +346,7 @@ class MucTab(ChatTab):
|
|||
'role': user.role or 'None',
|
||||
'status': '\n%s' % user.status if user.status else ''
|
||||
}
|
||||
self.add_message(InfoMessage(info), typ=0)
|
||||
self.add_message(InfoMessage(info))
|
||||
return True
|
||||
|
||||
def change_topic(self, topic: str) -> None:
|
||||
|
@ -374,7 +377,6 @@ class MucTab(ChatTab):
|
|||
"The subject of the room is: \x19%s}%s %s" %
|
||||
(norm_text, self.topic, user_string),
|
||||
),
|
||||
typ=0,
|
||||
)
|
||||
|
||||
@refresh_wrapper.always
|
||||
|
@ -576,12 +578,11 @@ class MucTab(ChatTab):
|
|||
'nick_col': color,
|
||||
'info_col': info_col,
|
||||
}
|
||||
self.add_message(MucOwnJoinMessage(enable_message), typ=2)
|
||||
self.add_message(MucOwnJoinMessage(enable_message))
|
||||
self.core.enable_private_tabs(self.jid.bare, enable_message)
|
||||
if 201 in status_codes:
|
||||
self.add_message(
|
||||
InfoMessage('Info: The room has been created'),
|
||||
typ=0
|
||||
PersistentInfoMessage('Info: The room has been created'),
|
||||
)
|
||||
if 170 in status_codes:
|
||||
self.add_message(
|
||||
|
@ -590,9 +591,9 @@ class MucTab(ChatTab):
|
|||
' This room is publicly logged' % {
|
||||
'info_col': info_col,
|
||||
'warn_col': warn_col
|
||||
},
|
||||
}
|
||||
),
|
||||
typ=0)
|
||||
)
|
||||
if 100 in status_codes:
|
||||
self.add_message(
|
||||
InfoMessage(
|
||||
|
@ -602,7 +603,7 @@ class MucTab(ChatTab):
|
|||
'warn_col': warn_col
|
||||
},
|
||||
),
|
||||
typ=0)
|
||||
)
|
||||
mam.schedule_tab_open(self)
|
||||
|
||||
def handle_presence_joined(self, presence: Presence, status_codes: Set[int]) -> None:
|
||||
|
@ -664,8 +665,8 @@ class MucTab(ChatTab):
|
|||
MucOwnLeaveMessage(
|
||||
'You have been kicked because you '
|
||||
'are not a member and the room is now members-only.'
|
||||
),
|
||||
typ=2)
|
||||
)
|
||||
)
|
||||
self.disconnect()
|
||||
|
||||
def on_muc_shutdown(self) -> None:
|
||||
|
@ -674,8 +675,8 @@ class MucTab(ChatTab):
|
|||
MucOwnLeaveMessage(
|
||||
'You have been kicked because the'
|
||||
' MUC service is shutting down.'
|
||||
),
|
||||
typ=2)
|
||||
)
|
||||
)
|
||||
self.disconnect()
|
||||
|
||||
def on_user_join(self, from_nick: str, affiliation: str, show: str, status: str, role: str, jid: JID,
|
||||
|
@ -719,7 +720,7 @@ class MucTab(ChatTab):
|
|||
'jid_color': dump_tuple(theme.COLOR_MUC_JID),
|
||||
'color_spec': spec_col,
|
||||
}
|
||||
self.add_message(InfoMessage(msg), typ=2)
|
||||
self.add_message(PersistentInfoMessage(msg))
|
||||
self.core.on_user_rejoined_private_conversation(self.jid.bare, from_nick)
|
||||
|
||||
def on_user_nick_change(self, presence: Presence, user: User, from_nick: str) -> None:
|
||||
|
@ -747,7 +748,7 @@ class MucTab(ChatTab):
|
|||
old_color = color = "3"
|
||||
info_col = dump_tuple(get_theme().COLOR_INFORMATION_TEXT)
|
||||
self.add_message(
|
||||
InfoMessage(
|
||||
PersistentInfoMessage(
|
||||
'\x19%(old_color)s}%(old)s\x19%(info_col)s} is'
|
||||
' now known as \x19%(color)s}%(new)s' % {
|
||||
'old': from_nick,
|
||||
|
@ -756,8 +757,8 @@ class MucTab(ChatTab):
|
|||
'old_color': old_color,
|
||||
'info_col': info_col
|
||||
},
|
||||
),
|
||||
typ=2)
|
||||
)
|
||||
)
|
||||
# rename the private tabs if needed
|
||||
self.core.rename_private_tabs(self.jid.bare, from_nick, user)
|
||||
|
||||
|
@ -765,7 +766,7 @@ class MucTab(ChatTab):
|
|||
"""
|
||||
When someone is banned from a muc
|
||||
"""
|
||||
cls = InfoMessage
|
||||
cls: Type[InfoMessage] = PersistentInfoMessage
|
||||
self.users.remove(user)
|
||||
by = presence.xml.find('{%s}x/{%s}item/{%s}actor' %
|
||||
(NS_MUC_USER, NS_MUC_USER, NS_MUC_USER))
|
||||
|
@ -842,13 +843,13 @@ class MucTab(ChatTab):
|
|||
'reason': reason.text,
|
||||
'info_col': info_col
|
||||
}
|
||||
self.add_message(cls(kick_msg), typ=2)
|
||||
self.add_message(cls(kick_msg))
|
||||
|
||||
def on_user_kicked(self, presence: Presence, user: User, from_nick: str) -> None:
|
||||
"""
|
||||
When someone is kicked from a muc
|
||||
"""
|
||||
cls = InfoMessage
|
||||
cls: Type[InfoMessage] = PersistentInfoMessage
|
||||
self.users.remove(user)
|
||||
actor_elem = presence.xml.find('{%s}x/{%s}item/{%s}actor' %
|
||||
(NS_MUC_USER, NS_MUC_USER, NS_MUC_USER))
|
||||
|
@ -922,7 +923,7 @@ class MucTab(ChatTab):
|
|||
'reason': reason.text,
|
||||
'info_col': info_col
|
||||
}
|
||||
self.add_message(cls(kick_msg), typ=2)
|
||||
self.add_message(cls(kick_msg))
|
||||
|
||||
def on_user_leave_groupchat(self,
|
||||
user: User,
|
||||
|
@ -987,7 +988,7 @@ class MucTab(ChatTab):
|
|||
}
|
||||
if status:
|
||||
leave_msg += ' (\x19o%s\x19%s})' % (status, info_col)
|
||||
self.add_message(InfoMessage(leave_msg), typ=2)
|
||||
self.add_message(PersistentInfoMessage(leave_msg))
|
||||
self.core.on_user_left_private_conversation(from_room, user, status)
|
||||
|
||||
def on_user_change_status(self, user: User, from_nick: str, from_room: str, affiliation: str,
|
||||
|
@ -1072,18 +1073,6 @@ class MucTab(ChatTab):
|
|||
"""
|
||||
return self.topic.replace('\n', '|')
|
||||
|
||||
def log_message(self, msg: BaseMessage, typ: int = 1) -> None:
|
||||
"""
|
||||
Log the messages in the archives, if it needs
|
||||
to be
|
||||
"""
|
||||
if not isinstance(msg, Message):
|
||||
return
|
||||
if not msg.history and self.joined and msg.nickname and msg.txt: # don't log the history messages
|
||||
if not logger.log_message(self.jid.bare, msg.nickname, msg.txt, typ=typ):
|
||||
self.core.information('Unable to write in the log file',
|
||||
'Error')
|
||||
|
||||
def get_user_by_name(self, nick: str) -> Optional[User]:
|
||||
"""
|
||||
Gets the user associated with the given nick, or None if not found
|
||||
|
@ -1093,12 +1082,12 @@ class MucTab(ChatTab):
|
|||
return user
|
||||
return None
|
||||
|
||||
def add_message(self, msg: BaseMessage, typ: int = 1) -> None:
|
||||
def add_message(self, msg: BaseMessage) -> None:
|
||||
"""Add a message to the text buffer and set various tab status"""
|
||||
# reset self-ping interval
|
||||
if self.self_ping_event:
|
||||
self.enable_self_ping_event()
|
||||
super().add_message(msg, typ=typ)
|
||||
super().add_message(msg)
|
||||
if not isinstance(msg, Message):
|
||||
return
|
||||
if msg.user:
|
||||
|
@ -1130,7 +1119,7 @@ class MucTab(ChatTab):
|
|||
user=user,
|
||||
jid=jid)
|
||||
if message:
|
||||
self.log_message(message, typ=1)
|
||||
self.log_message(message)
|
||||
self.text_win.modify_message(message.identifier, message)
|
||||
return highlight
|
||||
return False
|
||||
|
@ -1585,7 +1574,7 @@ class MucTab(ChatTab):
|
|||
buff.append('\n')
|
||||
message = ' '.join(buff)
|
||||
|
||||
self.add_message(InfoMessage(message), typ=0)
|
||||
self.add_message(InfoMessage(message))
|
||||
self.text_win.refresh()
|
||||
self.input.refresh()
|
||||
|
||||
|
|
|
@ -26,7 +26,12 @@ from poezio.decorators import refresh_wrapper
|
|||
from poezio.logger import logger
|
||||
from poezio.theming import get_theme, dump_tuple
|
||||
from poezio.decorators import command_args_parser
|
||||
from poezio.ui.types import BaseMessage, Message, InfoMessage
|
||||
from poezio.ui.types import (
|
||||
BaseMessage,
|
||||
InfoMessage,
|
||||
Message,
|
||||
PersistentInfoMessage,
|
||||
)
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
@ -66,6 +71,11 @@ class PrivateTab(OneToOneTab):
|
|||
self.update_commands()
|
||||
self.update_keys()
|
||||
|
||||
@property
|
||||
def log_name(self) -> str:
|
||||
"""Overriden from ChatTab because this is a case where we want the full JID"""
|
||||
return self.jid.full
|
||||
|
||||
def remote_user_color(self):
|
||||
user = self.parent_muc.get_user_by_name(self.jid.resource)
|
||||
if user:
|
||||
|
@ -102,16 +112,6 @@ class PrivateTab(OneToOneTab):
|
|||
def remove_information_element(plugin_name):
|
||||
del PrivateTab.additional_information[plugin_name]
|
||||
|
||||
def log_message(self, msg: BaseMessage, typ=1):
|
||||
"""
|
||||
Log the messages in the archives.
|
||||
"""
|
||||
if not isinstance(msg, Message):
|
||||
return
|
||||
if not logger.log_message(
|
||||
self.jid.full, msg.nickname or '', msg.txt or '', date=msg.time, typ=typ):
|
||||
self.core.information('Unable to write in the log file', 'Error')
|
||||
|
||||
def on_close(self):
|
||||
super().on_close()
|
||||
self.parent_muc.privates.remove(self)
|
||||
|
@ -306,7 +306,7 @@ class PrivateTab(OneToOneTab):
|
|||
display a message.
|
||||
"""
|
||||
self.add_message(
|
||||
InfoMessage(
|
||||
PersistentInfoMessage(
|
||||
'\x19%(nick_col)s}%(old)s\x19%(info_col)s} is now '
|
||||
'known as \x19%(nick_col)s}%(new)s' % {
|
||||
'old': old_nick,
|
||||
|
@ -315,7 +315,7 @@ class PrivateTab(OneToOneTab):
|
|||
'info_col': dump_tuple(get_theme().COLOR_INFORMATION_TEXT)
|
||||
},
|
||||
),
|
||||
typ=2)
|
||||
)
|
||||
new_jid = self.jid.bare + '/' + user.nick
|
||||
self.name = new_jid
|
||||
return self.core.tabs.current_tab is self
|
||||
|
@ -335,7 +335,7 @@ class PrivateTab(OneToOneTab):
|
|||
|
||||
if not status_message:
|
||||
self.add_message(
|
||||
InfoMessage(
|
||||
PersistentInfoMessage(
|
||||
'\x19%(quit_col)s}%(spec)s \x19%(nick_col)s}'
|
||||
'%(nick)s\x19%(info_col)s} has left the room' % {
|
||||
'nick': user.nick,
|
||||
|
@ -345,10 +345,10 @@ class PrivateTab(OneToOneTab):
|
|||
'info_col': dump_tuple(theme.COLOR_INFORMATION_TEXT)
|
||||
},
|
||||
),
|
||||
typ=2)
|
||||
)
|
||||
else:
|
||||
self.add_message(
|
||||
InfoMessage(
|
||||
PersistentInfoMessage(
|
||||
'\x19%(quit_col)s}%(spec)s \x19%(nick_col)s}'
|
||||
'%(nick)s\x19%(info_col)s} has left the room'
|
||||
' (%(status)s)' % {
|
||||
|
@ -360,7 +360,7 @@ class PrivateTab(OneToOneTab):
|
|||
'info_col': dump_tuple(theme.COLOR_INFORMATION_TEXT)
|
||||
},
|
||||
),
|
||||
typ=2)
|
||||
)
|
||||
return self.core.tabs.current_tab is self
|
||||
|
||||
@refresh_wrapper.conditional
|
||||
|
@ -378,7 +378,7 @@ class PrivateTab(OneToOneTab):
|
|||
if user:
|
||||
color = dump_tuple(user.color)
|
||||
self.add_message(
|
||||
InfoMessage(
|
||||
PersistentInfoMessage(
|
||||
'\x19%(join_col)s}%(spec)s \x19%(color)s}%(nick)s\x19'
|
||||
'%(info_col)s} joined the room' % {
|
||||
'nick': nick,
|
||||
|
@ -388,18 +388,18 @@ class PrivateTab(OneToOneTab):
|
|||
'info_col': dump_tuple(theme.COLOR_INFORMATION_TEXT)
|
||||
},
|
||||
),
|
||||
typ=2)
|
||||
)
|
||||
return self.core.tabs.current_tab is self
|
||||
|
||||
def activate(self, reason=None):
|
||||
self.on = True
|
||||
if reason:
|
||||
self.add_message(InfoMessage(reason), typ=2)
|
||||
self.add_message(PersistentInfoMessage(reason))
|
||||
|
||||
def deactivate(self, reason=None):
|
||||
self.on = False
|
||||
if reason:
|
||||
self.add_message(InfoMessage(reason), typ=2)
|
||||
self.add_message(PersistentInfoMessage(reason))
|
||||
|
||||
def matching_names(self):
|
||||
return [(3, self.jid.resource), (4, self.name)]
|
||||
|
@ -415,6 +415,5 @@ class PrivateTab(OneToOneTab):
|
|||
nickname='Error',
|
||||
nick_color=theme.COLOR_ERROR_MSG,
|
||||
),
|
||||
typ=2,
|
||||
)
|
||||
self.core.refresh_window()
|
||||
|
|
|
@ -364,7 +364,7 @@ class RosterInfoTab(Tab):
|
|||
'info_col': dump_tuple(get_theme().COLOR_INFORMATION_TEXT),
|
||||
'jid': message['from'],
|
||||
}
|
||||
tab.add_message(InfoMessage(message), typ=0)
|
||||
tab.add_message(InfoMessage(message))
|
||||
|
||||
@command_args_parser.ignored
|
||||
async def command_list_blocks(self):
|
||||
|
|
|
@ -7,7 +7,6 @@ from poezio import poopt
|
|||
from poezio.user import User
|
||||
from poezio.theming import dump_tuple, get_theme
|
||||
|
||||
|
||||
class BaseMessage:
|
||||
__slots__ = ('txt', 'time', 'identifier')
|
||||
|
||||
|
@ -34,11 +33,20 @@ class InfoMessage(BaseMessage):
|
|||
super().__init__(txt=txt, identifier=identifier, time=time)
|
||||
|
||||
|
||||
class MucOwnLeaveMessage(InfoMessage):
|
||||
class LoggableTrait:
|
||||
"""Trait for classes of messages that should go through the logger"""
|
||||
pass
|
||||
|
||||
|
||||
class PersistentInfoMessage(InfoMessage, LoggableTrait):
|
||||
pass
|
||||
|
||||
|
||||
class MucOwnLeaveMessage(InfoMessage, LoggableTrait):
|
||||
"""Status message displayed on our room leave/kick/ban"""
|
||||
|
||||
|
||||
class MucOwnJoinMessage(InfoMessage):
|
||||
class MucOwnJoinMessage(InfoMessage, LoggableTrait):
|
||||
"""Status message displayed on our room join"""
|
||||
|
||||
|
||||
|
@ -93,7 +101,7 @@ class StatusMessage(BaseMessage):
|
|||
self.txt = self.format_string.format(**real_args)
|
||||
|
||||
|
||||
class Message(BaseMessage):
|
||||
class Message(BaseMessage, LoggableTrait):
|
||||
__slots__ = ('nick_color', 'nickname', 'user', 'delayed', 'history',
|
||||
'top', 'highlight', 'me', 'old_message', 'revisions',
|
||||
'jid', 'ack')
|
||||
|
|
Loading…
Reference in a new issue