diff --git a/apps/backend/src/api/routes/auth.controller.ts b/apps/backend/src/api/routes/auth.controller.ts index 96b5ecae..f36ea646 100644 --- a/apps/backend/src/api/routes/auth.controller.ts +++ b/apps/backend/src/api/routes/auth.controller.ts @@ -50,7 +50,7 @@ export class AuthController { }); } - response.header('reload', 'true'); + response.header('onboarding', 'true'); response.status(200).json({ register: true, }); diff --git a/apps/backend/src/main.ts b/apps/backend/src/main.ts index be549c06..33ddda75 100644 --- a/apps/backend/src/main.ts +++ b/apps/backend/src/main.ts @@ -13,7 +13,7 @@ async function bootstrap() { rawBody: true, cors: { credentials: true, - exposedHeaders: ['reload'], + exposedHeaders: ['reload', 'onboarding'], origin: [process.env.FRONTEND_URL], } }); diff --git a/apps/backend/src/services/auth/permissions/permissions.service.ts b/apps/backend/src/services/auth/permissions/permissions.service.ts index a1ce5dc8..2e164756 100644 --- a/apps/backend/src/services/auth/permissions/permissions.service.ts +++ b/apps/backend/src/services/auth/permissions/permissions.service.ts @@ -46,7 +46,7 @@ export class PermissionsService { subscription, options: { ...all, - ...{ channel: tier === 'FREE' ? { channel } : {} }, + ...{ channel: tier === 'FREE' ? channel : -10 }, }, }; } @@ -77,7 +77,6 @@ export class PermissionsService { ).length; if ( - // @ts-ignore (options.channel && options.channel > totalChannels) || (subscription?.totalChannels || 0) > totalChannels ) { diff --git a/apps/frontend/src/components/layout/layout.context.tsx b/apps/frontend/src/components/layout/layout.context.tsx index 4295a5e3..b26fcb70 100644 --- a/apps/frontend/src/components/layout/layout.context.tsx +++ b/apps/frontend/src/components/layout/layout.context.tsx @@ -1,40 +1,54 @@ -"use client"; +'use client'; -import {ReactNode, useCallback} from "react"; -import {FetchWrapperComponent} from "@gitroom/helpers/utils/custom.fetch"; -import {deleteDialog} from "@gitroom/react/helpers/delete.dialog"; +import { ReactNode, useCallback } from 'react'; +import { FetchWrapperComponent } from '@gitroom/helpers/utils/custom.fetch'; +import { deleteDialog } from '@gitroom/react/helpers/delete.dialog'; -export default async function LayoutContext(params: {children: ReactNode}) { - if (params?.children) { - // eslint-disable-next-line react/no-children-prop - return - } +export default function LayoutContext(params: { children: ReactNode }) { + if (params?.children) { + // eslint-disable-next-line react/no-children-prop + return ; + } - return <> + return <>; } -function LayoutContextInner(params: {children: ReactNode}) { - const afterRequest = useCallback(async (url: string, options: RequestInit, response: Response) => { - if (response?.headers?.get('reload')) { - window.location.reload(); +function LayoutContextInner(params: { children: ReactNode }) { + const afterRequest = useCallback( + async (url: string, options: RequestInit, response: Response) => { + if (response?.headers?.get('onboarding')) { + window.location.href = '/analytics?onboarding=true'; + } + + if (response?.headers?.get('reload')) { + window.location.reload(); + } + + if (response.status === 402) { + if ( + await deleteDialog( + ( + await response.json() + ).message, + 'Move to billing', + 'Payment Required' + ) + ) { + window.open('/billing', '_blank'); } + return false; + } - if (response.status === 402) { - if (await deleteDialog((await response.json()).message, 'Move to billing', 'Payment Required')) { - window.open('/billing', '_blank'); - } - return false; - } + return true; + }, + [] + ); - return true; - }, []); - - return ( - - - {params?.children || <>} - - ) -} \ No newline at end of file + return ( + + {params?.children || <>} + + ); +}