diff --git a/src/utils/__tests__/getMimeTypesUIKitAccepts.spec.ts b/src/utils/__tests__/getMimeTypesUIKitAccepts.spec.ts index da89e6a78..9c801a089 100644 --- a/src/utils/__tests__/getMimeTypesUIKitAccepts.spec.ts +++ b/src/utils/__tests__/getMimeTypesUIKitAccepts.spec.ts @@ -22,4 +22,9 @@ describe('Global-utils/getMimeTypesUIKitAccepts', () => { }); expect(getMimeTypesUIKitAccepts([])).toBe(allMimeTypes.join()); }); + it('when given mime types, should return mime types string.', () => { + const accept = getMimeTypesUIKitAccepts(['image/png', 'image/heic']); + const expected = 'image/png,image/heic'; + expect(accept).toBe(expected); + }); }); diff --git a/src/utils/index.ts b/src/utils/index.ts index bfa3cd6b5..aa1aef9d7 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -96,32 +96,35 @@ export const SUPPORTED_MIMES = { ], }; -export const getMimeTypesUIKitAccepts = (acceptableMimeTypes?: Array): string => { - const { IMAGE, VIDEO, AUDIO } = SUPPORTED_MIMES; - +export const getMimeTypesUIKitAccepts = (acceptableMimeTypes?: string[]): string => { if (Array.isArray(acceptableMimeTypes) && acceptableMimeTypes.length > 0) { - return ( - acceptableMimeTypes - .reduce((accumulator: Array, acceptableMimeType: string): Array => ( - accumulator.concat( - match(acceptableMimeType) - .with('image', () => IMAGE) - .with('video', () => VIDEO) - .with('audio', () => AUDIO) - .otherwise(() => []), - ) - ), []) - .join() - ); - } - return ( - Object.values(SUPPORTED_MIMES) - .reduce((accumulator: Array, mimeTypes: Array) => ( - accumulator.concat(mimeTypes) - ), []) - .join() - ); - // concat() is fater than flat() + return acceptableMimeTypes + .reduce((prev, curr) => { + switch (curr) { + case 'image': { + prev.push(...SUPPORTED_MIMES.IMAGE); + break; + } + case 'video': { + prev.push(...SUPPORTED_MIMES.VIDEO); + break; + } + case 'audio': { + prev.push(...SUPPORTED_MIMES.AUDIO); + break; + } + default: { + prev.push(curr); + break; + } + } + + return prev; + }, [] as string[]) + .join(); + } + + return Object.values(SUPPORTED_MIMES).reduce((prev, curr) => (prev.concat(curr)), []).join(); }; /* eslint-disable no-redeclare */