aws-marketplace-onboarding.tsx76 lines · main
1import { useRouter } from 'next/router'
2
3import AwsMarketplaceContractNotLinkable from '../components/interfaces/Organization/CloudMarketplace/AwsMarketplaceContractNotLinkable'
4import AwsMarketplaceCreateNewOrg from '../components/interfaces/Organization/CloudMarketplace/AwsMarketplaceCreateNewOrg'
5import { AwsMarketplaceLinkExistingOrg } from '../components/interfaces/Organization/CloudMarketplace/AwsMarketplaceLinkExistingOrg'
6import AwsMarketplaceOnboardingPlaceholder from '../components/interfaces/Organization/CloudMarketplace/AwsMarketplaceOnboardingPlaceholder'
7import { useCloudMarketplaceContractLinkingEligibilityQuery } from '../components/interfaces/Organization/CloudMarketplace/cloud-marketplace-query'
8import LinkAwsMarketplaceLayout from '../components/layouts/LinkAwsMarketplaceLayout'
9import {
10 ScaffoldContainer,
11 ScaffoldDivider,
12 ScaffoldHeader,
13 ScaffoldTitle,
14} from '../components/layouts/Scaffold'
15import { useOrganizationsQuery } from '../data/organizations/organizations-query'
16import type { NextPageWithLayout } from '@/types'
17
18const AwsMarketplaceOnboarding: NextPageWithLayout = () => {
19 const {
20 query: { buyer_id: buyerId },
21 } = useRouter()
22
23 const {
24 data: organizations,
25 isFetched: isOrganizationsFetched,
26 isSuccess: wasOrganizationsRequestSuccessful,
27 } = useOrganizationsQuery()
28
29 const {
30 data: contractLinkingEligibility,
31 isFetched: isContractLinkingEligibilityFetched,
32 isSuccess: wasEligibilityRequestSuccessful,
33 } = useCloudMarketplaceContractLinkingEligibilityQuery({
34 buyerId: buyerId as string,
35 })
36
37 const renderContent = () => {
38 if (!isOrganizationsFetched || !isContractLinkingEligibilityFetched) {
39 return <AwsMarketplaceOnboardingPlaceholder />
40 }
41
42 if (!wasOrganizationsRequestSuccessful || !wasEligibilityRequestSuccessful) {
43 return <p className="mt-4">Error loading AWS Marketplace setup page. Try again later.</p>
44 }
45
46 if (!contractLinkingEligibility.eligibility.is_eligible) {
47 return (
48 <AwsMarketplaceContractNotLinkable
49 reason={contractLinkingEligibility.eligibility.reasons[0]}
50 />
51 )
52 }
53
54 if (organizations?.length) {
55 return <AwsMarketplaceLinkExistingOrg organizations={organizations} />
56 }
57
58 return <AwsMarketplaceCreateNewOrg />
59 }
60
61 return (
62 <ScaffoldContainer>
63 <ScaffoldHeader>
64 <ScaffoldTitle>AWS Marketplace Setup</ScaffoldTitle>
65 </ScaffoldHeader>
66 <ScaffoldDivider />
67 {renderContent()}
68 </ScaffoldContainer>
69 )
70}
71
72AwsMarketplaceOnboarding.getLayout = (page) => (
73 <LinkAwsMarketplaceLayout>{page}</LinkAwsMarketplaceLayout>
74)
75
76export default AwsMarketplaceOnboarding