diff --git a/src/services/heicConversionService.ts b/src/services/heicConversionService.ts new file mode 100644 index 000000000..499c5515f --- /dev/null +++ b/src/services/heicConversionService.ts @@ -0,0 +1,24 @@ +import isElectron from 'is-electron'; +import { logError } from 'utils/sentry'; +import WasmHEICConverterService from './wasmHeicConverter/wasmHEICConverterService'; +import ElectronHEICConvertor from 'services/electron/heicConvertor'; + +class HeicConversionService { + async convert(heicFileData: Blob): Promise { + try { + if (isElectron() && ElectronHEICConvertor.apiExists()) { + try { + return ElectronHEICConvertor.convert(heicFileData); + } catch (e) { + return WasmHEICConverterService.convert(heicFileData); + } + } else { + return WasmHEICConverterService.convert(heicFileData); + } + } catch (e) { + logError(e, 'failed to convert heic file'); + throw e; + } + } +} +export default new HeicConversionService();