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