From c4d66b3ca41a1e0b7c82f80baaee387cbbb2f71c Mon Sep 17 00:00:00 2001 From: Abhinav Date: Sat, 11 Nov 2023 12:53:00 +0530 Subject: [PATCH] patch missed stuff --- apps/photos/src/components/PhotoList.tsx | 2 +- .../PhotoViewer/ImageEditorOverlay/index.tsx | 2 +- .../src/components/RecoveryKey/index.tsx | 83 ------------------- .../src/components/Sidebar/DebugSection.tsx | 2 +- .../src/components/Sidebar/UtilitySection.tsx | 6 +- apps/photos/src/services/imageProcessor.ts | 2 +- apps/photos/src/services/readerService.ts | 2 +- .../src/services/typeDetectionService.ts | 2 +- .../src/services/upload/thumbnailService.ts | 2 +- apps/photos/src/services/upload/uploader.ts | 2 +- .../wasmHEICConverterService.ts | 2 +- apps/photos/src/utils/file/index.ts | 22 +---- apps/photos/src/utils/file/size.ts | 12 --- .../RecoveryKey/styledComponents.tsx | 6 -- packages/accounts/pages/generate.tsx | 2 +- .../components/RecoveryKey/index.tsx | 0 .../RecoveryKey/styledComponents.tsx | 0 packages/shared/env/index.ts | 0 .../workerElectron/utils/transferHandler.ts | 11 +++ packages/shared/worker/comlinkWorker.ts | 6 +- 20 files changed, 30 insertions(+), 136 deletions(-) delete mode 100644 apps/photos/src/components/RecoveryKey/index.tsx delete mode 100644 apps/photos/src/utils/file/size.ts delete mode 100644 packages/accounts/components/RecoveryKey/styledComponents.tsx rename packages/{accounts => shared}/components/RecoveryKey/index.tsx (100%) rename {apps/photos/src => packages/shared}/components/RecoveryKey/styledComponents.tsx (100%) delete mode 100644 packages/shared/env/index.ts create mode 100644 packages/shared/storage/cacheStorage/workerElectron/utils/transferHandler.ts diff --git a/apps/photos/src/components/PhotoList.tsx b/apps/photos/src/components/PhotoList.tsx index 6c2a90d98..e23e969a7 100644 --- a/apps/photos/src/components/PhotoList.tsx +++ b/apps/photos/src/components/PhotoList.tsx @@ -18,7 +18,7 @@ import { } from 'constants/gallery'; import { PublicCollectionGalleryContext } from 'utils/publicCollectionGallery'; import { ENTE_WEBSITE_LINK } from '@ente/shared/constants/urls'; -import { convertBytesToHumanReadable } from 'utils/file/size'; +import { convertBytesToHumanReadable } from '@ente/shared/utils/size'; import { DeduplicateContext } from 'pages/deduplicate'; import { FlexWrapper } from '@ente/shared/components/Container'; import { Typography } from '@mui/material'; diff --git a/apps/photos/src/components/PhotoViewer/ImageEditorOverlay/index.tsx b/apps/photos/src/components/PhotoViewer/ImageEditorOverlay/index.tsx index c1cb7ade2..51424aad7 100644 --- a/apps/photos/src/components/PhotoViewer/ImageEditorOverlay/index.tsx +++ b/apps/photos/src/components/PhotoViewer/ImageEditorOverlay/index.tsx @@ -43,7 +43,7 @@ import { AppContext } from 'pages/_app'; import { getEditorCloseConfirmationMessage } from 'utils/ui'; import { logError } from '@ente/shared/sentry'; import { getFileType } from 'services/typeDetectionService'; -import { downloadUsingAnchor } from 'utils/file'; +import { downloadUsingAnchor } from '@ente/shared/utils'; interface IProps { file: EnteFile; diff --git a/apps/photos/src/components/RecoveryKey/index.tsx b/apps/photos/src/components/RecoveryKey/index.tsx deleted file mode 100644 index aed536beb..000000000 --- a/apps/photos/src/components/RecoveryKey/index.tsx +++ /dev/null @@ -1,83 +0,0 @@ -import React, { useContext, useEffect, useState } from 'react'; -import { downloadAsFile } from 'utils/file'; -import { getRecoveryKey } from '@ente/shared/crypto/helpers'; -import CodeBlock from '@ente/shared/components/CodeBlock'; -import { - Button, - Dialog, - DialogActions, - DialogContent, - Typography, -} from '@mui/material'; -import * as bip39 from 'bip39'; -import { DashedBorderWrapper } from './styledComponents'; -import { AppContext } from 'pages/_app'; -import DialogTitleWithCloseButton from '@ente/shared/components/DialogBox/TitleWithCloseButton'; -import { t } from 'i18next'; - -// mobile client library only supports english. -bip39.setDefaultWordlist('english'); - -const RECOVERY_KEY_FILE_NAME = 'ente-recovery-key.txt'; - -interface Props { - show: boolean; - onHide: () => void; - somethingWentWrong: any; -} - -function RecoveryKey({ somethingWentWrong, ...props }: Props) { - const appContext = useContext(AppContext); - const [recoveryKey, setRecoveryKey] = useState(null); - - useEffect(() => { - if (!props.show) { - return; - } - const main = async () => { - try { - const recoveryKey = await getRecoveryKey(); - setRecoveryKey(bip39.entropyToMnemonic(recoveryKey)); - } catch (e) { - somethingWentWrong(); - props.onHide(); - } - }; - main(); - }, [props.show]); - - function onSaveClick() { - downloadAsFile(RECOVERY_KEY_FILE_NAME, recoveryKey); - props.onHide(); - } - - return ( - - - {t('RECOVERY_KEY')} - - - {t('RECOVERY_KEY_DESCRIPTION')} - - - - {t('KEY_NOT_STORED_DISCLAIMER')} - - - - - - - - - ); -} -export default RecoveryKey; diff --git a/apps/photos/src/components/Sidebar/DebugSection.tsx b/apps/photos/src/components/Sidebar/DebugSection.tsx index d240076e8..c903ef869 100644 --- a/apps/photos/src/components/Sidebar/DebugSection.tsx +++ b/apps/photos/src/components/Sidebar/DebugSection.tsx @@ -1,6 +1,5 @@ import { AppContext } from 'pages/_app'; import React, { useContext, useEffect, useState } from 'react'; -import { downloadAsFile } from 'utils/file'; import { Trans } from 'react-i18next'; import { t } from 'i18next'; @@ -16,6 +15,7 @@ import { testZipWithRootFileReadingTest, } from '../../../tests/zip-file-reading.test'; import { EnteMenuItem } from 'components/Menu/EnteMenuItem'; +import { downloadAsFile } from '@ente/shared/utils'; export default function DebugSection() { const appContext = useContext(AppContext); diff --git a/apps/photos/src/components/Sidebar/UtilitySection.tsx b/apps/photos/src/components/Sidebar/UtilitySection.tsx index adf4e9198..71be57509 100644 --- a/apps/photos/src/components/Sidebar/UtilitySection.tsx +++ b/apps/photos/src/components/Sidebar/UtilitySection.tsx @@ -2,7 +2,7 @@ import { useContext, useState } from 'react'; import { t } from 'i18next'; // import FixLargeThumbnails from 'components/FixLargeThumbnail'; -import RecoveryKey from 'components/RecoveryKey'; +import RecoveryKey from '@ente/shared/components/RecoveryKey'; import TwoFactorModal from 'components/TwoFactor/Modal'; import { PHOTOS_PAGES as PAGES } from '@ente/shared/constants/pages'; import { useRouter } from 'next/router'; @@ -20,6 +20,7 @@ import { THEME_COLOR } from '@ente/shared/themes/constants'; export default function UtilitySection({ closeSidebar }) { const router = useRouter(); + const appContext = useContext(AppContext); const { setDialogMessage, startLoading, @@ -27,7 +28,7 @@ export default function UtilitySection({ closeSidebar }) { setWatchFolderView, themeColor, setThemeColor, - } = useContext(AppContext); + } = appContext; const [recoverModalView, setRecoveryModalView] = useState(false); const [twoFactorModalView, setTwoFactorModalView] = useState(false); @@ -144,6 +145,7 @@ export default function UtilitySection({ closeSidebar }) { label={t('PREFERENCES')} /> { diff --git a/apps/photos/src/services/readerService.ts b/apps/photos/src/services/readerService.ts index 816caaa69..4238fdf2a 100644 --- a/apps/photos/src/services/readerService.ts +++ b/apps/photos/src/services/readerService.ts @@ -1,5 +1,5 @@ import { ElectronFile } from 'types/upload'; -import { convertBytesToHumanReadable } from 'utils/file/size'; +import { convertBytesToHumanReadable } from '@ente/shared/utils/size'; import { logError } from '@ente/shared/sentry'; export async function getUint8ArrayView( diff --git a/apps/photos/src/services/typeDetectionService.ts b/apps/photos/src/services/typeDetectionService.ts index ec5187b77..237daa769 100644 --- a/apps/photos/src/services/typeDetectionService.ts +++ b/apps/photos/src/services/typeDetectionService.ts @@ -10,7 +10,7 @@ import { logError } from '@ente/shared/sentry'; import { getUint8ArrayView } from './readerService'; import FileType, { FileTypeResult } from 'file-type'; import { getFileSize } from './upload/fileService'; -import { convertBytesToHumanReadable } from 'utils/file/size'; +import { convertBytesToHumanReadable } from '@ente/shared/utils/size'; const TYPE_VIDEO = 'video'; const TYPE_IMAGE = 'image'; diff --git a/apps/photos/src/services/upload/thumbnailService.ts b/apps/photos/src/services/upload/thumbnailService.ts index 25e5364ae..1fd3b128c 100644 --- a/apps/photos/src/services/upload/thumbnailService.ts +++ b/apps/photos/src/services/upload/thumbnailService.ts @@ -4,7 +4,7 @@ import { logError } from '@ente/shared/sentry'; import { BLACK_THUMBNAIL_BASE64 } from 'constants/upload'; import * as FFmpegService from 'services/ffmpeg/ffmpegService'; import ElectronAPIs from '@ente/shared/electron'; -import { convertBytesToHumanReadable } from 'utils/file/size'; +import { convertBytesToHumanReadable } from '@ente/shared/utils/size'; import { ElectronFile, FileTypeInfo } from 'types/upload'; import { getUint8ArrayView } from '../readerService'; import { addLogLine } from '@ente/shared/logging'; diff --git a/apps/photos/src/services/upload/uploader.ts b/apps/photos/src/services/upload/uploader.ts index d89a667eb..2969da609 100644 --- a/apps/photos/src/services/upload/uploader.ts +++ b/apps/photos/src/services/upload/uploader.ts @@ -14,7 +14,7 @@ import { Logger, } from 'types/upload'; import { addLocalLog, addLogLine } from '@ente/shared/logging'; -import { convertBytesToHumanReadable } from 'utils/file/size'; +import { convertBytesToHumanReadable } from '@ente/shared/utils/size'; import { sleep } from 'utils/common'; import { addToCollection } from 'services/collectionService'; import uploadCancelService from './uploadCancelService'; diff --git a/apps/photos/src/services/wasmHeicConverter/wasmHEICConverterService.ts b/apps/photos/src/services/wasmHeicConverter/wasmHEICConverterService.ts index 9f45d8e95..2e2617f40 100644 --- a/apps/photos/src/services/wasmHeicConverter/wasmHEICConverterService.ts +++ b/apps/photos/src/services/wasmHeicConverter/wasmHEICConverterService.ts @@ -5,7 +5,7 @@ import { logError } from '@ente/shared/sentry'; import { addLogLine } from '@ente/shared/logging'; import { DedicatedConvertWorker } from 'worker/convert.worker'; import { ComlinkWorker } from '@ente/shared/worker/comlinkWorker'; -import { convertBytesToHumanReadable } from 'utils/file/size'; +import { convertBytesToHumanReadable } from '@ente/shared/utils/size'; import { getDedicatedConvertWorker } from 'utils/comlink/ComlinkConvertWorker'; const WORKER_POOL_SIZE = 2; diff --git a/apps/photos/src/utils/file/index.ts b/apps/photos/src/utils/file/index.ts index 7278d1b80..c70cf77dd 100644 --- a/apps/photos/src/utils/file/index.ts +++ b/apps/photos/src/utils/file/index.ts @@ -32,7 +32,7 @@ import { isArchivedFile, updateMagicMetadata } from 'utils/magicMetadata'; import { addLocalLog, addLogLine } from '@ente/shared/logging'; import { CustomError } from '@ente/shared/error'; -import { convertBytesToHumanReadable } from './size'; +import { convertBytesToHumanReadable } from '@ente/shared/utils/size'; import ComlinkCryptoWorker from '@ente/shared/crypto'; import { deleteFromTrash, @@ -49,6 +49,7 @@ import ElectronFSService from '@ente/shared/electron'; import { getFileExportPath, getUniqueFileExportName } from 'utils/export'; import imageProcessor from 'services/imageProcessor'; import ElectronAPIs from '@ente/shared/electron'; +import { downloadUsingAnchor } from '@ente/shared/utils'; const WAIT_TIME_IMAGE_CONVERSION = 30 * 1000; @@ -62,14 +63,6 @@ export enum FILE_OPS_TYPE { DELETE_PERMANENTLY, } -export function downloadAsFile(filename: string, content: string) { - const file = new Blob([content], { - type: 'text/plain', - }); - const fileURL = URL.createObjectURL(file); - downloadUsingAnchor(fileURL, filename); -} - export async function getUpdatedEXIFFileForDownload( fileReader: FileReader, file: EnteFile, @@ -166,17 +159,6 @@ export async function downloadFile( } } -export function downloadUsingAnchor(link: string, name: string) { - const a = document.createElement('a'); - a.style.display = 'none'; - a.href = link; - a.download = name; - document.body.appendChild(a); - a.click(); - URL.revokeObjectURL(link); - a.remove(); -} - export function groupFilesBasedOnCollectionID(files: EnteFile[]) { const collectionWiseFiles = new Map(); for (const file of files) { diff --git a/apps/photos/src/utils/file/size.ts b/apps/photos/src/utils/file/size.ts deleted file mode 100644 index e1b6b33e4..000000000 --- a/apps/photos/src/utils/file/size.ts +++ /dev/null @@ -1,12 +0,0 @@ -export function convertBytesToHumanReadable( - bytes: number, - precision = 2 -): string { - if (bytes === 0 || isNaN(bytes)) { - return '0 MB'; - } - - const i = Math.floor(Math.log(bytes) / Math.log(1024)); - const sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']; - return (bytes / Math.pow(1024, i)).toFixed(precision) + ' ' + sizes[i]; -} diff --git a/packages/accounts/components/RecoveryKey/styledComponents.tsx b/packages/accounts/components/RecoveryKey/styledComponents.tsx deleted file mode 100644 index 291965edd..000000000 --- a/packages/accounts/components/RecoveryKey/styledComponents.tsx +++ /dev/null @@ -1,6 +0,0 @@ -import { Box, styled } from '@mui/material'; - -export const DashedBorderWrapper = styled(Box)(({ theme }) => ({ - border: `1px dashed ${theme.palette.grey.A400}`, - borderRadius: theme.spacing(1), -})); diff --git a/packages/accounts/pages/generate.tsx b/packages/accounts/pages/generate.tsx index 7641d4b69..1b99724ee 100644 --- a/packages/accounts/pages/generate.tsx +++ b/packages/accounts/pages/generate.tsx @@ -17,7 +17,7 @@ import { justSignedUp, setJustSignedUp, } from '@ente/shared/storage/localStorage/helpers'; -import RecoveryKey from '@ente/accounts/components/RecoveryKey'; +import RecoveryKey from '@ente/shared/components/RecoveryKey'; import { PAGES } from '@ente/accounts/constants/pages'; import { VerticallyCentered } from '@ente/shared/components/Container'; import EnteSpinner from '@ente/shared/components/EnteSpinner'; diff --git a/packages/accounts/components/RecoveryKey/index.tsx b/packages/shared/components/RecoveryKey/index.tsx similarity index 100% rename from packages/accounts/components/RecoveryKey/index.tsx rename to packages/shared/components/RecoveryKey/index.tsx diff --git a/apps/photos/src/components/RecoveryKey/styledComponents.tsx b/packages/shared/components/RecoveryKey/styledComponents.tsx similarity index 100% rename from apps/photos/src/components/RecoveryKey/styledComponents.tsx rename to packages/shared/components/RecoveryKey/styledComponents.tsx diff --git a/packages/shared/env/index.ts b/packages/shared/env/index.ts deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/shared/storage/cacheStorage/workerElectron/utils/transferHandler.ts b/packages/shared/storage/cacheStorage/workerElectron/utils/transferHandler.ts new file mode 100644 index 000000000..81de379e2 --- /dev/null +++ b/packages/shared/storage/cacheStorage/workerElectron/utils/transferHandler.ts @@ -0,0 +1,11 @@ +import * as Comlink from 'comlink'; + +// didn't work kept for reference, so that can try to make it work later in future hopefully +export function setupResponseObjectTransferHandler() { + const transferHandler: Comlink.TransferHandler = { + canHandle: (obj): obj is Response => obj instanceof Response, + serialize: (response: Response) => [response.arrayBuffer() as any, []], + deserialize: (arrayBuffer: ArrayBuffer) => new Response(arrayBuffer), + }; + return Comlink.transferHandlers.set('RESPONSE', transferHandler); +} diff --git a/packages/shared/worker/comlinkWorker.ts b/packages/shared/worker/comlinkWorker.ts index a582bd00a..6ab177373 100644 --- a/packages/shared/worker/comlinkWorker.ts +++ b/packages/shared/worker/comlinkWorker.ts @@ -1,5 +1,5 @@ -import { Remote, wrap } from 'comlink'; -// import { WorkerElectronCacheStorageClient } from 'services/workerElectronCache/client'; +import { expose, Remote, wrap } from 'comlink'; +import { WorkerElectronCacheStorageClient } from '@ente/shared/storage/cacheStorage/workerElectron/client'; import { addLocalLog } from '@ente/shared/logging'; export class ComlinkWorker InstanceType> { @@ -17,7 +17,7 @@ export class ComlinkWorker InstanceType> { addLocalLog(() => `Initiated ${this.name}`); const comlink = wrap(this.worker); this.remote = new comlink() as Promise>>; - // expose(WorkerElectronCacheStorageClient, this.worker); + expose(WorkerElectronCacheStorageClient, this.worker); } public getName() {