fix: 🐛

This commit is contained in:
codytseng
2025-06-14 11:32:35 +08:00
parent c09c002471
commit 5f2f63696b
3 changed files with 21 additions and 9 deletions

View File

@@ -24,8 +24,11 @@ export default function SaveButton({
setPushing(true) setPushing(true)
const event = createRelayListDraftEvent(mailboxRelays) const event = createRelayListDraftEvent(mailboxRelays)
console.log('Saving mailbox relays:', event)
const relayListEvent = await publish(event) const relayListEvent = await publish(event)
console.log('Published relay list event:', relayListEvent)
await updateRelayListEvent(relayListEvent) await updateRelayListEvent(relayListEvent)
toast({ toast({
title: 'Save Successful', title: 'Save Successful',
description: 'Successfully saved mailbox relays' description: 'Successfully saved mailbox relays'

View File

@@ -172,9 +172,7 @@ export function NostrProvider({ children }: { children: React.ReactNode }) {
indexedDb.getReplaceableEvent(account.pubkey, ExtendedKind.FAVORITE_RELAYS) indexedDb.getReplaceableEvent(account.pubkey, ExtendedKind.FAVORITE_RELAYS)
]) ])
if (storedRelayListEvent) { if (storedRelayListEvent) {
setRelayList( setRelayList(getRelayListFromRelayListEvent(storedRelayListEvent))
storedRelayListEvent ? getRelayListFromRelayListEvent(storedRelayListEvent) : null
)
} }
if (storedProfileEvent) { if (storedProfileEvent) {
setProfileEvent(storedProfileEvent) setProfileEvent(storedProfileEvent)

View File

@@ -4,7 +4,7 @@ import { Event, kinds } from 'nostr-tools'
type TValue<T = any> = { type TValue<T = any> = {
key: string key: string
value: T value: T | null
addedAt: number addedAt: number
} }
@@ -140,7 +140,7 @@ class IndexedDbService {
const getRequest = store.get(key) const getRequest = store.get(key)
getRequest.onsuccess = () => { getRequest.onsuccess = () => {
const oldValue = getRequest.result as TValue<Event> | undefined const oldValue = getRequest.result as TValue<Event> | undefined
if (oldValue && oldValue.value.created_at >= event.created_at) { if (oldValue?.value && oldValue.value.created_at >= event.created_at) {
transaction.commit() transaction.commit()
return resolve(oldValue.value) return resolve(oldValue.value)
} }
@@ -163,7 +163,11 @@ class IndexedDbService {
}) })
} }
async getReplaceableEvent(pubkey: string, kind: number, d?: string): Promise<Event | undefined> { async getReplaceableEvent(
pubkey: string,
kind: number,
d?: string
): Promise<Event | undefined | null> {
const storeName = this.getStoreNameByKind(kind) const storeName = this.getStoreNameByKind(kind)
if (!storeName) { if (!storeName) {
return Promise.reject('store name not found') return Promise.reject('store name not found')
@@ -232,7 +236,7 @@ class IndexedDbService {
}) })
} }
async getMuteDecryptedTags(id: string): Promise<string[][]> { async getMuteDecryptedTags(id: string): Promise<string[][] | null> {
await this.initPromise await this.initPromise
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
if (!this.db) { if (!this.db) {
@@ -288,7 +292,11 @@ class IndexedDbService {
request.onsuccess = () => { request.onsuccess = () => {
transaction.commit() transaction.commit()
resolve((request.result as TValue<Event>[])?.map((item) => item.value)) resolve(
((request.result as TValue<Event>[])
?.map((item) => item.value)
.filter(Boolean) as Event[]) ?? []
)
} }
request.onerror = (event) => { request.onerror = (event) => {
@@ -337,7 +345,10 @@ class IndexedDbService {
request.onsuccess = (event) => { request.onsuccess = (event) => {
const cursor = (event.target as IDBRequest).result const cursor = (event.target as IDBRequest).result
if (cursor) { if (cursor) {
callback((cursor.value as TValue<Event>).value) const value = (cursor.value as TValue<Event>).value
if (value) {
callback(value)
}
cursor.continue() cursor.continue()
} else { } else {
transaction.commit() transaction.commit()