ui improvements
This commit is contained in:
parent
b230e22ed1
commit
fcf052bf8a
3 changed files with 41 additions and 40 deletions
|
|
@ -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)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue