diff --git a/src/short-urls/EditShortUrl.tsx b/src/short-urls/EditShortUrl.tsx index 58687d7e..db8c4d43 100644 --- a/src/short-urls/EditShortUrl.tsx +++ b/src/short-urls/EditShortUrl.tsx @@ -6,7 +6,7 @@ import { ExternalLink } from 'react-external-link'; import { useLocation, useParams } from 'react-router-dom'; import { SelectedServer } from '../servers/data'; import { Settings } from '../settings/reducers/settings'; -import { OptionalString } from '../utils/utils'; +import { ShortUrlIdentifier } from './data'; import { parseQuery } from '../utils/helpers/query'; import { Message } from '../utils/Message'; import { Result } from '../utils/Result'; @@ -22,7 +22,7 @@ interface EditShortUrlConnectProps { selectedServer: SelectedServer; shortUrlDetail: ShortUrlDetail; shortUrlEdition: ShortUrlEdition; - getShortUrlDetail: (shortCode: string, domain: OptionalString) => void; + getShortUrlDetail: (shortUrl: ShortUrlIdentifier) => void; editShortUrl: (editShortUrl: EditShortUrlInfo) => void; } @@ -46,7 +46,7 @@ export const EditShortUrl = (ShortUrlForm: FC) => ({ ); useEffect(() => { - params.shortCode && getShortUrlDetail(urlDecodeShortCode(params.shortCode), domain); + params.shortCode && getShortUrlDetail({ shortCode: urlDecodeShortCode(params.shortCode), domain }); }, []); if (loading) { diff --git a/src/short-urls/reducers/shortUrlDetail.ts b/src/short-urls/reducers/shortUrlDetail.ts index 19c2d888..a703d867 100644 --- a/src/short-urls/reducers/shortUrlDetail.ts +++ b/src/short-urls/reducers/shortUrlDetail.ts @@ -1,9 +1,8 @@ import { PayloadAction } from '@reduxjs/toolkit'; import { Dispatch } from 'redux'; -import { ShortUrl } from '../data'; +import { ShortUrl, ShortUrlIdentifier } from '../data'; import { buildReducer } from '../../utils/helpers/redux'; import { ShlinkApiClientBuilder } from '../../api/services/ShlinkApiClientBuilder'; -import { OptionalString } from '../../utils/utils'; import { GetState } from '../../container/types'; import { shortUrlMatches } from '../helpers'; import { parseApiError } from '../../api/utils'; @@ -35,8 +34,7 @@ export default buildReducer ( - shortCode: string, - domain: OptionalString, + { shortCode, domain }: ShortUrlIdentifier, ) => async (dispatch: Dispatch, getState: GetState) => { dispatch({ type: GET_SHORT_URL_DETAIL_START }); diff --git a/src/visits/ShortUrlVisits.tsx b/src/visits/ShortUrlVisits.tsx index 99bed7d3..5ef1b005 100644 --- a/src/visits/ShortUrlVisits.tsx +++ b/src/visits/ShortUrlVisits.tsx @@ -14,11 +14,12 @@ import { NormalizedVisit, VisitsParams } from './types'; import { CommonVisitsProps } from './types/CommonVisitsProps'; import { toApiParams } from './types/helpers'; import { urlDecodeShortCode } from '../short-urls/helpers'; +import { ShortUrlIdentifier } from '../short-urls/data'; export interface ShortUrlVisitsProps extends CommonVisitsProps { getShortUrlVisits: (shortCode: string, query?: ShlinkVisitsParams, doIntervalFallback?: boolean) => void; shortUrlVisits: ShortUrlVisitsState; - getShortUrlDetail: Function; + getShortUrlDetail: (shortUrl: ShortUrlIdentifier) => void; shortUrlDetail: ShortUrlDetail; cancelGetShortUrlVisits: () => void; } @@ -44,7 +45,7 @@ export const ShortUrlVisits = ({ exportVisits }: ReportExporter) => boundToMercu ); useEffect(() => { - getShortUrlDetail(urlDecodeShortCode(shortCode), domain); + getShortUrlDetail({ shortCode: urlDecodeShortCode(shortCode), domain }); }, []); return ( diff --git a/test/short-urls/reducers/shortUrlDetail.test.ts b/test/short-urls/reducers/shortUrlDetail.test.ts index 5e2237c0..e520822e 100644 --- a/test/short-urls/reducers/shortUrlDetail.test.ts +++ b/test/short-urls/reducers/shortUrlDetail.test.ts @@ -53,7 +53,7 @@ describe('shortUrlDetailReducer', () => { it('dispatches start and error when promise is rejected', async () => { const ShlinkApiClient = buildApiClientMock(Promise.reject({})); - await getShortUrlDetail(() => ShlinkApiClient)('abc123', '')(dispatchMock, buildGetState()); + await getShortUrlDetail(() => ShlinkApiClient)({ shortCode: 'abc123', domain: '' })(dispatchMock, buildGetState()); expect(dispatchMock).toHaveBeenCalledTimes(2); expect(dispatchMock).toHaveBeenNthCalledWith(1, { type: GET_SHORT_URL_DETAIL_START }); @@ -80,7 +80,7 @@ describe('shortUrlDetailReducer', () => { const resolvedShortUrl = Mock.of({ longUrl: 'foo', shortCode: 'abc123' }); const ShlinkApiClient = buildApiClientMock(Promise.resolve(resolvedShortUrl)); - await getShortUrlDetail(() => ShlinkApiClient)('abc123', '')(dispatchMock, buildGetState(shortUrlsList)); + await getShortUrlDetail(() => ShlinkApiClient)({ shortCode: 'abc123', domain: '' })(dispatchMock, buildGetState(shortUrlsList)); expect(dispatchMock).toHaveBeenCalledTimes(2); expect(dispatchMock).toHaveBeenNthCalledWith(1, { type: GET_SHORT_URL_DETAIL_START }); @@ -92,7 +92,7 @@ describe('shortUrlDetailReducer', () => { const foundShortUrl = Mock.of({ longUrl: 'foo', shortCode: 'abc123' }); const ShlinkApiClient = buildApiClientMock(Promise.resolve(Mock.all())); - await getShortUrlDetail(() => ShlinkApiClient)(foundShortUrl.shortCode, foundShortUrl.domain)( + await getShortUrlDetail(() => ShlinkApiClient)(foundShortUrl)( dispatchMock, buildGetState(Mock.of({ shortUrls: {