diff --git a/apps/platform/trpc/routers/orgRouter/iCanHaz/iCanHazRouter.ts b/apps/platform/trpc/routers/orgRouter/iCanHaz/iCanHazRouter.ts index 382c8c13..61239a4c 100644 --- a/apps/platform/trpc/routers/orgRouter/iCanHaz/iCanHazRouter.ts +++ b/apps/platform/trpc/routers/orgRouter/iCanHaz/iCanHazRouter.ts @@ -1,8 +1,14 @@ -import { z } from 'zod'; import { router, orgProcedure, createCallerFactory } from '~platform/trpc/trpc'; import { billingTrpcClient } from '~platform/utils/tRPCServerClients'; export const iCanHazRouter = router({ + billing: orgProcedure.query(async ({ ctx }) => { + const { selfHosted } = ctx; + if (selfHosted) { + return false; + } + return await billingTrpcClient.iCanHaz.billing.query(); + }), domain: orgProcedure.query(async ({ ctx }) => { const { org, selfHosted } = ctx; if (selfHosted) { diff --git a/apps/web/src/app/[orgShortcode]/settings/_components/settings-sidebar.tsx b/apps/web/src/app/[orgShortcode]/settings/_components/settings-sidebar.tsx index b8fa1521..4be92b2a 100644 --- a/apps/web/src/app/[orgShortcode]/settings/_components/settings-sidebar.tsx +++ b/apps/web/src/app/[orgShortcode]/settings/_components/settings-sidebar.tsx @@ -27,6 +27,9 @@ type NavLinks = { export default function SettingsSidebar() { const orgShortcode = useGlobalStore((state) => state.currentOrg.shortcode); + const { data: hazBilling } = platform.org.iCanHaz.billing.useQuery({ + orgShortcode + }); const { data: isAdmin } = platform.org.users.members.isOrgMemberAdmin.useQuery({ @@ -56,11 +59,15 @@ export default function SettingsSidebar() { to: `/${orgShortcode}/settings/org`, icon: }, - { - label: 'Billing', - to: `/${orgShortcode}/settings/org/setup/billing`, - icon: - } + ...(hazBilling + ? [ + { + label: 'Billing', + to: `/${orgShortcode}/settings/org/setup/billing`, + icon: + } + ] + : []) ]; const orgUserLinks: NavLinks[] = [ diff --git a/apps/web/src/app/[orgShortcode]/settings/org/setup/billing/page.tsx b/apps/web/src/app/[orgShortcode]/settings/org/setup/billing/page.tsx index caeb160c..c1ac18e9 100644 --- a/apps/web/src/app/[orgShortcode]/settings/org/setup/billing/page.tsx +++ b/apps/web/src/app/[orgShortcode]/settings/org/setup/billing/page.tsx @@ -10,9 +10,20 @@ import Link from 'next/link'; import { cn } from '@/src/lib/utils'; import { PageTitle } from '../../../_components/page-title'; import { Skeleton } from '@/src/components/shadcn-ui/skeleton'; +import { useRouter } from 'next/navigation'; export default function Page() { const orgShortcode = useGlobalStore((state) => state.currentOrg.shortcode); + + const { data: hazBilling } = platform.org.iCanHaz.billing.useQuery({ + orgShortcode + }); + + const router = useRouter(); + if (!hazBilling) { + router.push(`/${orgShortcode}/settings/`); + } + const { data, isLoading } = platform.org.setup.billing.getOrgBillingOverview.useQuery({ orgShortcode diff --git a/ee/apps/billing/trpc/routers/iCanHazRouter.ts b/ee/apps/billing/trpc/routers/iCanHazRouter.ts index 550844f4..7bf07a6c 100644 --- a/ee/apps/billing/trpc/routers/iCanHazRouter.ts +++ b/ee/apps/billing/trpc/routers/iCanHazRouter.ts @@ -11,6 +11,9 @@ import { import type { SpaceStatus } from '@u22n/utils/spaces'; export const iCanHazRouter = router({ + billing: protectedProcedure.query(async ({ ctx, input }) => { + return true; + }), domain: protectedProcedure .input(z.object({ orgId: z.number() })) .query(async ({ ctx, input }) => {