mirror of
https://github.com/documenso/documenso.git
synced 2025-11-14 16:51:38 +10:00
fix: hide billing if the feature flag hasn't been passed
This commit is contained in:
@ -1,11 +1,11 @@
|
|||||||
import { useMemo, useState } from "react";
|
import { useState } from "react";
|
||||||
import { classNames } from "@documenso/lib";
|
import { classNames } from "@documenso/lib";
|
||||||
import { STRIPE_PLANS, fetchCheckoutSession, useSubscription } from "@documenso/lib/stripe";
|
import { STRIPE_PLANS, fetchCheckoutSession, useSubscription } from "@documenso/lib/stripe";
|
||||||
import { Button } from "@documenso/ui";
|
import { Button } from "@documenso/ui";
|
||||||
import { Switch } from "@headlessui/react";
|
import { Switch } from "@headlessui/react";
|
||||||
|
|
||||||
export const BillingPlans = () => {
|
export const BillingPlans = () => {
|
||||||
const { subscription, hasSubscription, isLoading } = useSubscription();
|
const { subscription, isLoading } = useSubscription();
|
||||||
const [isAnnual, setIsAnnual] = useState(true);
|
const [isAnnual, setIsAnnual] = useState(true);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@ -22,7 +22,7 @@ export const BillingPlans = () => {
|
|||||||
onChange={setIsAnnual}
|
onChange={setIsAnnual}
|
||||||
className={classNames(
|
className={classNames(
|
||||||
isAnnual ? "bg-neon-600" : "bg-gray-200",
|
isAnnual ? "bg-neon-600" : "bg-gray-200",
|
||||||
"relative inline-flex h-6 w-11 flex-shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors duration-200 ease-in-out focus:outline-none focus:ring-2 focus:ring-neon-600 focus:ring-offset-2"
|
"focus:ring-neon-600 relative inline-flex h-6 w-11 flex-shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors duration-200 ease-in-out focus:outline-none focus:ring-2 focus:ring-offset-2"
|
||||||
)}>
|
)}>
|
||||||
<span
|
<span
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
|
|||||||
@ -4,18 +4,12 @@ import Link from "next/link";
|
|||||||
import { useRouter } from "next/router";
|
import { useRouter } from "next/router";
|
||||||
import { updateUser } from "@documenso/features";
|
import { updateUser } from "@documenso/features";
|
||||||
import { getUser } from "@documenso/lib/api";
|
import { getUser } from "@documenso/lib/api";
|
||||||
import {
|
import { fetchPortalSession, isSubscriptionsEnabled, useSubscription } from "@documenso/lib/stripe";
|
||||||
STRIPE_PLANS,
|
|
||||||
fetchCheckoutSession,
|
|
||||||
fetchPortalSession,
|
|
||||||
isSubscriptionsEnabled,
|
|
||||||
useSubscription,
|
|
||||||
} from "@documenso/lib/stripe";
|
|
||||||
import { SubscriptionStatus } from '@prisma/client'
|
|
||||||
import { Button } from "@documenso/ui";
|
import { Button } from "@documenso/ui";
|
||||||
import { CreditCardIcon, KeyIcon, UserCircleIcon } from "@heroicons/react/24/outline";
|
|
||||||
import { useSession } from "next-auth/react";
|
|
||||||
import { BillingPlans } from "./billing-plans";
|
import { BillingPlans } from "./billing-plans";
|
||||||
|
import { CreditCardIcon, KeyIcon, UserCircleIcon } from "@heroicons/react/24/outline";
|
||||||
|
import { SubscriptionStatus } from "@prisma/client";
|
||||||
|
import { useSession } from "next-auth/react";
|
||||||
|
|
||||||
const subNavigation = [
|
const subNavigation = [
|
||||||
{
|
{
|
||||||
@ -29,14 +23,17 @@ const subNavigation = [
|
|||||||
href: "/settings/password",
|
href: "/settings/password",
|
||||||
icon: KeyIcon,
|
icon: KeyIcon,
|
||||||
current: false,
|
current: false,
|
||||||
},
|
}
|
||||||
{
|
];
|
||||||
|
|
||||||
|
if (process.env.NEXT_PUBLIC_ALLOW_SUBSCRIPTIONS === "true") {
|
||||||
|
subNavigation.push({
|
||||||
name: "Billing",
|
name: "Billing",
|
||||||
href: "/settings/billing",
|
href: "/settings/billing",
|
||||||
icon: CreditCardIcon,
|
icon: CreditCardIcon,
|
||||||
current: false,
|
current: false,
|
||||||
},
|
});
|
||||||
];
|
}
|
||||||
|
|
||||||
function classNames(...classes: any) {
|
function classNames(...classes: any) {
|
||||||
return classes.filter(Boolean).join(" ");
|
return classes.filter(Boolean).join(" ");
|
||||||
@ -189,9 +186,7 @@ export default function Setttings() {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
hidden={
|
hidden={!subNavigation.at(2) || subNavigation.find((e) => e.current)?.name !== subNavigation.at(2)?.name}
|
||||||
subNavigation.find((e) => e.current)?.name !== subNavigation?.[2]?.name
|
|
||||||
}
|
|
||||||
className="min-h-[251px] divide-y divide-gray-200 lg:col-span-9">
|
className="min-h-[251px] divide-y divide-gray-200 lg:col-span-9">
|
||||||
{/* Billing section */}
|
{/* Billing section */}
|
||||||
<div className="py-6 px-4 sm:p-6 lg:pb-8">
|
<div className="py-6 px-4 sm:p-6 lg:pb-8">
|
||||||
@ -204,27 +199,28 @@ export default function Setttings() {
|
|||||||
</p>
|
</p>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
{isSubscriptionsEnabled() && <>
|
{isSubscriptionsEnabled() && (
|
||||||
|
<>
|
||||||
<p className="mt-1 text-sm text-gray-500">
|
<p className="mt-1 text-sm text-gray-500">
|
||||||
Your subscription is currently{" "}
|
Your subscription is currently{" "}
|
||||||
<strong>{subscription?.status && subscription?.status !== SubscriptionStatus.INACTIVE ? "Active" : "Inactive"}</strong>.
|
<strong>
|
||||||
|
{subscription?.status &&
|
||||||
|
subscription?.status !== SubscriptionStatus.INACTIVE
|
||||||
|
? "Active"
|
||||||
|
: "Inactive"}
|
||||||
|
</strong>
|
||||||
|
.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
{subscription?.status === SubscriptionStatus.PAST_DUE && (
|
{subscription?.status === SubscriptionStatus.PAST_DUE && (
|
||||||
<p className="mt-1 text-sm text-red-500">
|
<p className="mt-1 text-sm text-red-500">
|
||||||
Your subscription is past due. Please update your payment details to continue
|
Your subscription is past due. Please update your payment details to
|
||||||
using the service without interruption.
|
continue using the service without interruption.
|
||||||
</p>
|
</p>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
<p className="mt-1 text-sm text-gray-500">
|
|
||||||
Lorem ipsum dolor sit amet consectetur adipisicing elit. Est consectetur magnam
|
|
||||||
illo aperiam expedita porro eos eum nam sapiente.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<div className="mt-8">
|
<div className="mt-8">
|
||||||
<div className="grid grid-cols-1 lg:grid-cols-2">
|
<div className="grid grid-cols-1 lg:grid-cols-2">
|
||||||
|
|
||||||
<BillingPlans />
|
<BillingPlans />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -245,7 +241,8 @@ export default function Setttings() {
|
|||||||
</Button>
|
</Button>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
</>}
|
</>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user