Source code for imessagedb.chat
from datetime import datetime
[docs]class Chat:
""" Class for holding information about a chat """
def __init__(self, database, rowid: str, chat_identifier: str, chat_name: str,
last_message_date=None) -> None:
"""
Parameters
----------
database : imessagedb.DB
An instance of a connected database
rowid, chat_identifier, chat_name : str
The parameters are the fields in the database
last_message_date : date
The date the last message in this chat was sent"""
self._database = database
self._rowid = rowid
self._chat_identifier = chat_identifier
self._chat_name = chat_name
self._last_message_date = last_message_date
self._participants = []
[docs] def __repr__(self) -> str:
return f'{self.rowid}: id => {self.chat_identifier} name => "{self.chat_name}" ' \
f'last_message => {self.last_message_date}, participants => "{self.participants}"'
@property
def rowid(self) -> str:
return self._rowid
@property
def chat_identifier(self) -> str:
return self._chat_identifier
@property
def chat_name(self) -> str:
return self._chat_name
@property
def last_message_date(self) -> datetime:
return self._last_message_date
@last_message_date.setter
def last_message_date(self, date: datetime):
self._last_message_date = date
@property
def participants(self) -> str:
""" Returns the participants in the chat """
strings = []
for handle_id in self._participants:
if handle_id in self._database.handles.handles:
number = self._database.handles.handles[handle_id].number
name = self._database.handles.name_for_number(number)
if name is None:
strings.append(f'{number} ({handle_id})')
else:
strings.append(f'{name} ({number}):({handle_id})')
else:
strings.append(f'{handle_id}')
return ', '.join(strings)
[docs] def add_participant(self, participant: str):
""" Add a participant to the chat """
if participant not in self._participants:
self._participants.append(participant)