1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-09-28 17:55:15 +02:00
unleash.unleash/frontend/src/component/admin/billing/Billing.tsx
Fredrik Strand Oseberg 0dcf28a0f0
Refactor/lazy load (#2842)
Currently our bundle size is clocking in at: 1,798.28 kB │ gzip: 558.42 kB
After the changes: 1,299.32 kB │ gzip: 403.26 kB
2023-01-12 11:34:45 +01:00

61 lines
2.2 KiB
TypeScript

import { PageContent } from 'component/common/PageContent/PageContent';
import { useContext, useEffect } from 'react';
import { ADMIN } from 'component/providers/AccessProvider/permissions';
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
import AccessContext from 'contexts/AccessContext';
import { AdminAlert } from 'component/common/AdminAlert/AdminAlert';
import { useInstanceStatus } from 'hooks/api/getters/useInstanceStatus/useInstanceStatus';
import { Alert } from '@mui/material';
import { BillingDashboard } from './BillingDashboard/BillingDashboard';
import { BillingHistory } from './BillingHistory/BillingHistory';
import useInvoices from 'hooks/api/getters/useInvoices/useInvoices';
export const Billing = () => {
const {
instanceStatus,
isBilling,
refetchInstanceStatus,
refresh,
loading,
} = useInstanceStatus();
const { invoices } = useInvoices();
const { hasAccess } = useContext(AccessContext);
useEffect(() => {
const hardRefresh = async () => {
await refresh();
refetchInstanceStatus();
};
hardRefresh();
}, [refetchInstanceStatus, refresh]);
return (
<div>
<PageContent header="Billing" isLoading={loading}>
<ConditionallyRender
condition={isBilling}
show={
<ConditionallyRender
condition={hasAccess(ADMIN)}
show={() => (
<>
<BillingDashboard
instanceStatus={instanceStatus!}
/>
<BillingHistory data={invoices} />
</>
)}
elseShow={() => <AdminAlert />}
/>
}
elseShow={
<Alert severity="error">
Billing is not enabled for this instance.
</Alert>
}
/>
</PageContent>
</div>
);
};