Browse Source

fix: 🐛

imwald
codytseng 9 months ago
parent
commit
5f2f63696b
  1. 3
      src/components/MailboxSetting/SaveButton.tsx
  2. 4
      src/providers/NostrProvider/index.tsx
  3. 23
      src/services/indexed-db.service.ts

3
src/components/MailboxSetting/SaveButton.tsx

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

4
src/providers/NostrProvider/index.tsx

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

23
src/services/indexed-db.service.ts

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

Loading…
Cancel
Save