ui improvements

This commit is contained in:
padreug 2025-02-11 15:37:15 +01:00
parent b230e22ed1
commit fcf052bf8a
3 changed files with 41 additions and 40 deletions

View file

@ -194,7 +194,7 @@ export const useNostrStore = defineStore('nostr', () => {
activeChat.value = null
}
async function addMessage(pubkey: string, message: DirectMessage) {
const addMessage = async (pubkey: string, message: DirectMessage) => {
// Skip if we've already processed this message
if (processedMessageIds.value.has(message.id)) {
return
@ -206,6 +206,11 @@ export const useNostrStore = defineStore('nostr', () => {
// Add message to the map
const userMessages = messages.value.get(pubkey) || []
messages.value.set(pubkey, [...userMessages, message])
// Sort messages by timestamp
const sortedMessages = messages.value.get(pubkey) || []
sortedMessages.sort((a, b) => a.created_at - b.created_at)
messages.value.set(pubkey, sortedMessages)
}
async function sendMessage(to: string, content: string) {
@ -240,7 +245,7 @@ export const useNostrStore = defineStore('nostr', () => {
await publishEvent(event, account.value.relays)
}
async function subscribeToMessages() {
const subscribeToMessages = async () => {
if (!account.value) return
// Filter for received messages with history
@ -254,14 +259,11 @@ export const useNostrStore = defineStore('nostr', () => {
const sentFilter = {
kinds: [4],
authors: [account.value.pubkey],
'#p': [SUPPORT_NPUB],
since: 0 // Get all historical messages
}
const subscribeToRelay = (relay: any) => {
return new Promise((resolve) => {
let receivedCount = 0
let sentCount = 0
let eoseCount = 0
// Subscribe to received messages
@ -274,7 +276,6 @@ export const useNostrStore = defineStore('nostr', () => {
return
}
receivedCount++
const decrypted = await window.NostrTools.nip04.decrypt(
account.value!.privkey,
event.pubkey,
@ -310,22 +311,25 @@ export const useNostrStore = defineStore('nostr', () => {
return
}
sentCount++
// Find the target pubkey from the p tag
const targetPubkey = event.tags.find(tag => tag[0] === 'p')?.[1]
if (!targetPubkey) return
const decrypted = await window.NostrTools.nip04.decrypt(
account.value!.privkey,
SUPPORT_NPUB,
targetPubkey,
event.content
)
const dm: DirectMessage = {
id: event.id,
pubkey: SUPPORT_NPUB,
pubkey: targetPubkey,
content: decrypted,
created_at: event.created_at,
sent: true
}
await addMessage(SUPPORT_NPUB, dm)
await addMessage(targetPubkey, dm)
} catch (err) {
console.error('Failed to decrypt sent message:', err)
}