mirror of
https://github.com/rzmk/learnhouse.git
synced 2025-12-19 04:19:25 +00:00
46 lines
1.2 KiB
TypeScript
46 lines
1.2 KiB
TypeScript
'use client'
|
|
import { getAPIUrl } from '@services/config/config'
|
|
import { swrFetcher } from '@services/utils/ts/requests'
|
|
import React, { useContext, useEffect } from 'react'
|
|
import useSWR from 'swr'
|
|
import { createContext } from 'react'
|
|
import { useRouter } from 'next/navigation'
|
|
import { useLHSession } from '@components/Contexts/LHSessionContext'
|
|
import ErrorUI from '@components/StyledElements/Error/Error'
|
|
|
|
export const OrgContext = createContext({}) as any
|
|
|
|
export function OrgProvider({
|
|
children,
|
|
orgslug,
|
|
}: {
|
|
children: React.ReactNode
|
|
orgslug: string
|
|
}) {
|
|
const session = useLHSession() as any;
|
|
const access_token = session?.data?.tokens?.access_token;
|
|
const { data: org } = useSWR(`${getAPIUrl()}orgs/slug/${orgslug}`, (url) => swrFetcher(url, access_token))
|
|
|
|
const router = useRouter()
|
|
// Check if Org is Active
|
|
const verifyIfOrgIsActive = () => {
|
|
if (org && org?.config.config.GeneralConfig.active === false) {
|
|
router.push('/404')
|
|
}
|
|
|
|
}
|
|
useEffect(() => {
|
|
verifyIfOrgIsActive()
|
|
}, [org])
|
|
|
|
if (org) {
|
|
return <OrgContext.Provider value={org}>{children}</OrgContext.Provider>
|
|
}
|
|
else {
|
|
return <ErrorUI />
|
|
}
|
|
}
|
|
|
|
export function useOrg() {
|
|
return useContext(OrgContext)
|
|
}
|