From a4bfd2fcbbb069bfff116990be91238af97bd974 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Philipp=20H=C3=B6rist?= <philipp@hoerist.com>
Date: Mon, 26 Feb 2018 22:24:30 +0100
Subject: [PATCH] Add get_contact_strict()

This adds a method that returns only a contact if there is an exact match,
instead of a contact where only the barejid matches.

We need this when we update the Caps of a contact.
---
 gajim/common/contacts.py | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/gajim/common/contacts.py b/gajim/common/contacts.py
index 8452f9c2ad..074e1d4983 100644
--- a/gajim/common/contacts.py
+++ b/gajim/common/contacts.py
@@ -509,6 +509,15 @@ class Contacts():
                     return c
             return self._contacts[jid][0]
 
+    def get_contact_strict(self, jid, resource):
+        """
+        Return the contact instance for the given resource or None
+        """
+        if jid in self._contacts:
+            for c in self._contacts[jid]:
+                if c.resource == resource:
+                    return c
+
     def get_avatar(self, jid, size=None, scale=None):
         if jid not in self._contacts:
             return None
@@ -554,7 +563,7 @@ class Contacts():
         Get Contact object for specific resource of given jid
         """
         barejid, resource = common.app.get_room_and_nick_from_fjid(fjid)
-        return self.get_contact(barejid, resource)
+        return self.get_contact_strict(barejid, resource)
 
     def get_first_contact_from_jid(self, jid):
         if jid in self._contacts:
-- 
GitLab