toxygen/toxygen/contacts/friend_factory.py

44 lines
1.5 KiB
Python
Raw Normal View History

2024-02-13 21:00:45 +00:00
# -*- mode: python; indent-tabs-mode: nil; py-indent-offset: 4; coding: utf-8 -*-
2022-11-17 15:26:55 +00:00
from contacts.friend import Friend
2023-12-10 02:39:58 +00:00
from common.tox_save import ToxSave
2022-09-27 12:38:39 +00:00
class FriendFactory(ToxSave):
def __init__(self, profile_manager, settings, tox, db, items_factory):
super().__init__(tox)
self._profile_manager = profile_manager
self._settings = settings
self._db = db
self._items_factory = items_factory
def create_friend_by_public_key(self, public_key):
friend_number = self._tox.friend_by_public_key(public_key)
return self.create_friend_by_number(friend_number)
2024-02-13 21:00:45 +00:00
def create_friend_by_number(self, friend_number:int):
2022-09-27 12:38:39 +00:00
aliases = self._settings['friends_aliases']
2022-10-11 09:32:39 +00:00
sToxPk = self._tox.friend_get_public_key(friend_number)
assert sToxPk, sToxPk
2022-09-27 12:38:39 +00:00
try:
2022-10-11 09:32:39 +00:00
alias = list(filter(lambda x: x[0] == sToxPk, aliases))[0][1]
2022-09-27 12:38:39 +00:00
except:
alias = ''
item = self._create_friend_item()
2022-10-11 09:32:39 +00:00
name = alias or self._tox.friend_get_name(friend_number) or sToxPk
2022-09-27 12:38:39 +00:00
status_message = self._tox.friend_get_status_message(friend_number)
2022-10-11 09:32:39 +00:00
message_getter = self._db.messages_getter(sToxPk)
friend = Friend(self._profile_manager, message_getter, friend_number, name, status_message, item, sToxPk)
2022-09-27 12:38:39 +00:00
friend.set_alias(alias)
return friend
# Private methods
def _create_friend_item(self):
"""
Method-factory
:return: new widget for friend instance
"""
return self._items_factory.create_contact_item()