47 lines
1.6 KiB
TypeScript
47 lines
1.6 KiB
TypeScript
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
import { useEffect } from "react";
|
|
import LoginService from '@features/auth/login-service';
|
|
import { useRecoilState } from 'recoil';
|
|
import { CurrentUserState } from '../state/atoms/current-user';
|
|
import Languages from '@features/global/services/languages-service';
|
|
import { useSetUserList } from './use-user-list';
|
|
import { getPublicLinkToken } from 'app/features/drive/api-client/api-client';
|
|
import Logger from '../../../features/global/framework/logger-service';
|
|
|
|
export const useCurrentUser = () => {
|
|
const [user, setUser] = useRecoilState(CurrentUserState);
|
|
const { set: setUserList } = useSetUserList('useCurrentUser');
|
|
|
|
const logger = Logger.getLogger('useCurrentUser');
|
|
|
|
//Depreciated way to get use update from LoginService
|
|
LoginService.recoilUpdateUser = setUser;
|
|
|
|
useEffect(() => {
|
|
if (!user && !getPublicLinkToken()) {
|
|
logger.debug("Init LoggerService ...");
|
|
LoginService.init(true)
|
|
.then(() => logger.debug("Init LoggerService completed"))
|
|
.then(() => LoginService.login({}))
|
|
.then(() => logger.debug("Login process completed"))
|
|
.then(() => {if (user) setUserList([user])})
|
|
.catch(err => logger.error("Error during auth: ", err))
|
|
} else {
|
|
if (user) setUserList([user]);
|
|
}
|
|
}, [user]);
|
|
|
|
//Update app language
|
|
useEffect(() => {
|
|
if (user?.preferences?.locale) Languages.setLanguage(user?.preferences?.locale);
|
|
}, [user?.preferences?.locale]);
|
|
|
|
const refresh = async () => {
|
|
if (!getPublicLinkToken()) {
|
|
await LoginService.updateUser();
|
|
}
|
|
};
|
|
|
|
return { user, refresh };
|
|
};
|