aws-marketplace-onboarding.tsx 2.6 KB

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