Skip to content

Commit

Permalink
feat: session sync to accounts
Browse files Browse the repository at this point in the history
  • Loading branch information
simodrws committed Jun 14, 2023
1 parent ea2f88e commit 638f479
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 125 deletions.
136 changes: 13 additions & 123 deletions src/refactor/masa-feature/use-session.ts
Expand Up @@ -38,7 +38,6 @@ export const useSession = () => {
}, [masa, address]);

const [, getSessionAsync] = useAsyncFn(async () => {
console.log('GET SESSION CB');
if (!masa) return null;
if (!address) return null;

Expand All @@ -62,74 +61,45 @@ export const useSession = () => {
onSuccess: async (data: ISession | null) => {
if (data) {
const resultCheck = await checkSession();
console.log('ON SUCESS RESULTCHECk', { resultCheck });
if (!resultCheck) {
console.log('NO SESSION IN ONSUCCESS, invalidating session-check', {
resultCheck,
});
// await queryClient.invalidateQueries(['session-check', address]);
}
console.log('session-obj onSuccess', data);
}
},
queryFn: async () => {
console.log('SESSION OBJ QUERY FUNC START');
return getSessionAsync();
},
queryFn: async () => getSessionAsync(),
});

const { data: hasSession, refetch: checkLogin } = useQuery({
queryKey: ['session-check', address],
enabled: !!masa,
context: QcContext,
onSuccess: async (data: boolean) => {
console.log('ON SUCCESS checkLogin');
switch (data) {
case true: {
console.log('AM I HERE CASE TRUE?');
// await getSessionCB();
const checkedLogin = await checkSession();
console.log({ checkedLogin }, 'BRUV');

if (!checkedLogin) {
console.log(' NO CHECKECD LOGIN, invalidating and returning');
await queryClient.invalidateQueries(['session-obj', address]);
await queryClient.invalidateQueries(['session-check', address]);
await queryClient.invalidateQueries(['session', address]);
return;
}

if (sessionFromGet && address === sessionFromGet?.user.address) {
console.log('returning cause addresses metched', {
address,
sesAddr: sessionFromGet?.user.address,
});
return;
}

console.log('address mismatch');
await queryClient.invalidateQueries(['session-obj', address]);
await queryClient.fetchQuery(['session-obj', address]);
// await queryClient.refetchQueries({
// queryKey: ['session-obj', address],
// // type: 'all',
// });
// await queryClient.refetchQueries({ queryKey: ['session', address] });
// await queryClient.invalidateQueries(['session', address]);
// await queryClient.fetchQuery(['session', address]);

break;
}

case false: {
console.log('CASE FALSE');
// await queryClient.invalidateQueries(['session', address]);
// await queryClient.invalidateQueries(['session-obj', address]);
queryClient.setQueryData(['session', address], null);
queryClient.setQueryData(['session-obj', address], null);
break;
}
case undefined: {
// await queryClient.invalidateQueries(['session', address]);
// await queryClient.invalidateQueries(['session-obj', address]);
queryClient.setQueryData(['session', address], null);
queryClient.setQueryData(['session-obj', address], null);
break;
Expand All @@ -139,14 +109,12 @@ export const useSession = () => {
}
}
},
// refetchOnMount: true,
// refetchOnReconnect: 'always',

queryFn: async () => {
console.log('CHECK SESSION QUERY FUNC START');
if (!address) return false;
if (!masa) return false;

const hasSesh = await checkSession();
console.log('CHECK SESSION QUERY FUNC', { hasSesh });

if (hasSesh) {
return hasSesh;
Expand All @@ -168,39 +136,18 @@ export const useSession = () => {

const { data: session, refetch: getSession } = useQuery({
queryKey: ['session', address],
// enabled: !!masa && !!address,
enabled: false,

context: QcContext,
refetchOnMount: false,
onSuccess: async (data: ISession | null) => {
if (data) {
console.log('We have data onsuccess SESSION QUERY FUNC');
} else {
console.log('We DONT have data onsuccess SESSION QUERY FUNC');
}
},
onSettled: async (data, error) => {
console.log('SETTLED WITH', data);

onSettled: async () => {
await checkLogin();
if (error) console.log('ERROR QUERY', error);
},
// onSuccess: async () => checkLogin(),

queryFn: async () => {
// return {};
console.log('SESSION QUERY FUNC START');
const hasIt = await checkSession();
console.log({ hasIt });
if (hasIt) {
// if (session) return session;
// if (session?.user?.address !== address) {
// console.log('ADDRESS MISMATCH');
// await queryClient.invalidateQueries(['session', address]);
// await queryClient.invalidateQueries(['session-check', address]);
// return null;
// }

if (hasIt) {
const sesshFromGet = await masa?.session.getSession();

if (sesshFromGet === undefined || sesshFromGet === null) {
Expand All @@ -210,7 +157,6 @@ export const useSession = () => {
return sesshFromGet;
}

console.log('SESSION QUERY FUNC, DONT HAVE SESSION, LOGGING IN ');
const sesh = await loginSession();

if (sesh === undefined || sesh === null) return null;
Expand All @@ -220,71 +166,15 @@ export const useSession = () => {
});

useAsync(async () => {
console.log('USE ASYNC TO SWITCH ACCS ON LOGUOt', {
hasSession,
address,
previousAddress,
seshAddress: session?.user.address,
session,
});

console.log('USE ASYNC TO SWITCH ACCS ON LOGUOt', {
hasSession,
address,
seshFromGetAddress: sessionFromGet?.user.address,
sessionFromGet,
});

if (!address) return;
if (isDisconnected) return;
if (!hasSession) {
const { data: isLogged } = await checkLogin();

if (isLogged) {
console.log('LOGGING OUT USEASYNC');
// await logoutSession();
// await queryClient.invalidateQueries(['session-check', address]);
}
return;
if (isDisconnected) {
await logoutSession();
}

if (hasSession) {
if (sessionFromGet === null) {
console.log('SESSION FROM GET IS NULL');
console.log('LOGGING OUT USEASYNC');
// await logoutSession();
// await queryClient.invalidateQueries(['session-check', address]);
return;
}
console.log("hasSession && sessionFromGet !== null, don't logout");
}

if (
sessionFromGet?.user.address &&
sessionFromGet?.user.address !== address
) {
console.log('HOPEFULLY CHANGED ACCOUNTS TWO');
console.log('HERE logging out', sessionFromGet?.user.address, address);
const { data: isLgd } = await checkLogin();
if (isLgd) {
// await logoutSession();
// await queryClient.invalidateQueries(['session-check', address]);
}
if (previousAddress !== address) {
await checkLogin();
}
}, [
// queryClient,
hasSession,
address,
session,
previousAddress,
// logoutSession,
isDisconnected,
sessionFromGet,
checkLogin,
]);
}, [address, previousAddress, checkLogin, isDisconnected, logoutSession]);

return {
// checkLogin,
session,
sessionFromGet,
getSessionCB,
Expand Down
Expand Up @@ -9,7 +9,7 @@ export const useAccountChangeListen = ({
onChainChange?: () => void;
}>) => {
const provider = useProvider();
const { connector, address } = useAccount();
const { connector } = useAccount();

useAsync(async () => {
const handleConnectorUpdate = async ({ chain, account }: ConnectorData) => {
Expand Down Expand Up @@ -73,5 +73,5 @@ export const useAccountChangeListen = ({
provider.off('chainChanged', () => {});
provider.off('disconnect', () => {});
};
}, [address, onAccountChange, onChainChange, connector, provider]);
}, [onAccountChange, onChainChange, connector, provider]);
};

0 comments on commit 638f479

Please sign in to comment.