From 626b2be1febadec101d4a635112eb1df03dcceee Mon Sep 17 00:00:00 2001 From: link2xt Date: Tue, 14 Nov 2023 05:44:35 +0000 Subject: [PATCH] api(deltachat-rpc-client): add Account.get_chat_by_contact() --- .../src/deltachat_rpc_client/account.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/deltachat-rpc-client/src/deltachat_rpc_client/account.py b/deltachat-rpc-client/src/deltachat_rpc_client/account.py index 74dd40a53..0d19eaad6 100644 --- a/deltachat-rpc-client/src/deltachat_rpc_client/account.py +++ b/deltachat-rpc-client/src/deltachat_rpc_client/account.py @@ -111,6 +111,20 @@ class Account: contacts = self._rpc.get_blocked_contacts(self.id) return [AttrDict(contact=Contact(self, contact["id"]), **contact) for contact in contacts] + def get_chat_by_contact(self, contact: Union[int, Contact]) -> Optional[Chat]: + """Return 1:1 chat for a contact if it exists.""" + if isinstance(contact, Contact): + assert contact.account == self + contact_id = contact.id + elif isinstance(contact, int): + contact_id = contact + else: + raise ValueError(f"{contact!r} is not a contact") + chat_id = self._rpc.get_chat_id_by_contact_id(self.id, contact_id) + if chat_id: + return Chat(self, chat_id) + return None + def get_contacts( self, query: Optional[str] = None,