Merge branch 'main' into experiment/self-sign

This commit is contained in:
Ephraim Duncan
2024-11-15 20:33:34 +00:00
committed by GitHub
4 changed files with 73 additions and 52 deletions

View File

@ -12,9 +12,10 @@ import { createBillingPortal } from './create-billing-portal.action';
export type BillingPortalButtonProps = { export type BillingPortalButtonProps = {
buttonProps?: React.ComponentProps<typeof Button>; buttonProps?: React.ComponentProps<typeof Button>;
children?: React.ReactNode;
}; };
export const BillingPortalButton = ({ buttonProps }: BillingPortalButtonProps) => { export const BillingPortalButton = ({ buttonProps, children }: BillingPortalButtonProps) => {
const { _ } = useLingui(); const { _ } = useLingui();
const { toast } = useToast(); const { toast } = useToast();
@ -63,7 +64,7 @@ export const BillingPortalButton = ({ buttonProps }: BillingPortalButtonProps) =
onClick={async () => handleFetchPortalUrl()} onClick={async () => handleFetchPortalUrl()}
loading={isFetchingPortalUrl} loading={isFetchingPortalUrl}
> >
<Trans>Manage Subscription</Trans> {children || <Trans>Manage Subscription</Trans>}
</Button> </Button>
); );
}; };

View File

@ -67,6 +67,8 @@ export default async function BillingSettingsPage() {
!subscription || subscription.status === SubscriptionStatus.INACTIVE; !subscription || subscription.status === SubscriptionStatus.INACTIVE;
return ( return (
<div>
<div className="flex flex-row items-end justify-between">
<div> <div>
<h3 className="text-2xl font-semibold"> <h3 className="text-2xl font-semibold">
<Trans>Billing</Trans> <Trans>Billing</Trans>
@ -102,12 +104,16 @@ export default async function BillingSettingsPage() {
{subscription.cancelAtPeriodEnd ? ( {subscription.cancelAtPeriodEnd ? (
<span> <span>
end on{' '} end on{' '}
<span className="font-semibold">{i18n.date(subscription.periodEnd)}.</span> <span className="font-semibold">
{i18n.date(subscription.periodEnd)}.
</span>
</span> </span>
) : ( ) : (
<span> <span>
automatically renew on{' '} automatically renew on{' '}
<span className="font-semibold">{i18n.date(subscription.periodEnd)}.</span> <span className="font-semibold">
{i18n.date(subscription.periodEnd)}.
</span>
</span> </span>
)} )}
</span> </span>
@ -123,6 +129,14 @@ export default async function BillingSettingsPage() {
)) ))
.otherwise(() => null)} .otherwise(() => null)}
</div> </div>
</div>
{isMissingOrInactiveOrFreePlan && (
<BillingPortalButton>
<Trans>Manage billing</Trans>
</BillingPortalButton>
)}
</div>
<hr className="my-4" /> <hr className="my-4" />

View File

@ -168,6 +168,9 @@ export const ApiContractV1 = c.router(
500: ZUnsuccessfulResponseSchema, 500: ZUnsuccessfulResponseSchema,
}, },
summary: 'Send a document for signing', summary: 'Send a document for signing',
// I'm aware this should be in the variable itself, which it is, however it's difficult for users to find in our current UI.
description:
'Notes\n\n`sendEmail` - Whether to send an email to the recipients asking them to action the document. If you disable this, you will need to manually distribute the document to the recipients using the generated signing links. Defaults to true',
}, },
resendDocument: { resendDocument: {

View File

@ -67,7 +67,10 @@ export type TSuccessfulDocumentResponseSchema = z.infer<typeof ZSuccessfulDocume
export const ZSendDocumentForSigningMutationSchema = z export const ZSendDocumentForSigningMutationSchema = z
.object({ .object({
sendEmail: z.boolean().optional().default(true), sendEmail: z.boolean().optional().default(true).openapi({
description:
'Whether to send an email to the recipients asking them to action the document. If you disable this, you will need to manually distribute the document to the recipients using the generated signing links.',
}),
}) })
.or(z.literal('').transform(() => ({ sendEmail: true }))); .or(z.literal('').transform(() => ({ sendEmail: true })));