Skip to content

Commit 39d5eab

Browse files
authored
Merge pull request #6 from valorem-labs-inc/fix-siwe-sign-out
fix: SIWE sign out
2 parents 0957cb1 + 77a8c27 commit 39d5eab

File tree

3 files changed

+49
-8
lines changed

3 files changed

+49
-8
lines changed

.changeset/stale-coats-retire.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@valorem-labs-inc/react-hooks': patch
3+
---
4+
5+
fix: SIWE provider sign out

src/context/SIWEProvider.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ const siweQueryProps = {
2020
refetchOnWindowFocus: false,
2121
refetchOnMount: false,
2222
refetchOnReconnect: false,
23+
keepPreviousData: false,
24+
cacheTime: 0,
25+
staleTime: 1,
2326
};
2427

2528
export function SIWEProvider({ onSignIn, onSignOut, children }: SIWEProps) {

src/utils/siwe.ts

Lines changed: 41 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -67,19 +67,47 @@ export const getSIWEConfig = ({
6767
},
6868
async signOut() {
6969
logger.debug('Signing out...');
70-
await signOutQuery.refetch();
71-
await nonceQuery.refetch();
70+
try {
71+
await signOutQuery.refetch();
72+
queryClient.setQueryData(['valorem.trade.v1.Auth', 'Nonce'], undefined);
73+
queryClient.setQueryData(
74+
['valorem.trade.v1.Auth', 'Session'],
75+
undefined,
76+
);
77+
queryClient.setQueryData(
78+
['valorem.trade.v1.Auth', 'Authenticate'],
79+
undefined,
80+
);
81+
queryClient.setQueryData(['valorem.trade.v1.Auth', 'signed-out'], true);
82+
logger.info('Signed out');
83+
return true;
84+
} catch (error) {
85+
logger.error('Error signing out');
86+
return false;
87+
}
88+
},
89+
async getSession() {
90+
logger.debug('Getting session...');
91+
await new Promise((resolve) => {
92+
setTimeout(resolve, 750);
93+
});
94+
if (
95+
queryClient.getQueryData(['valorem.trade.v1.Auth', 'signed-out']) ===
96+
true
97+
) {
98+
logger.debug('User is signed out');
99+
queryClient.setQueryData(
100+
['valorem.trade.v1.Auth', 'signed-out'],
101+
false,
102+
);
103+
return null;
104+
}
72105
queryClient.setQueryData(['valorem.trade.v1.Auth', 'Nonce'], undefined);
73106
queryClient.setQueryData(['valorem.trade.v1.Auth', 'Session'], undefined);
74107
queryClient.setQueryData(
75108
['valorem.trade.v1.Auth', 'Authenticate'],
76109
undefined,
77110
);
78-
logger.info('Signed out');
79-
return true;
80-
},
81-
async getSession() {
82-
logger.debug('Getting session...');
83111

84112
// check auth endpoint to ensure session is valid
85113
const { data: authData } = await authenticateQuery.refetch({});
@@ -90,6 +118,7 @@ export const getSIWEConfig = ({
90118
const authorizedAddress = fromH160ToAddress(authData);
91119
if (authorizedAddress.toLowerCase() !== address?.toLowerCase()) {
92120
logger.error('Authorized address does not match connected address');
121+
return null;
93122
}
94123
// get session data
95124
const { data: sessionData } = await sessionQuery.refetch();
@@ -98,8 +127,12 @@ export const getSIWEConfig = ({
98127
return null;
99128
}
100129
const sessionAddress = fromH160ToAddress(sessionData.address);
101-
if (sessionAddress.toLowerCase() === address?.toLowerCase()) {
130+
if (sessionAddress.toLowerCase() === address.toLowerCase()) {
102131
logger.debug('Session is valid');
132+
queryClient.setQueryData(
133+
['valorem.trade.v1.Auth', 'signed-out'],
134+
false,
135+
);
103136
return {
104137
address: sessionAddress,
105138
chainId: Number(fromH256(sessionData.chainId).toString()),

0 commit comments

Comments
 (0)