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
{...shortUrlCreation}
creation={shortUrlCreation}
resetCreateShortUrl={resetCreateShortUrl}
canBeClosed={basicMode}
/>

View file

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

View file

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