feat: favorite relays (#250)

This commit is contained in:
Cody Tseng 2025-04-05 15:31:34 +08:00 committed by GitHub
parent fab9ff88b5
commit c739d9d28c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
63 changed files with 1081 additions and 982 deletions

View file

@ -1,52 +0,0 @@
import { createContext, useContext, useState } from 'react'
type TRelaySetsSettingComponentContext = {
renamingRelaySetId: string | null
setRenamingRelaySetId: React.Dispatch<React.SetStateAction<string | null>>
expandedRelaySetId: string | null
setExpandedRelaySetId: React.Dispatch<React.SetStateAction<string | null>>
selectedRelaySetIds: string[]
toggleSelectedRelaySetId: (relaySetId: string) => void
}
export const RelaySetsSettingComponentContext = createContext<
TRelaySetsSettingComponentContext | undefined
>(undefined)
export const useRelaySetsSettingComponent = () => {
const context = useContext(RelaySetsSettingComponentContext)
if (!context) {
throw new Error(
'useRelaySetsSettingComponent must be used within a RelaySetsSettingComponentProvider'
)
}
return context
}
export function RelaySetsSettingComponentProvider({ children }: { children: React.ReactNode }) {
const [renamingRelaySetId, setRenamingRelaySetId] = useState<string | null>(null)
const [expandedRelaySetId, setExpandedRelaySetId] = useState<string | null>(null)
const [selectedRelaySetIds, setSelectedRelaySetIds] = useState<string[]>([])
return (
<RelaySetsSettingComponentContext.Provider
value={{
renamingRelaySetId,
setRenamingRelaySetId,
expandedRelaySetId,
setExpandedRelaySetId,
selectedRelaySetIds,
toggleSelectedRelaySetId: (relaySetId) => {
setSelectedRelaySetIds((pre) => {
if (pre.includes(relaySetId)) {
return pre.filter((id) => id !== relaySetId)
}
return [...pre, relaySetId]
})
}
}}
>
{children}
</RelaySetsSettingComponentContext.Provider>
)
}