| "use client" | |
| import { ReactNode, useEffect } from "react" | |
| import { | |
| useAppDispatch, | |
| getOptionsFromLocal, | |
| getRandomUserId, | |
| getRandomChannel, | |
| genRandomString, | |
| } from "@/common" | |
| import { | |
| setOptions, | |
| reset, | |
| setAgentSettings, | |
| setCozeSettings, | |
| setDifySettings, | |
| } from "@/store/reducers/global" | |
| interface AuthInitializerProps { | |
| children: ReactNode | |
| } | |
| const AuthInitializer = (props: AuthInitializerProps) => { | |
| const { children } = props | |
| const dispatch = useAppDispatch() | |
| useEffect(() => { | |
| if (typeof window !== "undefined") { | |
| const data = getOptionsFromLocal() | |
| if (data && data?.options?.channel) { | |
| dispatch(reset()) | |
| dispatch(setOptions(data.options)) | |
| dispatch(setAgentSettings(data.settings)) | |
| dispatch(setCozeSettings(data.cozeSettings)) | |
| dispatch(setDifySettings(data.difySettings)) | |
| } else { | |
| const newOptions = { | |
| userName: genRandomString(8), | |
| channel: getRandomChannel(), | |
| userId: getRandomUserId(), | |
| } | |
| dispatch(setOptions(newOptions)) | |
| } | |
| } | |
| }, [dispatch]) | |
| return children | |
| } | |
| export default AuthInitializer | |