cloud-marketplace-query.ts 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. import { useQuery } from '@tanstack/react-query'
  2. import { cloudMarketplaceKeys } from './keys'
  3. import { get, handleError } from '@/data/fetchers'
  4. import { useProfile } from '@/lib/profile'
  5. import type { ResponseError, UseCustomQueryOptions } from '@/types'
  6. export type CloudMarketplaceOnboardingInfoVariables = {
  7. buyerId: string
  8. }
  9. export async function getCloudMarketplaceOnboardingInfo(
  10. { buyerId }: CloudMarketplaceOnboardingInfoVariables,
  11. signal?: AbortSignal
  12. ) {
  13. const { data, error } = await get(
  14. '/platform/cloud-marketplace/buyers/{buyer_id}/onboarding-info',
  15. {
  16. params: { path: { buyer_id: buyerId } },
  17. signal,
  18. }
  19. )
  20. if (error) handleError(error)
  21. return data
  22. }
  23. export type CloudMarketplaceOnboardingInfo = Awaited<
  24. ReturnType<typeof getCloudMarketplaceOnboardingInfo>
  25. >
  26. export type CloudMarketplaceOnboardingInfoError = ResponseError
  27. export const useCloudMarketplaceOnboardingInfoQuery = <TData = CloudMarketplaceOnboardingInfo>(
  28. { buyerId }: CloudMarketplaceOnboardingInfoVariables,
  29. {
  30. enabled = true,
  31. ...options
  32. }: UseCustomQueryOptions<
  33. CloudMarketplaceOnboardingInfo,
  34. CloudMarketplaceOnboardingInfoError,
  35. TData
  36. > = {}
  37. ) => {
  38. const { profile } = useProfile()
  39. return useQuery<CloudMarketplaceOnboardingInfo, CloudMarketplaceOnboardingInfoError, TData>({
  40. queryKey: cloudMarketplaceKeys.onboardingInfo(buyerId),
  41. queryFn: ({ signal }) => getCloudMarketplaceOnboardingInfo({ buyerId }, signal),
  42. enabled: enabled && profile !== undefined,
  43. ...options,
  44. staleTime: 30 * 60 * 1000,
  45. })
  46. }
  47. export type CloudMarketplaceContractEligibilityVariables = {
  48. buyerId: string
  49. }
  50. export async function getCloudMarketplaceContractLinkingEligibility(
  51. { buyerId }: CloudMarketplaceContractEligibilityVariables,
  52. signal?: AbortSignal
  53. ) {
  54. const { data, error } = await get(
  55. '/platform/cloud-marketplace/buyers/{buyer_id}/contract-linking-eligibility',
  56. {
  57. params: { path: { buyer_id: buyerId } },
  58. signal,
  59. }
  60. )
  61. if (error) handleError(error)
  62. return data
  63. }
  64. export type CloudMarketplaceContractLinkingEligibility = Awaited<
  65. ReturnType<typeof getCloudMarketplaceContractLinkingEligibility>
  66. >
  67. export type CloudMarketplaceContractLinkingIneligibilityReason =
  68. CloudMarketplaceContractLinkingEligibility['eligibility']['reasons'][0]
  69. export type CloudMarketplaceContractEligibilityError = ResponseError
  70. export const useCloudMarketplaceContractLinkingEligibilityQuery = <
  71. TData = CloudMarketplaceContractLinkingEligibility,
  72. >(
  73. { buyerId }: CloudMarketplaceContractEligibilityVariables,
  74. {
  75. enabled = true,
  76. ...options
  77. }: UseCustomQueryOptions<
  78. CloudMarketplaceContractLinkingEligibility,
  79. CloudMarketplaceContractEligibilityError,
  80. TData
  81. > = {}
  82. ) => {
  83. const { profile } = useProfile()
  84. return useQuery<
  85. CloudMarketplaceContractLinkingEligibility,
  86. CloudMarketplaceContractEligibilityError,
  87. TData
  88. >({
  89. queryKey: cloudMarketplaceKeys.contractLinkingEligibility(buyerId),
  90. queryFn: ({ signal }) => getCloudMarketplaceContractLinkingEligibility({ buyerId }, signal),
  91. enabled: enabled && profile !== undefined,
  92. ...options,
  93. staleTime: 60 * 1000,
  94. })
  95. }