parse sender name from channel messages

This commit is contained in:
liamcottle
2025-02-14 16:12:51 +13:00
parent 091fff7090
commit efd8cd1ce0

View File

@@ -13,10 +13,32 @@
<!-- message content --> <!-- message content -->
<div class="flex"> <div class="flex">
<div class="border border-gray-300 rounded-xl shadow overflow-hidden" :class="[ isMessageFailed(message) ? 'bg-red-500 text-white' : isMessageOutbound(message) ? 'bg-[#3b82f6] text-white' : 'bg-[#efefef]' ]"> <div class="border border-gray-300 rounded-xl shadow overflow-hidden" :class="[ isMessageFailed(message) ? 'bg-red-500 text-white' : isMessageOutbound(message) ? 'bg-[#3b82f6] text-white' : 'bg-[#efefef]' ]">
<div class="w-full space-y-0.5 px-2.5 py-1">
<!-- message sender name (for inbound channel messages) -->
<div v-if="isMessageInbound(message) && type === 'channel'" class="px-2 pt-1 text-xs text-gray-700 font-semibold">
{{ getChannelMessageSenderName(message) }}
</div>
<div class="w-full space-y-0.5 px-2.5" :class="[ isMessageInbound(message) && type === 'channel' ? 'pb-1' : 'py-1']">
<!-- content --> <!-- content -->
<div v-if="message.text" style="white-space:pre-wrap;word-break:break-word;font-family:inherit;">{{ message.text }}</div> <div v-if="message.text" style="word-break:break-word;font-family:inherit;">
<!-- message text to/from contact -->
<div v-if="type === 'contact'">{{ message.text }}</div>
<!-- message text to/from channel -->
<div v-else-if="type === 'channel'">
<!-- inbound channel messages include sender name, so need to parse it -->
<div v-if="isMessageInbound(message)">{{ getChannelMessageText(message) }}</div>
<!-- outbound channel messages only include the message content, so show as is -->
<div v-else>{{ message.text }}</div>
</div>
</div>
</div> </div>
</div> </div>
@@ -300,6 +322,27 @@ export default {
alert(info.join("\n")); alert(info.join("\n"));
}, },
parseChannelMessageText(message) {
// split message text by colon
const parts = message.text.split(":");
// left side is sender name, right side is message text
// e.g: "Liam Cottle: Hello Mesh!"
const name = parts.shift();
const text = parts.join(":");
return {
name: name,
text: text,
};
},
getChannelMessageSenderName(message) {
return this.parseChannelMessageText(message).name;
},
getChannelMessageText(message) {
return this.parseChannelMessageText(message).text;
},
}, },
computed: { computed: {
canSendMessage() { canSendMessage() {