fix: 🐛

This commit is contained in:
codytseng
2025-06-21 13:38:04 +08:00
parent efb53bb906
commit 195954ed59

View File

@@ -1,11 +1,13 @@
import { DEFAULT_FAVORITE_RELAYS } from '@/constants' import { DEFAULT_FAVORITE_RELAYS } from '@/constants'
import { getRelaySetFromRelaySetEvent } from '@/lib/event'
import { checkAlgoRelay } from '@/lib/relay' import { checkAlgoRelay } from '@/lib/relay'
import { isWebsocketUrl, normalizeUrl } from '@/lib/url' import { isWebsocketUrl, normalizeUrl } from '@/lib/url'
import client from '@/services/client.service' import client from '@/services/client.service'
import indexedDb from '@/services/indexed-db.service'
import storage from '@/services/local-storage.service' import storage from '@/services/local-storage.service'
import relayInfoService from '@/services/relay-info.service' import relayInfoService from '@/services/relay-info.service'
import { TFeedInfo, TFeedType } from '@/types' import { TFeedInfo, TFeedType } from '@/types'
import { Filter } from 'nostr-tools' import { Filter, kinds } from 'nostr-tools'
import { createContext, useContext, useEffect, useRef, useState } from 'react' import { createContext, useContext, useEffect, useRef, useState } from 'react'
import { useFavoriteRelays } from './FavoriteRelaysProvider' import { useFavoriteRelays } from './FavoriteRelaysProvider'
import { useNostr } from './NostrProvider' import { useNostr } from './NostrProvider'
@@ -133,14 +135,24 @@ export function FeedProvider({ children }: { children: React.ReactNode }) {
} }
if (feedType === 'relays') { if (feedType === 'relays') {
const relaySetId = options.activeRelaySetId ?? (relaySets.length > 0 ? relaySets[0].id : null) const relaySetId = options.activeRelaySetId ?? (relaySets.length > 0 ? relaySets[0].id : null)
if (!relaySetId) { if (!relaySetId || !pubkey) {
setIsReady(true) setIsReady(true)
return return
} }
const relaySet = let relaySet =
relaySets.find((set) => set.id === options.activeRelaySetId) ?? relaySets.find((set) => set.id === relaySetId) ??
(relaySets.length > 0 ? relaySets[0] : null) (relaySets.length > 0 ? relaySets[0] : null)
if (!relaySet) {
const storedRelaySetEvent = await indexedDb.getReplaceableEvent(
pubkey,
kinds.Relaysets,
relaySetId
)
if (storedRelaySetEvent) {
relaySet = getRelaySetFromRelaySetEvent(storedRelaySetEvent)
}
}
if (relaySet) { if (relaySet) {
const newFeedInfo = { feedType, id: relaySet.id } const newFeedInfo = { feedType, id: relaySet.id }
setFeedInfo(newFeedInfo) setFeedInfo(newFeedInfo)
@@ -160,7 +172,8 @@ export function FeedProvider({ children }: { children: React.ReactNode }) {
} }
if (feedType === 'following') { if (feedType === 'following') {
if (!options.pubkey) { if (!options.pubkey) {
return setIsReady(true) setIsReady(true)
return
} }
const newFeedInfo = { feedType } const newFeedInfo = { feedType }
setFeedInfo(newFeedInfo) setFeedInfo(newFeedInfo)
@@ -172,11 +185,13 @@ export function FeedProvider({ children }: { children: React.ReactNode }) {
setFilter({ setFilter({
authors: followings.includes(options.pubkey) ? followings : [...followings, options.pubkey] authors: followings.includes(options.pubkey) ? followings : [...followings, options.pubkey]
}) })
return setIsReady(true) setIsReady(true)
return
} }
if (feedType === 'bookmarks') { if (feedType === 'bookmarks') {
if (!options.pubkey) { if (!options.pubkey) {
return setIsReady(true) setIsReady(true)
return
} }
const newFeedInfo = { feedType } const newFeedInfo = { feedType }
@@ -186,12 +201,14 @@ export function FeedProvider({ children }: { children: React.ReactNode }) {
setRelayUrls([]) setRelayUrls([])
setFilter({}) setFilter({})
return setIsReady(true) setIsReady(true)
return
} }
if (feedType === 'temporary') { if (feedType === 'temporary') {
const urls = options.temporaryRelayUrls ?? temporaryRelayUrls const urls = options.temporaryRelayUrls ?? temporaryRelayUrls
if (!urls.length) { if (!urls.length) {
return setIsReady(true) setIsReady(true)
return
} }
const newFeedInfo = { feedType } const newFeedInfo = { feedType }