UI/UX: refactor smartlist

Change-Id: Ibfd5154757908ebd85f4b0060da00a7c608a0e56
Reviewed-by: Kateryna Kostiuk <kateryna.kostiuk@savoirfairelinux.com>
diff --git a/src/utils.h b/src/utils.h
index e6ba40f..1c971a6 100755
--- a/src/utils.h
+++ b/src/utils.h
@@ -18,6 +18,7 @@
  */
 
 #import <Foundation/Foundation.h>
+#import "NSString+Extensions.h"
 #import <api/conversation.h>
 #import <api/conversationmodel.h>
 #import <api/account.h>
@@ -28,19 +29,39 @@
 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())
-        return @(contact.registeredName.c_str());
+    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());
+        return [@(contact.profileInfo.uri.c_str()) removeEmptyLinesAtBorders];
 }
 
 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 @(contact.profileInfo.alias.c_str());
-    else
+    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());
+}
+
+static inline lrc::api::profile::Type profileType(const lrc::api::conversation::Info& conv, const lrc::api::ConversationModel& model)
+{
+    @try {
+        auto contact = model.owner.contactModel->getContact(conv.participants[0]);
+        return contact.profileInfo.type;
+    }
+    @catch (NSException *exception) {
+        lrc::api::profile::Type::INVALID;
+    }
 }
 
 /**