// Copyright (c) 2023 Tudor Stanciu import { useContext, useCallback, useEffect } from "react"; import { TuitioClient } from "@flare/tuitio-client"; import type { TuitioUserInfo } from "@flare/tuitio-client"; import { TuitioContext, TuitioDispatchContext } from "../contexts"; export type TuitioUserInfoHookResult = { userInfo?: TuitioUserInfo; }; const useTuitioUserInfo = (): TuitioUserInfoHookResult => { const state = useContext(TuitioContext); const dispatchActions = useContext(TuitioDispatchContext); const getUserInfo = useCallback(async (): Promise => { const client = new TuitioClient(state.configuration.tuitioUrl); const userInfo = await client.getUserInfo(); dispatchActions.onUserInfoLoaded(userInfo); return userInfo; }, [dispatchActions, state.configuration.tuitioUrl]); useEffect(() => { if (state.userInfo) return; getUserInfo(); }, [getUserInfo, state.userInfo]); const userInfo = state.userInfo; return { userInfo }; }; export { useTuitioUserInfo };