Skip to content

Commit f9e7607

Browse files
Tim RoesJoey Marshment-Howell
andcommitted
feat: add banners for manual and auto recharge to billing page (#14011)
Co-authored-by: Joey Marshment-Howell <[email protected]>
1 parent 1129cef commit f9e7607

File tree

3 files changed

+56
-0
lines changed

3 files changed

+56
-0
lines changed

airbyte-webapp/src/locales/en.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1024,6 +1024,7 @@
10241024
"settings.organization.members.title": "Organization members",
10251025
"settings.organization.billing.notSetUp": "Billing has not yet been set up for this organization. Start by adding a payment method.",
10261026
"settings.organization.billing.title": "Billing",
1027+
"settings.organization.billing.manualPaymentStatus": "Reach out to <lnk>Sales</lnk> if you have any questions about your plan.",
10271028
"settings.organization.billing.billingInformation": "Billing information",
10281029
"settings.organization.billing.billingInformationError": "Error loading billing information",
10291030
"settings.organization.billing.update": "Update",
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
import React from "react";
2+
import { useIntl } from "react-intl";
3+
4+
import { Link } from "components/ui/Link";
5+
import { Message } from "components/ui/Message";
6+
7+
import { useCurrentOrganizationInfo } from "core/api";
8+
import { links } from "core/utils/links";
9+
import { useExperiment } from "hooks/services/Experiment";
10+
11+
export const BillingBanners: React.FC = () => {
12+
const { formatMessage } = useIntl();
13+
const { billing } = useCurrentOrganizationInfo();
14+
const isAutoRechargeEnabled = useExperiment("billing.autoRecharge", false);
15+
16+
return (
17+
<>
18+
{billing?.paymentStatus === "manual" && (
19+
<Message
20+
type="info"
21+
text={formatMessage(
22+
{ id: "settings.organization.billing.manualPaymentStatus" },
23+
{
24+
lnk: (node: React.ReactNode) => (
25+
<Link opensInNewTab to={links.contactSales} variant="primary">
26+
{node}
27+
</Link>
28+
),
29+
}
30+
)}
31+
/>
32+
)}
33+
{isAutoRechargeEnabled && (
34+
<Message
35+
data-testid="autoRechargeEnabledBanner"
36+
text={formatMessage(
37+
{
38+
id: "credits.autoRechargeEnabled",
39+
},
40+
{
41+
contact: (node: React.ReactNode) => (
42+
<Link opensInNewTab to="mailto:[email protected]" variant="primary">
43+
{node}
44+
</Link>
45+
),
46+
}
47+
)}
48+
/>
49+
)}
50+
</>
51+
);
52+
};

airbyte-webapp/src/packages/cloud/views/billing/OrganizationBillingPage/OrganizationBillingPage.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import { Heading } from "components/ui/Heading";
1010

1111
import { useCurrentOrganizationInfo } from "core/api";
1212

13+
import { BillingBanners } from "./BillingBanners";
1314
import { BillingInformation } from "./BillingInformation";
1415
import { Invoices } from "./Invoices";
1516
import { PaymentMethod } from "./PaymentMethod";
@@ -28,6 +29,8 @@ export const OrganizationBillingPage: React.FC = () => {
2829
<FormattedMessage id="settings.organization.billing.title" />
2930
</Heading>
3031

32+
<BillingBanners />
33+
3134
<BorderedTiles>
3235
<BorderedTile>
3336
<BillingInformation />

0 commit comments

Comments
 (0)