diff --git a/src/api/imageProcessor.ts b/src/api/imageProcessor.ts index 61b0ae529..b4464233f 100644 --- a/src/api/imageProcessor.ts +++ b/src/api/imageProcessor.ts @@ -1,10 +1,15 @@ +import { CustomErrors } from '../constants/errors'; import { ipcRenderer } from 'electron/renderer'; import { existsSync } from 'fs'; import { writeStream } from '../services/fs'; import { logError } from '../services/logging'; import { ElectronFile } from '../types'; +import { isPlatform } from '../utils/common/platform'; export async function convertHEIC(fileData: Uint8Array): Promise { + if (isPlatform('windows')) { + throw Error(CustomErrors.WINDOWS_NATIVE_IMAGE_PROCESSING_NOT_SUPPORTED); + } const convertedFileData = await ipcRenderer.invoke( 'convert-heic', fileData @@ -20,6 +25,11 @@ export async function generateImageThumbnail( let inputFilePath = null; let createdTempInputFile = null; try { + if (isPlatform('windows')) { + throw Error( + CustomErrors.WINDOWS_NATIVE_IMAGE_PROCESSING_NOT_SUPPORTED + ); + } if (!existsSync(inputFile.path)) { const tempFilePath = await ipcRenderer.invoke( 'get-temp-file-path', diff --git a/src/constants/errors.ts b/src/constants/errors.ts new file mode 100644 index 000000000..43e4773d8 --- /dev/null +++ b/src/constants/errors.ts @@ -0,0 +1,5 @@ +export const CustomErrors = { + WINDOWS_NATIVE_IMAGE_PROCESSING_NOT_SUPPORTED: + 'Windows native image processing is not supported', + INVALID_OS: (os: string) => `Invalid OS - ${os}`, +}; diff --git a/src/services/appUpdater.ts b/src/services/appUpdater.ts index 84a2bfeba..99ecef8b9 100644 --- a/src/services/appUpdater.ts +++ b/src/services/appUpdater.ts @@ -12,7 +12,7 @@ import { import fetch from 'node-fetch'; import { logErrorSentry } from './sentry'; import ElectronLog from 'electron-log'; -import { isPlatform } from '../utils/main'; +import { isPlatform } from '../utils/common/platform'; const FIVE_MIN_IN_MICROSECOND = 5 * 60 * 1000; const ONE_DAY_IN_MICROSECOND = 1 * 24 * 60 * 60 * 1000; diff --git a/src/services/autoLauncher.ts b/src/services/autoLauncher.ts index c28eb177c..139d5166c 100644 --- a/src/services/autoLauncher.ts +++ b/src/services/autoLauncher.ts @@ -1,4 +1,4 @@ -import { isPlatform } from '../utils/main'; +import { isPlatform } from '../utils/common/platform'; import { AutoLauncherClient } from '../types/autoLauncher'; import linuxAutoLauncher from './autoLauncherClients/linuxAutoLauncher'; import macAndWindowsAutoLauncher from './autoLauncherClients/macAndWindowsAutoLauncher'; diff --git a/src/services/imageProcessor.ts b/src/services/imageProcessor.ts index e211e2b64..05b252ba7 100644 --- a/src/services/imageProcessor.ts +++ b/src/services/imageProcessor.ts @@ -5,10 +5,11 @@ import { existsSync, rmSync } from 'fs'; import { readFile, writeFile } from 'promise-fs'; import { generateTempFilePath } from '../utils/temp'; import { logErrorSentry } from './sentry'; -import { isPlatform } from '../utils/main'; +import { isPlatform } from '../utils/common/platform'; import { isDev } from '../utils/common'; import path from 'path'; import log from 'electron-log'; +import { CustomErrors } from '../constants/errors'; const shellescape = require('any-shell-escape'); const asyncExec = util.promisify(exec); @@ -157,7 +158,7 @@ function constructConvertCommand( } ); } else { - Error(`${process.platform} native heic convert not supported yet`); + throw Error(CustomErrors.INVALID_OS(process.platform)); } return convertCmd; } @@ -271,9 +272,7 @@ function constructThumbnailGenerationCommand( return cmdPart; }); } else { - Error( - `${process.platform} native thumbnail generation not supported yet` - ); + throw Error(CustomErrors.INVALID_OS(process.platform)); } return thumbnailGenerationCmd; } diff --git a/src/utils/common.ts b/src/utils/common/index.ts similarity index 100% rename from src/utils/common.ts rename to src/utils/common/index.ts diff --git a/src/utils/common/platform.ts b/src/utils/common/platform.ts new file mode 100644 index 000000000..2ee705d5f --- /dev/null +++ b/src/utils/common/platform.ts @@ -0,0 +1,11 @@ +export function isPlatform(platform: 'mac' | 'windows' | 'linux') { + if (process.platform === 'darwin') { + return platform === 'mac'; + } else if (process.platform === 'win32') { + return platform === 'windows'; + } else if (process.platform === 'linux') { + return platform === 'linux'; + } else { + return false; + } +} diff --git a/src/utils/createWindow.ts b/src/utils/createWindow.ts index db356d467..d2e02dffd 100644 --- a/src/utils/createWindow.ts +++ b/src/utils/createWindow.ts @@ -3,7 +3,7 @@ import * as path from 'path'; import { isDev } from './common'; import { isAppQuitting } from '../main'; import { PROD_HOST_URL } from '../config'; -import { isPlatform } from './main'; +import { isPlatform } from './common/platform'; import { getHideDockIconPreference } from '../services/userPreference'; import autoLauncher from '../services/autoLauncher'; diff --git a/src/utils/main.ts b/src/utils/main.ts index 81fedbf7a..729bc3d3b 100644 --- a/src/utils/main.ts +++ b/src/utils/main.ts @@ -11,6 +11,7 @@ import { getHideDockIconPreference } from '../services/userPreference'; import { setupAutoUpdater } from '../services/appUpdater'; import ElectronLog from 'electron-log'; import os from 'os'; +import { isPlatform } from './common/platform'; export function handleUpdates(mainWindow: BrowserWindow) { if (!isDev) { @@ -84,18 +85,6 @@ export function setupNextElectronServe() { }); } -export function isPlatform(platform: 'mac' | 'windows' | 'linux') { - if (process.platform === 'darwin') { - return platform === 'mac'; - } else if (process.platform === 'win32') { - return platform === 'windows'; - } else if (process.platform === 'linux') { - return platform === 'linux'; - } else { - return false; - } -} - export async function handleDockIconHideOnAutoLaunch() { const shouldHideDockIcon = getHideDockIconPreference(); const wasAutoLaunched = await autoLauncher.wasAutoLaunched(); diff --git a/src/utils/menu.ts b/src/utils/menu.ts index 5002a1205..6ecb8459b 100644 --- a/src/utils/menu.ts +++ b/src/utils/menu.ts @@ -11,7 +11,7 @@ import { } from '../services/userPreference'; import { setIsAppQuitting } from '../main'; import autoLauncher from '../services/autoLauncher'; -import { isPlatform } from './main'; +import { isPlatform } from './common/platform'; import ElectronLog from 'electron-log'; export function buildContextMenu( diff --git a/ui b/ui index 3a37be3e4..197b5f35f 160000 --- a/ui +++ b/ui @@ -1 +1 @@ -Subproject commit 3a37be3e4f4c6372a6ffd1ec53b588e6a93649f0 +Subproject commit 197b5f35f3588e142558636ccc1854f44b725861