auth and socket connections linear and slow progress but cleaner?

This commit is contained in:
talksik
2022-05-13 06:20:08 -05:00
parent 5eb57726ab
commit fc9efed3e2
9 changed files with 535 additions and 220 deletions
@@ -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() {