auth and socket connections linear and slow progress but cleaner?
This commit is contained in:
@@ -1,18 +1,53 @@
|
||||
import React, { useContext, useState, useEffect } from 'react';
|
||||
import { User } from '@nirvana/core/models/user.model';
|
||||
import { useAsyncFn } from 'react-use';
|
||||
import NirvanaApi, { getUserDetails } from '../api/NirvanaApi';
|
||||
import toast from 'react-hot-toast';
|
||||
import { useCallback } from 'react';
|
||||
|
||||
interface IAuthProvider {
|
||||
user: User;
|
||||
user?: User;
|
||||
jwtToken?: string;
|
||||
setJwtToken?: (jwtToken: string) => void;
|
||||
}
|
||||
|
||||
const AuthContext = React.createContext<IAuthProvider>({
|
||||
user: null,
|
||||
});
|
||||
const AuthContext = React.createContext<IAuthProvider>({});
|
||||
|
||||
export function AuthProvider({ children }: { children: React.ReactNode }) {
|
||||
if (true) return <></>;
|
||||
const [jwtToken, setJwtToken] = useState<string>();
|
||||
const [userFetchState, fetchUser] = useAsyncFn(getUserDetails);
|
||||
|
||||
return <AuthContext.Provider value={{}}>{children}</AuthContext.Provider>;
|
||||
useEffect(() => {
|
||||
if (jwtToken) {
|
||||
console.warn(jwtToken);
|
||||
|
||||
// ?should this be set here? what's a better way of
|
||||
NirvanaApi._jwtToken = jwtToken;
|
||||
|
||||
fetchUser()
|
||||
.then((response) => {
|
||||
toast.success('authenticated user');
|
||||
})
|
||||
.catch(() => {
|
||||
toast.error('problem in authenticating jwt token');
|
||||
});
|
||||
}
|
||||
}, [jwtToken, fetchUser]);
|
||||
|
||||
const handleSetJwtToken = useCallback(
|
||||
(newJwtToken: string) => {
|
||||
setJwtToken(newJwtToken);
|
||||
},
|
||||
[setJwtToken],
|
||||
);
|
||||
|
||||
return (
|
||||
<AuthContext.Provider
|
||||
value={{ user: userFetchState.value?.user, setJwtToken: handleSetJwtToken, jwtToken }}
|
||||
>
|
||||
{children}
|
||||
</AuthContext.Provider>
|
||||
);
|
||||
}
|
||||
|
||||
export default function useAuth() {
|
||||
|
||||
Reference in New Issue
Block a user