diff --git a/src/nostr/store/MessageStore.js b/src/nostr/store/MessageStore.js index b39d846..20b1df4 100644 --- a/src/nostr/store/MessageStore.js +++ b/src/nostr/store/MessageStore.js @@ -13,10 +13,7 @@ export const useMessageStore = defineStore('message', { getConversations(state) { return pubkey => { const conversations = [] - const counterparties = new Set() - Object.keys(state.byRecipient[pubkey] || {}).forEach(pubkey => counterparties.add(pubkey)) - Object.keys(state.bySender[pubkey] || {}).forEach(pubkey => counterparties.add(pubkey)) - for (const counterparty of counterparties) { + for (const counterparty of this.getCounterparties(pubkey)) { const messages = this.getMessages(pubkey, counterparty) const latestMessage = messages.reduce((a, b) => a.createdAt > b.createdAt ? a : b, {createdAt: 0}) const lastRead = useMessageStatusStore().getLastRead(pubkey, counterparty) @@ -44,6 +41,14 @@ export const useMessageStore = defineStore('message', { : [] ) }, + getCounterparties(state) { + return pubkey => { + const counterparties = new Set() + Object.keys(state.byRecipient[pubkey] || {}).forEach(pubkey => counterparties.add(pubkey)) + Object.keys(state.bySender[pubkey] || {}).forEach(pubkey => counterparties.add(pubkey)) + return Array.from(counterparties) + } + }, getNumUnread() { // TODO improve performance return pubkey => this.getConversations(pubkey).reduce((sum, conv) => sum + conv.numUnread, 0) @@ -54,7 +59,7 @@ export const useMessageStore = defineStore('message', { const message = Message.from(event) if (!message) return false - if (this.messages[message.id]) return + if (this.messages[message.id]) return this.messages[message.id] this.messages[message.id] = message if (!this.bySender[message.author]) { @@ -83,6 +88,12 @@ export const useMessageStore = defineStore('message', { markAsRead(pubkey, counterparty) { return useMessageStatusStore().markAsRead(pubkey, counterparty) }, + markAllAsRead(pubkey) { + const store = useMessageStatusStore() + for (const counterparty of this.getCounterparties(pubkey)) { + store.markAsRead(pubkey, counterparty) + } + }, } }) diff --git a/src/pages/messages/Conversation.vue b/src/pages/messages/Conversation.vue index cc44042..31cac47 100644 --- a/src/pages/messages/Conversation.vue +++ b/src/pages/messages/Conversation.vue @@ -9,12 +9,18 @@ v-for="message in conversation" :key="message.id" :sent="message.author === app.myPubkey" + :bg-color="message.author === app.myPubkey ? 'grey-2' : 'pink-2'" :stamp="formatMessageDate(message.createdAt)" >

- This is the beginning of your message history with . + +

diff --git a/src/pages/messages/Messages.vue b/src/pages/messages/Messages.vue index e405967..adf8ae1 100644 --- a/src/pages/messages/Messages.vue +++ b/src/pages/messages/Messages.vue @@ -1,5 +1,14 @@