fix: check out_of_range exceptions from ContactModel::getContact

Change-Id: Ibc82dc1fe85bb9b331e39639dd874afb89b616c9
Reviewed-by: Kateryna Kostiuk <kateryna.kostiuk@savoirfairelinux.com>
diff --git a/src/utils.h b/src/utils.h
index 144ca95..294b9cc 100755
--- a/src/utils.h
+++ b/src/utils.h
@@ -36,14 +36,19 @@
 
 static inline NSString* bestIDForConversation(const lrc::api::conversation::Info& conv, const lrc::api::ConversationModel& model)
 {
-    auto contact = model.owner.contactModel->getContact(conv.participants[0]);
-    if (!contact.registeredName.empty()) {
-        contact.registeredName.erase(std::remove(contact.registeredName.begin(), contact.registeredName.end(), '\n'), contact.registeredName.end());
-        contact.registeredName.erase(std::remove(contact.registeredName.begin(), contact.registeredName.end(), '\r'), contact.registeredName.end());
-        return [@(contact.registeredName.c_str()) removeEmptyLinesAtBorders];
+    try {
+        auto contact = model.owner.contactModel->getContact(conv.participants[0]);
+        if (!contact.registeredName.empty()) {
+            contact.registeredName.erase(std::remove(contact.registeredName.begin(), contact.registeredName.end(), '\n'), contact.registeredName.end());
+            contact.registeredName.erase(std::remove(contact.registeredName.begin(), contact.registeredName.end(), '\r'), contact.registeredName.end());
+            return [@(contact.registeredName.c_str()) removeEmptyLinesAtBorders];
+        }
+        else {
+            return [@(contact.profileInfo.uri.c_str()) removeEmptyLinesAtBorders];
+        }
+    } catch (std::out_of_range& e) {
+        NSLog(@"bestIDForConversation: getContact - out of range");
     }
-    else
-        return [@(contact.profileInfo.uri.c_str()) removeEmptyLinesAtBorders];
 }
 
 static inline NSString* bestIDForAccount(const lrc::api::account::Info& account)
@@ -80,17 +85,21 @@
 
 static inline NSString* bestNameForConversation(const lrc::api::conversation::Info& conv, const lrc::api::ConversationModel& model)
 {
-    auto contact = model.owner.contactModel->getContact(conv.participants[0]);
-    if (contact.profileInfo.alias.empty()) {
-        return bestIDForConversation(conv, model);
+    try {
+        auto contact = model.owner.contactModel->getContact(conv.participants[0]);
+        if (contact.profileInfo.alias.empty()) {
+            return bestIDForConversation(conv, model);
+        }
+        auto alias = contact.profileInfo.alias;
+        alias.erase(std::remove(alias.begin(), alias.end(), '\n'), alias.end());
+        alias.erase(std::remove(alias.begin(), alias.end(), '\r'), alias.end());
+        if(alias.length() == 0) {
+            return bestIDForConversation(conv, model);
+        }
+        return @(alias.c_str());
+    } catch (std::out_of_range& e) {
+        NSLog(@"bestNameForConversation: getContact - out of range");
     }
-    auto alias = contact.profileInfo.alias;
-    alias.erase(std::remove(alias.begin(), alias.end(), '\n'), alias.end());
-    alias.erase(std::remove(alias.begin(), alias.end(), '\r'), alias.end());
-    if(alias.length() == 0) {
-        return bestIDForConversation(conv, model);
-    }
-    return @(alias.c_str());
 }
 
 static inline lrc::api::profile::Type profileType(const lrc::api::conversation::Info& conv, const lrc::api::ConversationModel& model)