provider.tsx raw
1 import { createContext, useContext, useState } from 'react'
2
3 type TRelaySetsSettingComponentContext = {
4 renamingRelaySetId: string | null
5 setRenamingRelaySetId: React.Dispatch<React.SetStateAction<string | null>>
6 expandedRelaySetId: string | null
7 setExpandedRelaySetId: React.Dispatch<React.SetStateAction<string | null>>
8 }
9
10 export const RelaySetsSettingComponentContext = createContext<
11 TRelaySetsSettingComponentContext | undefined
12 >(undefined)
13
14 export const useRelaySetsSettingComponent = () => {
15 const context = useContext(RelaySetsSettingComponentContext)
16 if (!context) {
17 throw new Error(
18 'useRelaySetsSettingComponent must be used within a RelaySetsSettingComponentProvider'
19 )
20 }
21 return context
22 }
23
24 export function RelaySetsSettingComponentProvider({ children }: { children: React.ReactNode }) {
25 const [renamingRelaySetId, setRenamingRelaySetId] = useState<string | null>(null)
26 const [expandedRelaySetId, setExpandedRelaySetId] = useState<string | null>(null)
27
28 return (
29 <RelaySetsSettingComponentContext.Provider
30 value={{
31 renamingRelaySetId,
32 setRenamingRelaySetId,
33 expandedRelaySetId,
34 setExpandedRelaySetId
35 }}
36 >
37 {children}
38 </RelaySetsSettingComponentContext.Provider>
39 )
40 }
41