|
"use client" |
|
|
|
import { ReactNode, useEffect } from "react" |
|
import { useAppDispatch, getOptionsFromLocal, getRandomChannel, getRandomUserId, useAppSelector, getTrulienceSettingsFromLocal } from "@/common" |
|
import { setOptions, reset, fetchGraphDetails, setTrulienceSettings } from "@/store/reducers/global" |
|
import { useGraphs } from "@/common/hooks"; |
|
|
|
interface AuthInitializerProps { |
|
children: ReactNode; |
|
} |
|
|
|
const AuthInitializer = (props: AuthInitializerProps) => { |
|
const { children } = props; |
|
const dispatch = useAppDispatch() |
|
const {initialize} = useGraphs() |
|
const selectedGraphId = useAppSelector((state) => state.global.selectedGraphId) |
|
|
|
useEffect(() => { |
|
if (typeof window !== "undefined") { |
|
const options = getOptionsFromLocal() |
|
const trulienceSettings = getTrulienceSettingsFromLocal() |
|
initialize() |
|
if (options && options.channel) { |
|
dispatch(reset()) |
|
dispatch(setOptions(options)) |
|
dispatch(setTrulienceSettings(trulienceSettings)) |
|
} else { |
|
dispatch(reset()) |
|
dispatch(setOptions({ |
|
channel: getRandomChannel(), |
|
userId: getRandomUserId(), |
|
})) |
|
} |
|
} |
|
}, [dispatch]) |
|
|
|
useEffect(() => { |
|
if (selectedGraphId) { |
|
dispatch(fetchGraphDetails(selectedGraphId)); |
|
} |
|
}, [selectedGraphId, dispatch]); |
|
|
|
return children |
|
} |
|
|
|
|
|
export default AuthInitializer; |
|
|