From 124f0e72f2c553f3f62aa5aef541dfbcc238e706 Mon Sep 17 00:00:00 2001 From: bang9 Date: Thu, 8 Feb 2024 12:47:49 +0900 Subject: [PATCH 1/2] fix: acceptableMimeTypes should support common mime types --- src/utils/index.ts | 57 +++++++++++++++++++++++++--------------------- 1 file changed, 31 insertions(+), 26 deletions(-) diff --git a/src/utils/index.ts b/src/utils/index.ts index bfa3cd6b5..5350385bc 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -96,32 +96,37 @@ export const SUPPORTED_MIMES = { ], }; -export const getMimeTypesUIKitAccepts = (acceptableMimeTypes?: Array): string => { - const { IMAGE, VIDEO, AUDIO } = SUPPORTED_MIMES; - - 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() +export const getMimeTypesUIKitAccepts = (acceptableMimeTypes?: string[]): string => { + if (acceptableMimeTypes && acceptableMimeTypes.length === 0) return ''; + + if (Array.isArray(acceptableMimeTypes)) { + 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).flat().join(); }; /* eslint-disable no-redeclare */ From ed3b754c939c0727484f23ca82aa8a1f0fef5100 Mon Sep 17 00:00:00 2001 From: bang9 Date: Thu, 8 Feb 2024 12:54:29 +0900 Subject: [PATCH 2/2] chore: keep backward --- .../getMimeTypesUIKitAccepts.spec.ts | 5 ++ src/utils/index.ts | 48 +++++++++---------- 2 files changed, 28 insertions(+), 25 deletions(-) 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 5350385bc..aa1aef9d7 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -97,36 +97,34 @@ export const SUPPORTED_MIMES = { }; export const getMimeTypesUIKitAccepts = (acceptableMimeTypes?: string[]): string => { - if (acceptableMimeTypes && acceptableMimeTypes.length === 0) return ''; - - if (Array.isArray(acceptableMimeTypes)) { + if (Array.isArray(acceptableMimeTypes) && acceptableMimeTypes.length > 0) { 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; - } + .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 prev; + }, [] as string[]) + .join(); } - return Object.values(SUPPORTED_MIMES).flat().join(); + return Object.values(SUPPORTED_MIMES).reduce((prev, curr) => (prev.concat(curr)), []).join(); }; /* eslint-disable no-redeclare */