Replaced inheritance by composition on short URL creation interface

This commit is contained in:
Alejandro Celaya 2022-11-07 18:27:41 +01:00
parent 4ca31fc162
commit 61b274bab9
3 changed files with 7 additions and 5 deletions

View file

@ -59,7 +59,7 @@ export const CreateShortUrl = (
}} }}
/> />
<CreateShortUrlResult <CreateShortUrlResult
{...shortUrlCreation} creation={shortUrlCreation}
resetCreateShortUrl={resetCreateShortUrl} resetCreateShortUrl={resetCreateShortUrl}
canBeClosed={basicMode} canBeClosed={basicMode}
/> />

View file

@ -10,15 +10,17 @@ import { Result } from '../../utils/Result';
import './CreateShortUrlResult.scss'; import './CreateShortUrlResult.scss';
import { ShlinkApiError } from '../../api/ShlinkApiError'; import { ShlinkApiError } from '../../api/ShlinkApiError';
export interface CreateShortUrlResultProps extends ShortUrlCreation { export interface CreateShortUrlResultProps {
creation: ShortUrlCreation;
resetCreateShortUrl: () => void; resetCreateShortUrl: () => void;
canBeClosed?: boolean; canBeClosed?: boolean;
} }
export const CreateShortUrlResult = (useTimeoutToggle: TimeoutToggle) => ( export const CreateShortUrlResult = (useTimeoutToggle: TimeoutToggle) => (
{ error, errorData, result, resetCreateShortUrl, canBeClosed = false }: CreateShortUrlResultProps, { creation, resetCreateShortUrl, canBeClosed = false }: CreateShortUrlResultProps,
) => { ) => {
const [showCopyTooltip, setShowCopyTooltip] = useTimeoutToggle(); const [showCopyTooltip, setShowCopyTooltip] = useTimeoutToggle();
const { error, errorData, result } = creation;
useEffect(() => { useEffect(() => {
resetCreateShortUrl(); resetCreateShortUrl();

View file

@ -9,8 +9,8 @@ describe('<CreateShortUrlResult />', () => {
const copyToClipboard = jest.fn(); const copyToClipboard = jest.fn();
const useTimeoutToggle = jest.fn(() => [false, copyToClipboard]) as TimeoutToggle; const useTimeoutToggle = jest.fn(() => [false, copyToClipboard]) as TimeoutToggle;
const CreateShortUrlResult = createResult(useTimeoutToggle); const CreateShortUrlResult = createResult(useTimeoutToggle);
const setUp = (result: ShortUrl | null = null, error = false) => renderWithEvents( const setUp = (result?: ShortUrl, error = false) => renderWithEvents(
<CreateShortUrlResult resetCreateShortUrl={() => {}} result={result} error={error} saving={false} />, <CreateShortUrlResult resetCreateShortUrl={() => {}} creation={{ result, saving: false, error, saved: false }} />,
); );
afterEach(jest.clearAllMocks); afterEach(jest.clearAllMocks);