Improve styles for ConversationListItem

- Display last message
- Fix user talking to themself

Change-Id: Ia5bb3f9cd86a389f94bbfb3e279e7a82878f98ed
diff --git a/server/src/jamid/jamid.ts b/server/src/jamid/jamid.ts
index 2476e72..9c1258d 100644
--- a/server/src/jamid/jamid.ts
+++ b/server/src/jamid/jamid.ts
@@ -482,7 +482,7 @@
     this.events.onConversationLoaded.subscribe(({ id, accountId, conversationId }) => {
       log.debug(
         `Received ConversationLoaded: {"id":"${id}","accountId":"${accountId}",` +
-          `"conversationId":"${conversationId}","messages":[...]}`
+          `"conversationId":"${conversationId}"}`
       );
     });
 
diff --git a/server/src/routers/conversation-router.ts b/server/src/routers/conversation-router.ts
index 0a6b0b2..aa65723 100644
--- a/server/src/routers/conversation-router.ts
+++ b/server/src/routers/conversation-router.ts
@@ -23,6 +23,7 @@
   HttpStatusCode,
   IConversationMember,
   IConversationSummary,
+  Message,
   NewConversationRequestBody,
   NewMessageRequestBody,
 } from 'jami-web-common';
@@ -54,10 +55,17 @@
 
     // Add usernames for conversation members
     const { username } = await jamid.lookupAddress(member.uri, accountId);
-    membersNames.push(username ?? member.uri);
+    membersNames.push(username || member.uri);
   }
 
-  const lastMessage = (await jamid.getConversationMessages(accountId, conversationId, '', 1))[0];
+  let lastMessage: Message | undefined;
+  // Skip "merge" type since they are of no interest for the user
+  // Should we add some protection to prevent infinite loop?
+  while (!lastMessage || lastMessage.type === 'merge') {
+    lastMessage = (
+      await jamid.getConversationMessages(accountId, conversationId, lastMessage?.linearizedParent || '', 1)
+    )[0];
+  }
 
   return {
     id: conversationId,