diff --git a/packages/api-v4/.changeset/pr-13396-tech-stories-1770973228854.md b/packages/api-v4/.changeset/pr-13396-tech-stories-1770973228854.md new file mode 100644 index 00000000000..58cf6cd6c7b --- /dev/null +++ b/packages/api-v4/.changeset/pr-13396-tech-stories-1770973228854.md @@ -0,0 +1,5 @@ +--- +"@linode/api-v4": Tech Stories +--- + +Clean up unused marketplace v2 apiv4 endpoints ([#13396](https://github.com/linode/manager/pull/13396)) diff --git a/packages/api-v4/src/marketplace/marketplace.ts b/packages/api-v4/src/marketplace/marketplace.ts index e0de137a852..2181943f4fe 100644 --- a/packages/api-v4/src/marketplace/marketplace.ts +++ b/packages/api-v4/src/marketplace/marketplace.ts @@ -1,62 +1,9 @@ import { createPartnerReferralSchema } from '@linode/validation'; import { BETA_API_ROOT } from 'src/constants'; -import Request, { - setData, - setMethod, - setParams, - setURL, - setXFilter, -} from 'src/request'; +import Request, { setData, setMethod, setURL } from 'src/request'; -import type { - MarketplaceCategory, - MarketplacePartner, - MarketplacePartnerReferralPayload, - MarketplaceProduct, - MarketplaceType, -} from './types'; -import type { Filter, ResourcePage as Page, Params } from 'src/types'; - -export const getMarketplaceProducts = (params?: Params, filters?: Filter) => - Request>( - setURL(`${BETA_API_ROOT}/marketplace/products`), - setMethod('GET'), - setParams(params), - setXFilter(filters), - ); - -export const getMarketplaceProduct = (productId: number) => - Request( - setURL( - `${BETA_API_ROOT}/marketplace/products/${encodeURIComponent(productId)}/details`, - ), - setMethod('GET'), - ); - -export const getMarketplaceCategories = (params?: Params, filters?: Filter) => - Request>( - setURL(`${BETA_API_ROOT}/marketplace/categories`), - setMethod('GET'), - setParams(params), - setXFilter(filters), - ); - -export const getMarketplaceTypes = (params?: Params, filters?: Filter) => - Request>( - setURL(`${BETA_API_ROOT}/marketplace/types`), - setMethod('GET'), - setParams(params), - setXFilter(filters), - ); - -export const getMarketplacePartners = (params?: Params, filters?: Filter) => - Request>( - setURL(`${BETA_API_ROOT}/marketplace/partners`), - setMethod('GET'), - setParams(params), - setXFilter(filters), - ); +import type { MarketplacePartnerReferralPayload } from './types'; export const createPartnerReferral = ( data: MarketplacePartnerReferralPayload, diff --git a/packages/api-v4/src/marketplace/types.ts b/packages/api-v4/src/marketplace/types.ts index 7681c1fb343..ee8b4525fbd 100644 --- a/packages/api-v4/src/marketplace/types.ts +++ b/packages/api-v4/src/marketplace/types.ts @@ -1,62 +1,3 @@ -export interface MarketplaceProductDetail { - documentation?: string; - overview?: { - description: string; - }; - pricing?: string; - support?: string; -} - -export interface MarketplaceProduct { - category_ids: number[]; - created_at: string; - created_by: string; - details?: MarketplaceProductDetail; - id: number; - info_banner?: string; - logo_url: string; - name: string; - partner_id: number; - product_tags?: string[]; - short_description: string; - tile_tag?: string; - type_id: number; - updated_at?: string; - updated_by?: string; -} - -export interface MarketplaceCategory { - created_at: string; - created_by: string; - id: number; - name: string; - products_count: number; - updated_at?: string; - updated_by?: string; -} - -export interface MarketplaceType { - created_at: string; - created_by: string; - id: number; - name: string; - products_count: number; - updated_at?: string; - updated_by?: string; -} - -export interface MarketplacePartner { - created_at: string; - created_by: string; - id: number; - logo_url_dark_mode: string; - logo_url_light_mode: string; - name: string; - updated_at?: string; - updated_by?: string; - url: string; -} - export interface MarketplacePartnerReferralPayload { account_executive_email?: string; additional_emails?: string[]; diff --git a/packages/manager/.changeset/pr-13396-tech-stories-1770973195861.md b/packages/manager/.changeset/pr-13396-tech-stories-1770973195861.md new file mode 100644 index 00000000000..8bfbc7f3768 --- /dev/null +++ b/packages/manager/.changeset/pr-13396-tech-stories-1770973195861.md @@ -0,0 +1,5 @@ +--- +"@linode/manager": Tech Stories +--- + +Clean up unused marketplace v2 mocks ([#13396](https://github.com/linode/manager/pull/13396)) diff --git a/packages/manager/src/mocks/serverHandlers.ts b/packages/manager/src/mocks/serverHandlers.ts index b0c47e8b4ee..3a0a2c5cae4 100644 --- a/packages/manager/src/mocks/serverHandlers.ts +++ b/packages/manager/src/mocks/serverHandlers.ts @@ -21,10 +21,6 @@ import { linodeStatsFactory, linodeTransferFactory, linodeTypeFactory, - marketplaceCategoryFactory, - marketplacePartnersFactory, - marketplaceProductFactory, - marketplaceTypeFactory, nodeBalancerConfigFactory, nodeBalancerConfigNodeFactory, nodeBalancerFactory, @@ -706,36 +702,6 @@ const netLoadBalancers = [ ]; const marketplace = [ - http.get('*/v4beta/marketplace/products', () => { - const marketplaceProduct = marketplaceProductFactory.buildList(10); - return HttpResponse.json(makeResourcePage([...marketplaceProduct])); - }), - http.get('*/v4beta/marketplace/products/:productId/details', () => { - const marketplaceProductDetail = marketplaceProductFactory.build({ - details: { - overview: { - description: - 'This is a detailed description of the marketplace product.', - }, - pricing: 'Pricing information goes here.', - documentation: 'Documentation link or information goes here.', - support: 'Support information goes here.', - }, - }); - return HttpResponse.json(marketplaceProductDetail); - }), - http.get('*/v4beta/marketplace/categories', () => { - const marketplaceCategory = marketplaceCategoryFactory.buildList(10); - return HttpResponse.json(makeResourcePage([...marketplaceCategory])); - }), - http.get('*/v4beta/marketplace/types', () => { - const marketplaceType = marketplaceTypeFactory.buildList(100); - return HttpResponse.json(makeResourcePage([...marketplaceType])); - }), - http.get('*/v4beta/marketplace/partners', () => { - const marketplacePartner = marketplacePartnersFactory.buildList(100); - return HttpResponse.json(makeResourcePage([...marketplacePartner])); - }), http.post('*/v4beta/marketplace/referral', async () => { await sleep(2000); return HttpResponse.json({}); diff --git a/packages/queries/.changeset/pr-13396-tech-stories-1770973213452.md b/packages/queries/.changeset/pr-13396-tech-stories-1770973213452.md new file mode 100644 index 00000000000..2dc6f6ba0d4 --- /dev/null +++ b/packages/queries/.changeset/pr-13396-tech-stories-1770973213452.md @@ -0,0 +1,5 @@ +--- +"@linode/queries": Tech Stories +--- + +Clean up unused marketplace v2 queries ([#13396](https://github.com/linode/manager/pull/13396)) diff --git a/packages/queries/src/marketplace/index.ts b/packages/queries/src/marketplace/index.ts index ca0b44a0997..cf6b0c2364e 100644 --- a/packages/queries/src/marketplace/index.ts +++ b/packages/queries/src/marketplace/index.ts @@ -1,3 +1 @@ -export * from './keys'; export * from './marketplace'; -export * from './requests'; diff --git a/packages/queries/src/marketplace/keys.ts b/packages/queries/src/marketplace/keys.ts deleted file mode 100644 index c5efa14b917..00000000000 --- a/packages/queries/src/marketplace/keys.ts +++ /dev/null @@ -1,109 +0,0 @@ -import { - getMarketplaceCategories, - getMarketplacePartners, - getMarketplaceProduct, - getMarketplaceProducts, - getMarketplaceTypes, -} from '@linode/api-v4'; -import { createQueryKeys } from '@lukemorales/query-key-factory'; - -import { - getAllMarketplaceCategories, - getAllMarketplacePartners, - getAllMarketplaceProducts, - getAllMarketplaceTypes, -} from './requests'; - -import type { Filter, Params } from '@linode/api-v4'; - -export const marketplaceQueries = createQueryKeys('marketplace', { - product: (productId: number) => ({ - queryFn: () => getMarketplaceProduct(productId), - queryKey: [productId], - }), - products: { - contextQueries: { - all: (params: Params = {}, filter: Filter = {}) => ({ - queryFn: () => getAllMarketplaceProducts(params, filter), - queryKey: [params, filter], - }), - infinite: (filter: Filter = {}) => ({ - queryFn: ({ pageParam }) => - getMarketplaceProducts( - // Default page_size for infinite products list is 30 as we are showing 6 products at a time - { page: pageParam as number, page_size: 30 }, - filter, - ), - queryKey: [filter], - }), - paginated: (params: Params = {}, filter: Filter = {}) => ({ - queryFn: () => getMarketplaceProducts(params, filter), - queryKey: [params, filter], - }), - }, - queryKey: null, - }, - categories: { - contextQueries: { - all: (params: Params = {}, filter: Filter = {}) => ({ - queryFn: () => getAllMarketplaceCategories(params, filter), - queryKey: [params, filter], - }), - infinite: (filter: Filter = {}) => ({ - queryFn: ({ pageParam }) => - getMarketplaceCategories( - { page: pageParam as number, page_size: 25 }, - filter, - ), - queryKey: [filter], - }), - paginated: (params: Params = {}, filter: Filter = {}) => ({ - queryFn: () => getMarketplaceCategories(params, filter), - queryKey: [params, filter], - }), - }, - queryKey: null, - }, - types: { - contextQueries: { - all: (params: Params = {}, filter: Filter = {}) => ({ - queryFn: () => getAllMarketplaceTypes(params, filter), - queryKey: [params, filter], - }), - infinite: (filter: Filter = {}) => ({ - queryFn: ({ pageParam }) => - getMarketplaceTypes( - { page: pageParam as number, page_size: 25 }, - filter, - ), - queryKey: [filter], - }), - paginated: (params: Params = {}, filter: Filter = {}) => ({ - queryFn: () => getMarketplaceTypes(params, filter), - queryKey: [params, filter], - }), - }, - queryKey: null, - }, - partners: { - contextQueries: { - all: (params: Params = {}, filter: Filter = {}) => ({ - queryFn: () => getAllMarketplacePartners(params, filter), - queryKey: [params, filter], - }), - infinite: (filter: Filter = {}) => ({ - queryFn: ({ pageParam }) => - getMarketplacePartners( - { page: pageParam as number, page_size: 25 }, - filter, - ), - queryKey: [filter], - }), - paginated: (params: Params = {}, filter: Filter = {}) => ({ - queryFn: () => getMarketplacePartners(params, filter), - queryKey: [params, filter], - }), - }, - queryKey: null, - }, -}); diff --git a/packages/queries/src/marketplace/marketplace.ts b/packages/queries/src/marketplace/marketplace.ts index b9ee275cb79..c6078314d63 100644 --- a/packages/queries/src/marketplace/marketplace.ts +++ b/packages/queries/src/marketplace/marketplace.ts @@ -1,224 +1,13 @@ import { createPartnerReferral } from '@linode/api-v4'; -import { - keepPreviousData, - useInfiniteQuery, - useMutation, - useQuery, - useQueryClient, -} from '@tanstack/react-query'; +import { useMutation, useQueryClient } from '@tanstack/react-query'; import { accountQueries } from '../account'; -import { queryPresets } from '../base'; -import { marketplaceQueries } from './keys'; import type { APIError, - Filter, - MarketplaceCategory, - MarketplacePartner, MarketplacePartnerReferralPayload, - MarketplaceProduct, - MarketplaceType, - Params, - ResourcePage, } from '@linode/api-v4'; -export const useMarketplaceProductsQuery = ( - params: Params, - filter: Filter, - enabled: boolean = true, -) => - useQuery, APIError[]>({ - ...marketplaceQueries.products._ctx.paginated(params, filter), - enabled, - placeholderData: keepPreviousData, - }); - -export const useAllMarketplaceProductsQuery = ( - params: Params = {}, - filter: Filter = {}, - enabled: boolean = true, -) => - useQuery({ - ...marketplaceQueries.products._ctx.all(params, filter), - enabled, - }); - -export const useInfiniteMarketplaceProductsQuery = ( - filter: Filter, - enabled: boolean, -) => - useInfiniteQuery, APIError[]>({ - ...marketplaceQueries.products._ctx.infinite(filter), - enabled, - getNextPageParam: ({ page, pages }) => { - if (page === pages) { - return undefined; - } - return page + 1; - }, - initialPageParam: 1, - retry: false, - }); - -export const useMarketplaceProductQuery = ( - productId: number, - enabled: boolean = true, -) => - useQuery({ - ...marketplaceQueries.product(productId), - enabled, - }); - -export const useMarketplaceCategoriesQuery = ( - params: Params, - filter: Filter, - enabled: boolean = true, -) => - useQuery, APIError[]>({ - ...marketplaceQueries.categories._ctx.paginated(params, filter), - enabled, - placeholderData: keepPreviousData, - }); - -export const useAllMarketplaceCategoriesQuery = ( - params: Params = {}, - filter: Filter = {}, - enabled: boolean = true, -) => - useQuery({ - ...marketplaceQueries.categories._ctx.all(params, filter), - enabled, - }); - -export const useInfiniteMarketplaceCategoriesQuery = ( - filter: Filter, - enabled: boolean, -) => - useInfiniteQuery, APIError[]>({ - ...marketplaceQueries.categories._ctx.infinite(filter), - enabled, - getNextPageParam: ({ page, pages }) => { - if (page === pages) { - return undefined; - } - return page + 1; - }, - initialPageParam: 1, - retry: false, - }); - -export const useMarketplaceTypesQuery = ( - params: Params, - filter: Filter, - enabled: boolean = true, -) => - useQuery, APIError[]>({ - ...marketplaceQueries.types._ctx.paginated(params, filter), - enabled, - placeholderData: keepPreviousData, - }); - -export const useAllMarketplaceTypesQuery = ( - params: Params = {}, - filter: Filter = {}, - enabled: boolean = true, -) => - useQuery({ - ...marketplaceQueries.types._ctx.all(params, filter), - enabled, - }); - -export const useAllMarketplaceTypesMapQuery = ( - params: Params = {}, - filter: Filter = {}, - enabled: boolean = true, -) => - useQuery, APIError[]>({ - ...marketplaceQueries.types._ctx.all(params, filter), - enabled, - select: (types: MarketplaceType[]) => { - const typesById: Record = {}; - for (const type of types) { - typesById[type.id] = type; - } - return typesById; - }, - }); - -export const useInfiniteMarketplaceTypesQuery = ( - filter: Filter, - enabled: boolean, -) => - useInfiniteQuery, APIError[]>({ - ...marketplaceQueries.types._ctx.infinite(filter), - enabled, - getNextPageParam: ({ page, pages }) => { - if (page === pages) { - return undefined; - } - return page + 1; - }, - initialPageParam: 1, - retry: false, - }); - -export const useMarketplacePartnersQuery = ( - params: Params, - filter: Filter, - enabled: boolean = true, -) => - useQuery, APIError[]>({ - ...marketplaceQueries.partners._ctx.paginated(params, filter), - enabled, - placeholderData: keepPreviousData, - }); - -export const useAllMarketplacePartnersQuery = ( - params: Params = {}, - filter: Filter = {}, - enabled: boolean = true, -) => - useQuery({ - ...marketplaceQueries.partners._ctx.all(params, filter), - enabled, - }); - -export const useAllMarketplacePartnersMapQuery = ( - params: Params = {}, - filter: Filter = {}, - enabled: boolean = true, -) => - useQuery, APIError[]>({ - ...marketplaceQueries.partners._ctx.all(params, filter), - enabled, - ...queryPresets.longLived, - select: (partners: MarketplacePartner[]) => { - const partnersById: Record = {}; - for (const partner of partners) { - partnersById[partner.id] = partner; - } - return partnersById; - }, - }); - -export const useInfiniteMarketplacePartnersQuery = ( - filter: Filter, - enabled: boolean, -) => - useInfiniteQuery, APIError[]>({ - ...marketplaceQueries.partners._ctx.infinite(filter), - enabled, - getNextPageParam: ({ page, pages }) => { - if (page === pages) { - return undefined; - } - return page + 1; - }, - initialPageParam: 1, - retry: false, - }); - export const useCreatePartnerReferralMutation = () => { const queryClient = useQueryClient(); return useMutation<{}, APIError[], MarketplacePartnerReferralPayload>({ diff --git a/packages/queries/src/marketplace/requests.ts b/packages/queries/src/marketplace/requests.ts deleted file mode 100644 index 5ae6b21d0d2..00000000000 --- a/packages/queries/src/marketplace/requests.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { - getMarketplaceCategories, - getMarketplacePartners, - getMarketplaceProducts, - getMarketplaceTypes, -} from '@linode/api-v4'; -import { getAll } from '@linode/utilities'; - -import type { - Filter, - MarketplaceCategory, - MarketplacePartner, - MarketplaceProduct, - MarketplaceType, - Params, -} from '@linode/api-v4'; - -export const getAllMarketplaceProducts = ( - passedParams: Params = {}, - passedFilter: Filter = {}, -) => - getAll((params, filter) => - getMarketplaceProducts( - { ...params, ...passedParams }, - { ...filter, ...passedFilter }, - ), - )().then((data) => data.data); - -export const getAllMarketplaceCategories = ( - passedParams: Params = {}, - passedFilter: Filter = {}, -) => - getAll((params, filter) => - getMarketplaceCategories( - { ...params, ...passedParams }, - { ...filter, ...passedFilter }, - ), - )().then((data) => data.data); - -export const getAllMarketplaceTypes = ( - passedParams: Params = {}, - passedFilter: Filter = {}, -) => - getAll((params, filter) => - getMarketplaceTypes( - { ...params, ...passedParams }, - { ...filter, ...passedFilter }, - ), - )().then((data) => data.data); - -export const getAllMarketplacePartners = ( - passedParams: Params = {}, - passedFilter: Filter = {}, -) => - getAll((params, filter) => - getMarketplacePartners( - { ...params, ...passedParams }, - { ...filter, ...passedFilter }, - ), - )().then((data) => data.data); diff --git a/packages/utilities/.changeset/pr-13396-tech-stories-1770973243721.md b/packages/utilities/.changeset/pr-13396-tech-stories-1770973243721.md new file mode 100644 index 00000000000..f942b1cfecb --- /dev/null +++ b/packages/utilities/.changeset/pr-13396-tech-stories-1770973243721.md @@ -0,0 +1,5 @@ +--- +"@linode/utilities": Tech Stories +--- + +Clean up unused marketplace v2 factories ([#13396](https://github.com/linode/manager/pull/13396)) diff --git a/packages/utilities/src/factories/index.ts b/packages/utilities/src/factories/index.ts index ea8d7a8d500..e410363d74e 100644 --- a/packages/utilities/src/factories/index.ts +++ b/packages/utilities/src/factories/index.ts @@ -8,7 +8,6 @@ export * from './images'; export * from './linodeConfigInterface'; export * from './linodeInterface'; export * from './linodes'; -export * from './marketplace'; export * from './nodebalancer'; export * from './profile'; export * from './regions'; diff --git a/packages/utilities/src/factories/marketplace.ts b/packages/utilities/src/factories/marketplace.ts deleted file mode 100644 index 5d3bc8258ef..00000000000 --- a/packages/utilities/src/factories/marketplace.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { Factory } from './factoryProxy'; - -import type { - MarketplaceCategory, - MarketplacePartner, - MarketplaceProduct, - MarketplaceType, -} from '@linode/api-v4'; - -export const marketplaceProductFactory = - Factory.Sync.makeFactory({ - category_ids: [1, 2], - created_at: '2024-01-01T00:00:00', - created_by: 'user1', - id: Factory.each((id) => id), - logo_url: 'https://www.example.com/logo.png', - name: Factory.each((id) => `marketplace-product-${id}`), - partner_id: Factory.each((id) => id), - product_tags: ['tag1', 'tag2'], - short_description: - 'This is a short description of the marketplace product.', - tile_tag: '60 days free trial', - type_id: Factory.each((id) => id), - }); - -export const marketplaceCategoryFactory = - Factory.Sync.makeFactory({ - created_at: '2024-01-01T00:00:00', - created_by: 'user1', - id: Factory.each((id) => id), - products_count: 10, - name: Factory.each((id) => `marketplace-category-${id}`), - }); - -export const marketplaceTypeFactory = Factory.Sync.makeFactory( - { - created_at: '2024-01-01T00:00:00', - created_by: 'user1', - id: Factory.each((id) => id), - products_count: 10, - name: Factory.each((id) => `marketplace-type-${id}`), - }, -); - -export const marketplacePartnersFactory = - Factory.Sync.makeFactory({ - created_at: '2024-01-01T00:00:00', - created_by: 'user1', - id: Factory.each((id) => id), - logo_url_dark_mode: 'https://www.akamai.com/site/akamai-logo-v5.svg', - logo_url_light_mode: 'https://www.akamai.com/site/akamai-logo-v5.svg', - name: Factory.each((id) => `marketplace-partner-${id}`), - url: 'https://www.example.com', - });