From 8d476e072961ce15abd412b1f673b8d7979897b1 Mon Sep 17 00:00:00 2001 From: Alejandro Celaya Date: Thu, 9 Dec 2021 13:16:28 +0100 Subject: [PATCH] Added support to fetch full response from list domains endpoint --- src/api/services/ShlinkApiClient.ts | 5 ++--- src/api/types/index.ts | 1 + src/domains/reducers/domainsList.ts | 2 +- test/api/services/ShlinkApiClient.test.ts | 6 ++---- test/domains/reducers/domainsList.test.ts | 2 +- 5 files changed, 7 insertions(+), 9 deletions(-) diff --git a/src/api/services/ShlinkApiClient.ts b/src/api/services/ShlinkApiClient.ts index 6c783531..35ebebad 100644 --- a/src/api/services/ShlinkApiClient.ts +++ b/src/api/services/ShlinkApiClient.ts @@ -11,7 +11,6 @@ import { ShlinkVisits, ShlinkVisitsParams, ShlinkShortUrlData, - ShlinkDomain, ShlinkDomainsResponse, ShlinkVisitsOverview, ShlinkEditDomainRedirects, @@ -107,8 +106,8 @@ export default class ShlinkApiClient { this.performRequest('/mercure-info', 'GET') .then((resp) => resp.data); - public readonly listDomains = async (): Promise => - this.performRequest<{ domains: ShlinkDomainsResponse }>('/domains', 'GET').then(({ data }) => data.domains.data); + public readonly listDomains = async (): Promise => + this.performRequest<{ domains: ShlinkDomainsResponse }>('/domains', 'GET').then(({ data }) => data.domains); public readonly editDomainRedirects = async ( domainRedirects: ShlinkEditDomainRedirects, diff --git a/src/api/types/index.ts b/src/api/types/index.ts index 478194fc..c5d11a19 100644 --- a/src/api/types/index.ts +++ b/src/api/types/index.ts @@ -84,6 +84,7 @@ export interface ShlinkDomain { export interface ShlinkDomainsResponse { data: ShlinkDomain[]; + defaultRedirects?: ShlinkDomainRedirects; // Optional only for Shlink older than 2.10 } export interface ShlinkShortUrlsListParams { diff --git a/src/domains/reducers/domainsList.ts b/src/domains/reducers/domainsList.ts index c8ee513d..4a902ba9 100644 --- a/src/domains/reducers/domainsList.ts +++ b/src/domains/reducers/domainsList.ts @@ -68,7 +68,7 @@ export const listDomains = (buildShlinkApiClient: ShlinkApiClientBuilder) => () const { listDomains } = buildShlinkApiClient(getState); try { - const domains = await listDomains(); + const { data: domains } = await listDomains(); dispatch({ type: LIST_DOMAINS, domains }); } catch (e: any) { diff --git a/test/api/services/ShlinkApiClient.test.ts b/test/api/services/ShlinkApiClient.test.ts index 95bf899f..82efa569 100644 --- a/test/api/services/ShlinkApiClient.test.ts +++ b/test/api/services/ShlinkApiClient.test.ts @@ -256,10 +256,8 @@ describe('ShlinkApiClient', () => { describe('listDomains', () => { it('returns domains', async () => { - const expectedData = [ Mock.all(), Mock.all() ]; - const resp = { - domains: { data: expectedData }, - }; + const expectedData = { data: [ Mock.all(), Mock.all() ] }; + const resp = { domains: expectedData }; const axiosSpy = createAxiosMock({ data: resp }); const { listDomains } = new ShlinkApiClient(axiosSpy, '', ''); diff --git a/test/domains/reducers/domainsList.test.ts b/test/domains/reducers/domainsList.test.ts index 5bc1eb9c..ac3066b0 100644 --- a/test/domains/reducers/domainsList.test.ts +++ b/test/domains/reducers/domainsList.test.ts @@ -88,7 +88,7 @@ describe('domainsList', () => { }); it('dispatches domains once loaded', async () => { - listDomains.mockResolvedValue(domains); + listDomains.mockResolvedValue({ data: domains }); await listDomainsAction(buildShlinkApiClient)()(dispatch, getState);