This commit is contained in:
codytseng 2025-07-19 17:24:51 +08:00
parent 28ec943a52
commit 78725c1d14
45 changed files with 698 additions and 766 deletions

View file

@ -1,6 +1,7 @@
import { BIG_RELAY_URLS, DEFAULT_FAVORITE_RELAYS } from '@/constants'
import { createFavoriteRelaysDraftEvent, createRelaySetDraftEvent } from '@/lib/draft-event'
import { getRelaySetFromRelaySetEvent, getReplaceableEventIdentifier } from '@/lib/event'
import { getReplaceableEventIdentifier } from '@/lib/event'
import { getRelaySetFromEvent } from '@/lib/event-metadata'
import { randomString } from '@/lib/random'
import { isWebsocketUrl, normalizeUrl } from '@/lib/url'
import client from '@/services/client.service'
@ -121,7 +122,7 @@ export function FavoriteRelaysProvider({ children }: { children: React.ReactNode
useEffect(() => {
setRelaySets(
relaySetEvents.map((evt) => getRelaySetFromRelaySetEvent(evt)).filter(Boolean) as TRelaySet[]
relaySetEvents.map((evt) => getRelaySetFromEvent(evt)).filter(Boolean) as TRelaySet[]
)
}, [relaySetEvents])

View file

@ -1,5 +1,5 @@
import { DEFAULT_FAVORITE_RELAYS } from '@/constants'
import { getRelaySetFromRelaySetEvent } from '@/lib/event'
import { getRelaySetFromEvent } from '@/lib/event-metadata'
import { checkAlgoRelay } from '@/lib/relay'
import { isWebsocketUrl, normalizeUrl } from '@/lib/url'
import client from '@/services/client.service'
@ -150,7 +150,7 @@ export function FeedProvider({ children }: { children: React.ReactNode }) {
relaySetId
)
if (storedRelaySetEvent) {
relaySet = getRelaySetFromRelaySetEvent(storedRelaySetEvent)
relaySet = getRelaySetFromEvent(storedRelaySetEvent)
}
}
if (relaySet) {

View file

@ -1,5 +1,5 @@
import { createFollowListDraftEvent } from '@/lib/draft-event'
import { extractPubkeysFromEventTags } from '@/lib/tag'
import { getPubkeysFromPTags } from '@/lib/tag'
import client from '@/services/client.service'
import { createContext, useContext, useMemo } from 'react'
import { useNostr } from './NostrProvider'
@ -23,7 +23,7 @@ export const useFollowList = () => {
export function FollowListProvider({ children }: { children: React.ReactNode }) {
const { pubkey: accountPubkey, followListEvent, publish, updateFollowListEvent } = useNostr()
const followings = useMemo(
() => (followListEvent ? extractPubkeysFromEventTags(followListEvent.tags) : []),
() => (followListEvent ? getPubkeysFromPTags(followListEvent.tags) : []),
[followListEvent]
)

View file

@ -1,5 +1,5 @@
import { createMuteListDraftEvent } from '@/lib/draft-event'
import { extractPubkeysFromEventTags } from '@/lib/tag'
import { getPubkeysFromPTags } from '@/lib/tag'
import client from '@/services/client.service'
import indexedDb from '@/services/indexed-db.service'
import dayjs from 'dayjs'
@ -44,9 +44,9 @@ export function MuteListProvider({ children }: { children: React.ReactNode }) {
} = useNostr()
const [tags, setTags] = useState<string[][]>([])
const [privateTags, setPrivateTags] = useState<string[][]>([])
const publicMutePubkeySet = useMemo(() => new Set(extractPubkeysFromEventTags(tags)), [tags])
const publicMutePubkeySet = useMemo(() => new Set(getPubkeysFromPTags(tags)), [tags])
const privateMutePubkeySet = useMemo(
() => new Set(extractPubkeysFromEventTags(privateTags)),
() => new Set(getPubkeysFromPTags(privateTags)),
[privateTags]
)
const mutePubkeys = useMemo(() => {

View file

@ -1,12 +1,8 @@
import LoginDialog from '@/components/LoginDialog'
import { ApplicationDataKey, BIG_RELAY_URLS, ExtendedKind } from '@/constants'
import { createSeenNotificationsAtDraftEvent } from '@/lib/draft-event'
import {
getLatestEvent,
getProfileFromProfileEvent,
getRelayListFromRelayListEvent,
getReplaceableEventIdentifier
} from '@/lib/event'
import { getLatestEvent, getReplaceableEventIdentifier } from '@/lib/event'
import { getProfileFromEvent, getRelayListFromEvent } from '@/lib/event-metadata'
import { formatPubkey, isValidPubkey, pubkeyToNpub } from '@/lib/pubkey'
import client from '@/services/client.service'
import indexedDb from '@/services/indexed-db.service'
@ -172,11 +168,11 @@ export function NostrProvider({ children }: { children: React.ReactNode }) {
indexedDb.getReplaceableEvent(account.pubkey, ExtendedKind.FAVORITE_RELAYS)
])
if (storedRelayListEvent) {
setRelayList(getRelayListFromRelayListEvent(storedRelayListEvent))
setRelayList(getRelayListFromEvent(storedRelayListEvent))
}
if (storedProfileEvent) {
setProfileEvent(storedProfileEvent)
setProfile(getProfileFromProfileEvent(storedProfileEvent))
setProfile(getProfileFromEvent(storedProfileEvent))
}
if (storedFollowListEvent) {
setFollowListEvent(storedFollowListEvent)
@ -196,7 +192,7 @@ export function NostrProvider({ children }: { children: React.ReactNode }) {
authors: [account.pubkey]
})
const relayListEvent = getLatestEvent(relayListEvents) ?? storedRelayListEvent
const relayList = getRelayListFromRelayListEvent(relayListEvent)
const relayList = getRelayListFromEvent(relayListEvent)
if (relayListEvent) {
client.updateRelayListCache(relayListEvent)
await indexedDb.putReplaceableEvent(relayListEvent)
@ -237,7 +233,7 @@ export function NostrProvider({ children }: { children: React.ReactNode }) {
)
if (profileEvent) {
setProfileEvent(profileEvent)
setProfile(getProfileFromProfileEvent(profileEvent))
setProfile(getProfileFromEvent(profileEvent))
await indexedDb.putReplaceableEvent(profileEvent)
} else if (!storedProfileEvent) {
setProfile({
@ -639,13 +635,13 @@ export function NostrProvider({ children }: { children: React.ReactNode }) {
const updateRelayListEvent = async (relayListEvent: Event) => {
const newRelayList = await indexedDb.putReplaceableEvent(relayListEvent)
setRelayList(getRelayListFromRelayListEvent(newRelayList))
setRelayList(getRelayListFromEvent(newRelayList))
}
const updateProfileEvent = async (profileEvent: Event) => {
const newProfileEvent = await indexedDb.putReplaceableEvent(profileEvent)
setProfileEvent(newProfileEvent)
setProfile(getProfileFromProfileEvent(newProfileEvent))
setProfile(getProfileFromEvent(newProfileEvent))
}
const updateFollowListEvent = async (followListEvent: Event) => {

View file

@ -1,9 +1,4 @@
import {
getParentAddressableEventTag,
getParentEventTag,
getRootAddressableEventTag,
getRootEventTag
} from '@/lib/event'
import { getParentATag, getParentETag, getRootATag, getRootETag } from '@/lib/event'
import { Event } from 'nostr-tools'
import { createContext, useCallback, useContext, useState } from 'react'
@ -35,11 +30,11 @@ export function ReplyProvider({ children }: { children: React.ReactNode }) {
newReplyIdSet.add(reply.id)
let rootId: string | undefined
const rootETag = getRootEventTag(reply)
const rootETag = getRootETag(reply)
if (rootETag) {
rootId = rootETag[1]
} else {
const rootATag = getRootAddressableEventTag(reply)
const rootATag = getRootATag(reply)
if (rootATag) {
rootId = rootATag[1]
}
@ -49,11 +44,11 @@ export function ReplyProvider({ children }: { children: React.ReactNode }) {
}
let parentId: string | undefined
const parentETag = getParentEventTag(reply)
const parentETag = getParentETag(reply)
if (parentETag) {
parentId = parentETag[1]
} else {
const parentATag = getParentAddressableEventTag(reply)
const parentATag = getParentATag(reply)
if (parentATag) {
parentId = parentATag[1]
}