Skip to content

Commit c865981

Browse files
committed
fix: re-render causing by supabase
onAuthStateChange, with focus change (during switch tabs) make a setSession causing re-render
1 parent 3bc1756 commit c865981

File tree

2 files changed

+17
-24
lines changed

2 files changed

+17
-24
lines changed

src/context/auth-context.tsx

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,15 @@ export const AuthProvider = ({ session: initialSession, children }: AuthProvider
139139

140140
useEffect(() => {
141141
const { data: listener } = supabase.auth.onAuthStateChange((_event, updatedSession) => {
142-
setSession(updatedSession);
142+
setSession(prev => {
143+
if (
144+
prev?.access_token === updatedSession?.access_token &&
145+
prev?.expires_at === updatedSession?.expires_at
146+
) {
147+
return prev;
148+
}
149+
return updatedSession;
150+
});
143151
});
144152

145153
return () => {
Lines changed: 8 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,20 @@
11
'use client';
22

3-
import { QueryClientProvider } from '@tanstack/react-query'
4-
import { ReactQueryDevtools } from '@tanstack/react-query-devtools'
5-
import { QueryNormalizerProvider } from '@normy/react-query';
6-
import { getType } from '@/lib/react-query/getType';
73
import { getQueryClient } from '@/lib/react-query/queryClient';
4+
import { QueryClientProvider } from '@tanstack/react-query';
5+
import { ReactQueryDevtools } from '@tanstack/react-query-devtools';
6+
import { useMemo } from 'react';
87

98
export const ReactQueryProvider = ({
109
children,
1110
}: {
1211
children: React.ReactNode;
1312
}) => {
14-
const queryClient = getQueryClient();
13+
const queryClient = useMemo(() => getQueryClient(), []);
1514
return (
16-
// <QueryNormalizerProvider
17-
// queryClient={queryClient}
18-
// normalizerConfig={{
19-
// getNormalizationObjectKey: obj => {
20-
// if (obj.id && getType(obj)) {
21-
// return `${getType(obj)}:${obj.id}`
22-
// } else if (obj.id) {
23-
// return `${obj.id}`
24-
// }
25-
// },
26-
// devLogging: true,
27-
// }}
28-
// >
29-
<QueryClientProvider client={queryClient}>
30-
{children}
31-
<ReactQueryDevtools initialIsOpen={false} />
32-
</QueryClientProvider>
33-
// </QueryNormalizerProvider>
15+
<QueryClientProvider client={queryClient}>
16+
{children}
17+
<ReactQueryDevtools initialIsOpen={false} />
18+
</QueryClientProvider>
3419
);
3520
};

0 commit comments

Comments
 (0)