File size: 1,450 Bytes
87337b1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
"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]); // Automatically fetch details when `selectedGraphId` changes
return children
}
export default AuthInitializer;
|