| 123456789101112131415161718192021222324252627282930313233343536 |
- import React, { useState } from 'react'
- import useDialogState from '@/hooks/use-dialog-state'
- import { type User } from '../data/schema'
- type UsersDialogType = 'invite' | 'add' | 'edit' | 'delete'
- type UsersContextType = {
- open: UsersDialogType | null
- setOpen: (str: UsersDialogType | null) => void
- currentRow: User | null
- setCurrentRow: React.Dispatch<React.SetStateAction<User | null>>
- }
- const UsersContext = React.createContext<UsersContextType | null>(null)
- export function UsersProvider({ children }: { children: React.ReactNode }) {
- const [open, setOpen] = useDialogState<UsersDialogType>(null)
- const [currentRow, setCurrentRow] = useState<User | null>(null)
- return (
- <UsersContext value={{ open, setOpen, currentRow, setCurrentRow }}>
- {children}
- </UsersContext>
- )
- }
- // eslint-disable-next-line react-refresh/only-export-components
- export const useUsers = () => {
- const usersContext = React.useContext(UsersContext)
- if (!usersContext) {
- throw new Error('useUsers has to be used within <UsersContext>')
- }
- return usersContext
- }
|