| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 | 
							- 'use client'
 
- import { createContext, useContext, useContextSelector } from 'use-context-selector'
 
- import type { App } from '@/types/app'
 
- import type { UserProfileResponse } from '@/models/common'
 
- import { createRef, FC, PropsWithChildren } from 'react'
 
- export const useSelector = <T extends any>(selector: (value: AppContextValue) => T): T =>
 
-   useContextSelector(AppContext, selector);
 
- export type AppContextValue = {
 
-   apps: App[]
 
-   mutateApps: () => void
 
-   userProfile: UserProfileResponse
 
-   mutateUserProfile: () => void
 
-   pageContainerRef: React.RefObject<HTMLDivElement>,
 
-   useSelector: typeof useSelector,
 
- }
 
- const AppContext = createContext<AppContextValue>({
 
-   apps: [],
 
-   mutateApps: () => { },
 
-   userProfile: {
 
-     id: '',
 
-     name: '',
 
-     email: '',
 
-   },
 
-   mutateUserProfile: () => { },
 
-   pageContainerRef: createRef(),
 
-   useSelector,
 
- })
 
- export type AppContextProviderProps = PropsWithChildren<{
 
-   value: Omit<AppContextValue, 'useSelector'>
 
- }>
 
- export const AppContextProvider: FC<AppContextProviderProps> = ({ value, children }) => (
 
-   <AppContext.Provider value={{ ...value, useSelector }}>
 
-     {children}
 
-   </AppContext.Provider>
 
- )
 
- export const useAppContext = () => useContext(AppContext)
 
- export default AppContext
 
 
  |