mirror of
https://github.com/documenso/documenso.git
synced 2025-11-13 16:23:06 +10:00
fix: build issues
This commit is contained in:
@ -5,7 +5,7 @@ authorName: 'Timur Ercan'
|
|||||||
authorImage: '/blog/blog-author-timur.jpeg'
|
authorImage: '/blog/blog-author-timur.jpeg'
|
||||||
authorRole: 'Co-Founder'
|
authorRole: 'Co-Founder'
|
||||||
date: 2024-01-25
|
date: 2024-01-25
|
||||||
Tags:
|
tags:
|
||||||
- Vision
|
- Vision
|
||||||
- Mission
|
- Mission
|
||||||
- Open Source
|
- Open Source
|
||||||
|
|||||||
@ -5,7 +5,7 @@ authorName: 'Timur Ercan'
|
|||||||
authorImage: '/blog/blog-author-timur.jpeg'
|
authorImage: '/blog/blog-author-timur.jpeg'
|
||||||
authorRole: 'Co-Founder'
|
authorRole: 'Co-Founder'
|
||||||
date: 2024-01-10
|
date: 2024-01-10
|
||||||
Tags:
|
tags:
|
||||||
- GitHub
|
- GitHub
|
||||||
- Backlog
|
- Backlog
|
||||||
- Roadmap
|
- Roadmap
|
||||||
|
|||||||
@ -5,7 +5,7 @@ authorName: 'Timur Ercan'
|
|||||||
authorImage: '/blog/blog-author-timur.jpeg'
|
authorImage: '/blog/blog-author-timur.jpeg'
|
||||||
authorRole: 'Co-Founder'
|
authorRole: 'Co-Founder'
|
||||||
date: 2024-02-06
|
date: 2024-02-06
|
||||||
Tags:
|
tags:
|
||||||
- Founders
|
- Founders
|
||||||
- Mission
|
- Mission
|
||||||
- Open Source
|
- Open Source
|
||||||
|
|||||||
@ -12,7 +12,7 @@ export const generateMetadata = ({ params }: { params: { content: string } }) =>
|
|||||||
const document = allDocuments.find((post) => post._raw.flattenedPath === params.content);
|
const document = allDocuments.find((post) => post._raw.flattenedPath === params.content);
|
||||||
|
|
||||||
if (!document) {
|
if (!document) {
|
||||||
notFound();
|
return { title: 'Not Found' };
|
||||||
}
|
}
|
||||||
|
|
||||||
return { title: document.title };
|
return { title: document.title };
|
||||||
|
|||||||
@ -7,6 +7,8 @@ import { ChevronLeft } from 'lucide-react';
|
|||||||
import type { MDXComponents } from 'mdx/types';
|
import type { MDXComponents } from 'mdx/types';
|
||||||
import { useMDXComponent } from 'next-contentlayer/hooks';
|
import { useMDXComponent } from 'next-contentlayer/hooks';
|
||||||
|
|
||||||
|
export const dynamic = 'force-dynamic';
|
||||||
|
|
||||||
export const generateStaticParams = () =>
|
export const generateStaticParams = () =>
|
||||||
allBlogPosts.map((post) => ({ post: post._raw.flattenedPath }));
|
allBlogPosts.map((post) => ({ post: post._raw.flattenedPath }));
|
||||||
|
|
||||||
@ -14,7 +16,9 @@ export const generateMetadata = ({ params }: { params: { post: string } }) => {
|
|||||||
const blogPost = allBlogPosts.find((post) => post._raw.flattenedPath === `blog/${params.post}`);
|
const blogPost = allBlogPosts.find((post) => post._raw.flattenedPath === `blog/${params.post}`);
|
||||||
|
|
||||||
if (!blogPost) {
|
if (!blogPost) {
|
||||||
notFound();
|
return {
|
||||||
|
title: 'Not Found',
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|||||||
@ -13,6 +13,8 @@ import { Button } from '@documenso/ui/primitives/button';
|
|||||||
|
|
||||||
import { PasswordReveal } from '~/components/(marketing)/password-reveal';
|
import { PasswordReveal } from '~/components/(marketing)/password-reveal';
|
||||||
|
|
||||||
|
export const dynamic = 'force-dynamic';
|
||||||
|
|
||||||
const fontCaveat = Caveat({
|
const fontCaveat = Caveat({
|
||||||
weight: ['500'],
|
weight: ['500'],
|
||||||
subsets: ['latin'],
|
subsets: ['latin'],
|
||||||
|
|||||||
@ -15,6 +15,8 @@ export const metadata: Metadata = {
|
|||||||
title: 'Pricing',
|
title: 'Pricing',
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const dynamic = 'force-dynamic';
|
||||||
|
|
||||||
export type PricingPageProps = {
|
export type PricingPageProps = {
|
||||||
searchParams?: {
|
searchParams?: {
|
||||||
planId?: string;
|
planId?: string;
|
||||||
|
|||||||
@ -7,6 +7,7 @@ export const metadata: Metadata = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const revalidate = 0;
|
export const revalidate = 0;
|
||||||
|
export const dynamic = 'force-dynamic';
|
||||||
|
|
||||||
// !: This entire file is a hack to get around failed prerendering of
|
// !: This entire file is a hack to get around failed prerendering of
|
||||||
// !: the Single Player Mode page. This regression was introduced during
|
// !: the Single Player Mode page. This regression was introduced during
|
||||||
|
|||||||
@ -3,6 +3,7 @@ import { Suspense } from 'react';
|
|||||||
import { Caveat, Inter } from 'next/font/google';
|
import { Caveat, Inter } from 'next/font/google';
|
||||||
|
|
||||||
import { FeatureFlagProvider } from '@documenso/lib/client-only/providers/feature-flag';
|
import { FeatureFlagProvider } from '@documenso/lib/client-only/providers/feature-flag';
|
||||||
|
import { NEXT_PUBLIC_MARKETING_URL } from '@documenso/lib/constants/app';
|
||||||
import { getAllAnonymousFlags } from '@documenso/lib/universal/get-feature-flag';
|
import { getAllAnonymousFlags } from '@documenso/lib/universal/get-feature-flag';
|
||||||
import { TrpcProvider } from '@documenso/trpc/react';
|
import { TrpcProvider } from '@documenso/trpc/react';
|
||||||
import { cn } from '@documenso/ui/lib/utils';
|
import { cn } from '@documenso/ui/lib/utils';
|
||||||
@ -17,32 +18,35 @@ import './globals.css';
|
|||||||
const fontInter = Inter({ subsets: ['latin'], variable: '--font-sans' });
|
const fontInter = Inter({ subsets: ['latin'], variable: '--font-sans' });
|
||||||
const fontCaveat = Caveat({ subsets: ['latin'], variable: '--font-signature' });
|
const fontCaveat = Caveat({ subsets: ['latin'], variable: '--font-signature' });
|
||||||
|
|
||||||
export const metadata = {
|
export function generateMetadata() {
|
||||||
title: {
|
return {
|
||||||
template: '%s - Documenso',
|
title: {
|
||||||
default: 'Documenso',
|
template: '%s - Documenso',
|
||||||
},
|
default: 'Documenso',
|
||||||
description:
|
},
|
||||||
'Join Documenso, the open signing infrastructure, and get a 10x better signing experience. Pricing starts at $30/mo. forever! Sign in now and enjoy a faster, smarter, and more beautiful document signing process. Integrates with your favorite tools, customizable, and expandable. Support our mission and become a part of our open-source community.',
|
|
||||||
keywords:
|
|
||||||
'Documenso, open source, DocuSign alternative, document signing, open signing infrastructure, open-source community, fast signing, beautiful signing, smart templates',
|
|
||||||
authors: { name: 'Documenso, Inc.' },
|
|
||||||
robots: 'index, follow',
|
|
||||||
openGraph: {
|
|
||||||
title: 'Documenso - The Open Source DocuSign Alternative',
|
|
||||||
description:
|
description:
|
||||||
'Join Documenso, the open signing infrastructure, and get a 10x better signing experience. Pricing starts at $30/mo. forever! Sign in now and enjoy a faster, smarter, and more beautiful document signing process. Integrates with your favorite tools, customizable, and expandable. Support our mission and become a part of our open-source community.',
|
'Join Documenso, the open signing infrastructure, and get a 10x better signing experience. Pricing starts at $30/mo. forever! Sign in now and enjoy a faster, smarter, and more beautiful document signing process. Integrates with your favorite tools, customizable, and expandable. Support our mission and become a part of our open-source community.',
|
||||||
type: 'website',
|
keywords:
|
||||||
images: [`${process.env.NEXT_PUBLIC_MARKETING_URL}/opengraph-image.jpg`],
|
'Documenso, open source, DocuSign alternative, document signing, open signing infrastructure, open-source community, fast signing, beautiful signing, smart templates',
|
||||||
},
|
authors: { name: 'Documenso, Inc.' },
|
||||||
twitter: {
|
robots: 'index, follow',
|
||||||
site: '@documenso',
|
metadataBase: new URL(NEXT_PUBLIC_MARKETING_URL() ?? 'http://localhost:3000'),
|
||||||
card: 'summary_large_image',
|
openGraph: {
|
||||||
images: [`${process.env.NEXT_PUBLIC_MARKETING_URL}/opengraph-image.jpg`],
|
title: 'Documenso - The Open Source DocuSign Alternative',
|
||||||
description:
|
description:
|
||||||
'Join Documenso, the open signing infrastructure, and get a 10x better signing experience. Pricing starts at $30/mo. forever! Sign in now and enjoy a faster, smarter, and more beautiful document signing process. Integrates with your favorite tools, customizable, and expandable. Support our mission and become a part of our open-source community.',
|
'Join Documenso, the open signing infrastructure, and get a 10x better signing experience. Pricing starts at $30/mo. forever! Sign in now and enjoy a faster, smarter, and more beautiful document signing process. Integrates with your favorite tools, customizable, and expandable. Support our mission and become a part of our open-source community.',
|
||||||
},
|
type: 'website',
|
||||||
};
|
images: ['/opengraph-image.jpg'],
|
||||||
|
},
|
||||||
|
twitter: {
|
||||||
|
site: '@documenso',
|
||||||
|
card: 'summary_large_image',
|
||||||
|
images: ['/opengraph-image.jpg'],
|
||||||
|
description:
|
||||||
|
'Join Documenso, the open signing infrastructure, and get a 10x better signing experience. Pricing starts at $30/mo. forever! Sign in now and enjoy a faster, smarter, and more beautiful document signing process. Integrates with your favorite tools, customizable, and expandable. Support our mission and become a part of our open-source community.',
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
export default async function RootLayout({ children }: { children: React.ReactNode }) {
|
export default async function RootLayout({ children }: { children: React.ReactNode }) {
|
||||||
const flags = await getAllAnonymousFlags();
|
const flags = await getAllAnonymousFlags();
|
||||||
|
|||||||
@ -2,7 +2,7 @@ import type { Metadata } from 'next';
|
|||||||
import { headers } from 'next/headers';
|
import { headers } from 'next/headers';
|
||||||
import { redirect } from 'next/navigation';
|
import { redirect } from 'next/navigation';
|
||||||
|
|
||||||
import { APP_BASE_URL, NEXT_PUBLIC_MARKETING_URL } from '@documenso/lib/constants/app';
|
import { NEXT_PUBLIC_MARKETING_URL } from '@documenso/lib/constants/app';
|
||||||
|
|
||||||
type SharePageProps = {
|
type SharePageProps = {
|
||||||
params: { slug: string };
|
params: { slug: string };
|
||||||
@ -16,12 +16,12 @@ export function generateMetadata({ params: { slug } }: SharePageProps) {
|
|||||||
title: 'Documenso - Join the open source signing revolution',
|
title: 'Documenso - Join the open source signing revolution',
|
||||||
description: 'I just signed with Documenso!',
|
description: 'I just signed with Documenso!',
|
||||||
type: 'website',
|
type: 'website',
|
||||||
images: [`${APP_BASE_URL()}/share/${slug}/opengraph`],
|
images: [`/share/${slug}/opengraph`],
|
||||||
},
|
},
|
||||||
twitter: {
|
twitter: {
|
||||||
site: '@documenso',
|
site: '@documenso',
|
||||||
card: 'summary_large_image',
|
card: 'summary_large_image',
|
||||||
images: [`${APP_BASE_URL()}/share/${slug}/opengraph`],
|
images: [`/share/${slug}/opengraph`],
|
||||||
description: 'I just signed with Documenso!',
|
description: 'I just signed with Documenso!',
|
||||||
},
|
},
|
||||||
} satisfies Metadata;
|
} satisfies Metadata;
|
||||||
|
|||||||
@ -22,32 +22,35 @@ import './globals.css';
|
|||||||
const fontInter = Inter({ subsets: ['latin'], variable: '--font-sans' });
|
const fontInter = Inter({ subsets: ['latin'], variable: '--font-sans' });
|
||||||
const fontCaveat = Caveat({ subsets: ['latin'], variable: '--font-signature' });
|
const fontCaveat = Caveat({ subsets: ['latin'], variable: '--font-signature' });
|
||||||
|
|
||||||
export const metadata = {
|
export function generateMetadata() {
|
||||||
title: {
|
return {
|
||||||
template: '%s - Documenso',
|
title: {
|
||||||
default: 'Documenso',
|
template: '%s - Documenso',
|
||||||
},
|
default: 'Documenso',
|
||||||
description:
|
},
|
||||||
'Join Documenso, the open signing infrastructure, and get a 10x better signing experience. Pricing starts at $30/mo. forever! Sign in now and enjoy a faster, smarter, and more beautiful document signing process. Integrates with your favorite tools, customizable, and expandable. Support our mission and become a part of our open-source community.',
|
|
||||||
keywords:
|
|
||||||
'Documenso, open source, DocuSign alternative, document signing, open signing infrastructure, open-source community, fast signing, beautiful signing, smart templates',
|
|
||||||
authors: { name: 'Documenso, Inc.' },
|
|
||||||
robots: 'index, follow',
|
|
||||||
openGraph: {
|
|
||||||
title: 'Documenso - The Open Source DocuSign Alternative',
|
|
||||||
description:
|
description:
|
||||||
'Join Documenso, the open signing infrastructure, and get a 10x better signing experience. Pricing starts at $30/mo. forever! Sign in now and enjoy a faster, smarter, and more beautiful document signing process. Integrates with your favorite tools, customizable, and expandable. Support our mission and become a part of our open-source community.',
|
'Join Documenso, the open signing infrastructure, and get a 10x better signing experience. Pricing starts at $30/mo. forever! Sign in now and enjoy a faster, smarter, and more beautiful document signing process. Integrates with your favorite tools, customizable, and expandable. Support our mission and become a part of our open-source community.',
|
||||||
type: 'website',
|
keywords:
|
||||||
images: [`${NEXT_PUBLIC_WEBAPP_URL()}/opengraph-image.jpg`],
|
'Documenso, open source, DocuSign alternative, document signing, open signing infrastructure, open-source community, fast signing, beautiful signing, smart templates',
|
||||||
},
|
authors: { name: 'Documenso, Inc.' },
|
||||||
twitter: {
|
robots: 'index, follow',
|
||||||
site: '@documenso',
|
metadataBase: new URL(NEXT_PUBLIC_WEBAPP_URL() ?? 'http://localhost:3000'),
|
||||||
card: 'summary_large_image',
|
openGraph: {
|
||||||
images: [`${NEXT_PUBLIC_WEBAPP_URL()}/opengraph-image.jpg`],
|
title: 'Documenso - The Open Source DocuSign Alternative',
|
||||||
description:
|
description:
|
||||||
'Join Documenso, the open signing infrastructure, and get a 10x better signing experience. Pricing starts at $30/mo. forever! Sign in now and enjoy a faster, smarter, and more beautiful document signing process. Integrates with your favorite tools, customizable, and expandable. Support our mission and become a part of our open-source community.',
|
'Join Documenso, the open signing infrastructure, and get a 10x better signing experience. Pricing starts at $30/mo. forever! Sign in now and enjoy a faster, smarter, and more beautiful document signing process. Integrates with your favorite tools, customizable, and expandable. Support our mission and become a part of our open-source community.',
|
||||||
},
|
type: 'website',
|
||||||
};
|
images: ['/opengraph-image.jpg'],
|
||||||
|
},
|
||||||
|
twitter: {
|
||||||
|
site: '@documenso',
|
||||||
|
card: 'summary_large_image',
|
||||||
|
images: ['/opengraph-image.jpg'],
|
||||||
|
description:
|
||||||
|
'Join Documenso, the open signing infrastructure, and get a 10x better signing experience. Pricing starts at $30/mo. forever! Sign in now and enjoy a faster, smarter, and more beautiful document signing process. Integrates with your favorite tools, customizable, and expandable. Support our mission and become a part of our open-source community.',
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
export default async function RootLayout({ children }: { children: React.ReactNode }) {
|
export default async function RootLayout({ children }: { children: React.ReactNode }) {
|
||||||
const flags = await getServerComponentAllFlags();
|
const flags = await getServerComponentAllFlags();
|
||||||
|
|||||||
@ -238,7 +238,7 @@ export const TransferTeamDialog = ({
|
|||||||
<Alert variant="neutral">
|
<Alert variant="neutral">
|
||||||
<AlertDescription>
|
<AlertDescription>
|
||||||
<ul className="list-outside list-disc space-y-2 pl-4">
|
<ul className="list-outside list-disc space-y-2 pl-4">
|
||||||
{IS_BILLING_ENABLED && (
|
{IS_BILLING_ENABLED() && (
|
||||||
// Temporary removed.
|
// Temporary removed.
|
||||||
// <li>
|
// <li>
|
||||||
// {form.getValues('clearPaymentMethods')
|
// {form.getValues('clearPaymentMethods')
|
||||||
|
|||||||
@ -48,7 +48,7 @@ export const DesktopNav = ({ className, ...props }: DesktopNavProps) => {
|
|||||||
</Button>
|
</Button>
|
||||||
</Link>
|
</Link>
|
||||||
|
|
||||||
{IS_BILLING_ENABLED && (
|
{IS_BILLING_ENABLED() && (
|
||||||
<Link href={billingPath}>
|
<Link href={billingPath}>
|
||||||
<Button
|
<Button
|
||||||
variant="ghost"
|
variant="ghost"
|
||||||
|
|||||||
@ -56,7 +56,7 @@ export const MobileNav = ({ className, ...props }: MobileNavProps) => {
|
|||||||
</Button>
|
</Button>
|
||||||
</Link>
|
</Link>
|
||||||
|
|
||||||
{IS_BILLING_ENABLED && (
|
{IS_BILLING_ENABLED() && (
|
||||||
<Link href={billingPath}>
|
<Link href={billingPath}>
|
||||||
<Button
|
<Button
|
||||||
variant="ghost"
|
variant="ghost"
|
||||||
|
|||||||
@ -16,7 +16,7 @@ export type GetServerLimitsOptions = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const getServerLimits = async ({ email, teamId }: GetServerLimitsOptions) => {
|
export const getServerLimits = async ({ email, teamId }: GetServerLimitsOptions) => {
|
||||||
if (!IS_BILLING_ENABLED) {
|
if (!IS_BILLING_ENABLED()) {
|
||||||
return {
|
return {
|
||||||
quota: SELFHOSTED_PLAN_LIMITS,
|
quota: SELFHOSTED_PLAN_LIMITS,
|
||||||
remaining: SELFHOSTED_PLAN_LIMITS,
|
remaining: SELFHOSTED_PLAN_LIMITS,
|
||||||
|
|||||||
@ -9,7 +9,7 @@ export const NEXT_PUBLIC_MARKETING_URL = () => env('NEXT_PUBLIC_MARKETING_URL');
|
|||||||
|
|
||||||
export const IS_APP_MARKETING = () => NEXT_PUBLIC_PROJECT() === 'marketing';
|
export const IS_APP_MARKETING = () => NEXT_PUBLIC_PROJECT() === 'marketing';
|
||||||
export const IS_APP_WEB = () => NEXT_PUBLIC_PROJECT() === 'web';
|
export const IS_APP_WEB = () => NEXT_PUBLIC_PROJECT() === 'web';
|
||||||
export const IS_BILLING_ENABLED = () => env('NEXT_PUBLIC_FEATURE_BILLING_ENABLED');
|
export const IS_BILLING_ENABLED = () => env('NEXT_PUBLIC_FEATURE_BILLING_ENABLED') === 'true';
|
||||||
|
|
||||||
export const APP_FOLDER = () => (IS_APP_MARKETING() ? 'marketing' : 'web');
|
export const APP_FOLDER = () => (IS_APP_MARKETING() ? 'marketing' : 'web');
|
||||||
|
|
||||||
|
|||||||
@ -8,9 +8,8 @@ import { renderCustomEmailTemplate } from '@documenso/lib/utils/render-custom-em
|
|||||||
import { prisma } from '@documenso/prisma';
|
import { prisma } from '@documenso/prisma';
|
||||||
import { DocumentStatus, RecipientRole, SendStatus } from '@documenso/prisma/client';
|
import { DocumentStatus, RecipientRole, SendStatus } from '@documenso/prisma/client';
|
||||||
|
|
||||||
import { RECIPIENT_ROLES_DESCRIPTION } from '../../constants/recipient-roles';
|
|
||||||
|
|
||||||
import { NEXT_PUBLIC_WEBAPP_URL } from '../../constants/app';
|
import { NEXT_PUBLIC_WEBAPP_URL } from '../../constants/app';
|
||||||
|
import { RECIPIENT_ROLES_DESCRIPTION } from '../../constants/recipient-roles';
|
||||||
|
|
||||||
export type SendDocumentOptions = {
|
export type SendDocumentOptions = {
|
||||||
documentId: number;
|
documentId: number;
|
||||||
@ -76,10 +75,6 @@ export const sendDocument = async ({ documentId, userId }: SendDocumentOptions)
|
|||||||
'document.name': document.title,
|
'document.name': document.title,
|
||||||
};
|
};
|
||||||
|
|
||||||
if (recipient.sendStatus === SendStatus.SENT) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const assetBaseUrl = NEXT_PUBLIC_WEBAPP_URL() || 'http://localhost:3000';
|
const assetBaseUrl = NEXT_PUBLIC_WEBAPP_URL() || 'http://localhost:3000';
|
||||||
const signDocumentLink = `${NEXT_PUBLIC_WEBAPP_URL()}/sign/${recipient.token}`;
|
const signDocumentLink = `${NEXT_PUBLIC_WEBAPP_URL()}/sign/${recipient.token}`;
|
||||||
|
|
||||||
|
|||||||
@ -46,7 +46,7 @@ export const acceptTeamInvitation = async ({ userId, teamId }: AcceptTeamInvitat
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
if (IS_BILLING_ENABLED && team.subscription) {
|
if (IS_BILLING_ENABLED() && team.subscription) {
|
||||||
const numberOfSeats = await tx.teamMember.count({
|
const numberOfSeats = await tx.teamMember.count({
|
||||||
where: {
|
where: {
|
||||||
teamId: teamMemberInvite.teamId,
|
teamId: teamMemberInvite.teamId,
|
||||||
|
|||||||
@ -12,7 +12,7 @@ export const createTeamBillingPortal = async ({
|
|||||||
userId,
|
userId,
|
||||||
teamId,
|
teamId,
|
||||||
}: CreateTeamBillingPortalOptions) => {
|
}: CreateTeamBillingPortalOptions) => {
|
||||||
if (!IS_BILLING_ENABLED) {
|
if (!IS_BILLING_ENABLED()) {
|
||||||
throw new Error('Billing is not enabled');
|
throw new Error('Billing is not enabled');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -57,10 +57,10 @@ export const createTeam = async ({
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
let isPaymentRequired = IS_BILLING_ENABLED;
|
let isPaymentRequired = IS_BILLING_ENABLED();
|
||||||
let customerId: string | null = null;
|
let customerId: string | null = null;
|
||||||
|
|
||||||
if (IS_BILLING_ENABLED) {
|
if (IS_BILLING_ENABLED()) {
|
||||||
const communityPlanPriceIds = await getCommunityPlanPriceIds();
|
const communityPlanPriceIds = await getCommunityPlanPriceIds();
|
||||||
|
|
||||||
isPaymentRequired = !subscriptionsContainsActiveCommunityPlan(
|
isPaymentRequired = !subscriptionsContainsActiveCommunityPlan(
|
||||||
|
|||||||
@ -85,7 +85,7 @@ export const deleteTeamMembers = async ({
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
if (IS_BILLING_ENABLED && team.subscription) {
|
if (IS_BILLING_ENABLED() && team.subscription) {
|
||||||
const numberOfSeats = await tx.teamMember.count({
|
const numberOfSeats = await tx.teamMember.count({
|
||||||
where: {
|
where: {
|
||||||
teamId,
|
teamId,
|
||||||
|
|||||||
@ -42,7 +42,7 @@ export const leaveTeam = async ({ userId, teamId }: LeaveTeamOptions) => {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
if (IS_BILLING_ENABLED && team.subscription) {
|
if (IS_BILLING_ENABLED() && team.subscription) {
|
||||||
const numberOfSeats = await tx.teamMember.count({
|
const numberOfSeats = await tx.teamMember.count({
|
||||||
where: {
|
where: {
|
||||||
teamId,
|
teamId,
|
||||||
|
|||||||
@ -49,7 +49,7 @@ export const transferTeamOwnership = async ({ token }: TransferTeamOwnershipOpti
|
|||||||
|
|
||||||
let teamSubscription: Stripe.Subscription | null = null;
|
let teamSubscription: Stripe.Subscription | null = null;
|
||||||
|
|
||||||
if (IS_BILLING_ENABLED) {
|
if (IS_BILLING_ENABLED()) {
|
||||||
teamSubscription = await transferTeamSubscription({
|
teamSubscription = await transferTeamSubscription({
|
||||||
user: newOwnerUser,
|
user: newOwnerUser,
|
||||||
team,
|
team,
|
||||||
|
|||||||
@ -68,7 +68,7 @@ export const createUser = async ({ name, email, password, signature }: CreateUse
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!IS_BILLING_ENABLED) {
|
if (!IS_BILLING_ENABLED()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -108,7 +108,7 @@ export const createUser = async ({ name, email, password, signature }: CreateUse
|
|||||||
);
|
);
|
||||||
|
|
||||||
// Update the user record with a new or existing Stripe customer record.
|
// Update the user record with a new or existing Stripe customer record.
|
||||||
if (IS_BILLING_ENABLED) {
|
if (IS_BILLING_ENABLED()) {
|
||||||
try {
|
try {
|
||||||
return await getStripeCustomerByUser(user).then((session) => session.user);
|
return await getStripeCustomerByUser(user).then((session) => session.user);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
|||||||
Reference in New Issue
Block a user