diff --git a/apps/web/components/root-providers.tsx b/apps/web/components/root-providers.tsx
index 223d83a1f..a3ae1bccd 100644
--- a/apps/web/components/root-providers.tsx
+++ b/apps/web/components/root-providers.tsx
@@ -9,7 +9,7 @@ import { ThemeProvider } from 'next-themes';
import { CaptchaProvider } from '@kit/auth/captcha/client';
import { I18nProvider } from '@kit/i18n/provider';
import { MonitoringProvider } from '@kit/monitoring/components';
-import { AuthChangeListener } from '@kit/supabase/components/auth-change-listener';
+import { useAuthChangeListener } from '@kit/supabase/hooks/use-auth-change-listener';
import appConfig from '~/config/app.config';
import authConfig from '~/config/auth.config';
@@ -50,7 +50,7 @@ export function RootProviders({
-
+
{children}
-
+
@@ -68,3 +68,12 @@ export function RootProviders({
);
}
+
+// we place this below React Query since it uses the QueryClient
+function AuthProvider(props: React.PropsWithChildren) {
+ useAuthChangeListener({
+ appHomePath: pathsConfig.app.home,
+ });
+
+ return props.children;
+}
diff --git a/packages/shared/src/logger/impl/pino.ts b/packages/shared/src/logger/impl/pino.ts
index 075c2c5a0..5fec395a5 100644
--- a/packages/shared/src/logger/impl/pino.ts
+++ b/packages/shared/src/logger/impl/pino.ts
@@ -1,5 +1,9 @@
import { pino } from 'pino';
+/**
+ * @name Logger
+ * @description A logger implementation using Pino
+ */
const Logger = pino({
browser: {
asObject: true,
@@ -8,6 +12,7 @@ const Logger = pino({
base: {
env: process.env.NODE_ENV,
},
+ errorKey: 'error',
});
export { Logger };
diff --git a/packages/supabase/package.json b/packages/supabase/package.json
index 959ba30a5..00aed0e70 100644
--- a/packages/supabase/package.json
+++ b/packages/supabase/package.json
@@ -18,7 +18,6 @@
"./check-requires-mfa": "./src/check-requires-mfa.ts",
"./require-user": "./src/require-user.ts",
"./hooks/*": "./src/hooks/*.ts",
- "./components/*": "./src/components/*.tsx",
"./database": "./src/database.types.ts"
},
"devDependencies": {
diff --git a/packages/supabase/src/components/auth-change-listener.tsx b/packages/supabase/src/hooks/use-auth-change-listener.ts
similarity index 68%
rename from packages/supabase/src/components/auth-change-listener.tsx
rename to packages/supabase/src/hooks/use-auth-change-listener.ts
index 6a7e7fe90..fde562103 100644
--- a/packages/supabase/src/components/auth-change-listener.tsx
+++ b/packages/supabase/src/hooks/use-auth-change-listener.ts
@@ -4,24 +4,28 @@ import { useEffect } from 'react';
import { usePathname, useRouter } from 'next/navigation';
-import { isBrowser } from '@supabase/ssr';
-
-import { useSupabase } from '../hooks/use-supabase';
-import {
- useRevalidateUserSession,
- useUserSession,
-} from '../hooks/use-user-session';
+import { useSupabase } from './use-supabase';
+import { useRevalidateUserSession, useUserSession } from './use-user-session';
+/**
+ * @name PRIVATE_PATH_PREFIXES
+ * @description A list of private path prefixes
+ */
const PRIVATE_PATH_PREFIXES = ['/home', '/admin', '/join', '/update-password'];
-function AuthRedirectListener({
- children,
+/**
+ * @name AuthRedirectListener
+ * @description A component that listens to auth state changes and redirects users
+ * @param privatePathPrefixes
+ * @param appHomePath
+ */
+export function useAuthChangeListener({
privatePathPrefixes = PRIVATE_PATH_PREFIXES,
appHomePath,
-}: React.PropsWithChildren<{
+}: {
appHomePath: string;
privatePathPrefixes?: string[];
-}>) {
+}) {
const client = useSupabase();
const pathName = usePathname();
const router = useRouter();
@@ -63,30 +67,6 @@ function AuthRedirectListener({
pathName,
appHomePath,
]);
-
- return <>{children}>;
-}
-
-export function AuthChangeListener({
- children,
- appHomePath,
-}: React.PropsWithChildren<{
- appHomePath: string;
- privateRoutes?: string[];
-}>) {
- const shouldActivateListener = isBrowser();
-
- // we only activate the listener if
- // we are rendering in the browser
- if (!shouldActivateListener) {
- return <>{children}>;
- }
-
- return (
-
- {children}
-
- );
}
/**