From aa8c467ea74cc070653bf14066f272307f82455d Mon Sep 17 00:00:00 2001 From: Abhinav Date: Thu, 15 Dec 2022 17:22:55 +0530 Subject: [PATCH] moved uploaderName to pub magic metadata --- src/services/upload/fileService.ts | 12 ++++++++++++ src/services/upload/magicMetadataService.ts | 17 +++++++++++++++++ src/services/upload/uploadService.ts | 9 +++++++++ src/services/upload/uploader.ts | 18 ++++++++++++++---- src/types/file/index.ts | 1 + src/types/upload/index.ts | 6 ++++-- 6 files changed, 57 insertions(+), 6 deletions(-) create mode 100644 src/services/upload/magicMetadataService.ts diff --git a/src/services/upload/fileService.ts b/src/services/upload/fileService.ts index bdb793e38..b14b6dc29 100644 --- a/src/services/upload/fileService.ts +++ b/src/services/upload/fileService.ts @@ -22,6 +22,7 @@ import { getUint8ArrayView, } from '../readerService'; import { generateThumbnail } from './thumbnailService'; +import { EncryptedMagicMetadataCore } from 'types/magicMetadata'; const EDITED_FILE_SUFFIX = '-edited'; @@ -110,6 +111,16 @@ export async function encryptFile( const { file: encryptedMetadata }: EncryptionResult = await worker.encryptMetadata(file.metadata, fileKey); + const { file: encryptedPubMagicMetadataData }: EncryptionResult = + await worker.encryptMetadata(file.pubMagicMetadata.data, fileKey); + + const encryptedPubMagicMetadata: EncryptedMagicMetadataCore = { + version: file.pubMagicMetadata.version, + count: file.pubMagicMetadata.count, + data: encryptedPubMagicMetadataData.encryptedData as unknown as string, + header: encryptedPubMagicMetadataData.decryptionHeader, + }; + const encryptedKey: B64EncryptionResult = await worker.encryptToB64( fileKey, encryptionKey @@ -120,6 +131,7 @@ export async function encryptFile( file: encryptedFiledata, thumbnail: encryptedThumbnail, metadata: encryptedMetadata, + pubMagicMetadata: encryptedPubMagicMetadata, localID: file.localID, }, fileKey: encryptedKey, diff --git a/src/services/upload/magicMetadataService.ts b/src/services/upload/magicMetadataService.ts new file mode 100644 index 000000000..209ebcc72 --- /dev/null +++ b/src/services/upload/magicMetadataService.ts @@ -0,0 +1,17 @@ +import { + FilePublicMagicMetadataProps, + FilePublicMagicMetadata, +} from 'types/file'; +import { NEW_FILE_MAGIC_METADATA } from 'types/magicMetadata'; +import { updateMagicMetadataProps } from 'utils/magicMetadata'; + +export async function constructPublicMagicMetadata( + publicMagicMetadataProps: FilePublicMagicMetadataProps +): Promise { + const pubMagicMetadata = await updateMagicMetadataProps( + NEW_FILE_MAGIC_METADATA, + null, + publicMagicMetadataProps + ); + return pubMagicMetadata; +} diff --git a/src/services/upload/uploadService.ts b/src/services/upload/uploadService.ts index 1ac0f177c..5e5c3bda3 100644 --- a/src/services/upload/uploadService.ts +++ b/src/services/upload/uploadService.ts @@ -35,6 +35,8 @@ import { uploadStreamUsingMultipart } from './multiPartUploadService'; import UIService from './uiService'; import { USE_CF_PROXY } from 'constants/upload'; import publicUploadHttpClient from './publicUploadHttpClient'; +import { constructPublicMagicMetadata } from './magicMetadataService'; +import { FilePublicMagicMetadataProps } from 'types/file'; class UploadService { private uploadURLs: UploadURL[] = []; @@ -142,6 +144,12 @@ class UploadService { return clusterLivePhotoFiles(mediaFiles); } + constructPublicMagicMetadata( + publicMagicMetadataProps: FilePublicMagicMetadataProps + ) { + return constructPublicMagicMetadata(publicMagicMetadataProps); + } + async encryptAsset( worker: any, file: FileWithMetadata, @@ -203,6 +211,7 @@ class UploadService { objectKey: thumbnailObjectKey, }, metadata: file.metadata, + pubMagicMetadata: file.pubMagicMetadata, }; return backupedFile; } catch (e) { diff --git a/src/services/upload/uploader.ts b/src/services/upload/uploader.ts index 746674c88..e06015853 100644 --- a/src/services/upload/uploader.ts +++ b/src/services/upload/uploader.ts @@ -1,4 +1,4 @@ -import { EnteFile } from 'types/file'; +import { EnteFile, FilePublicMagicMetadata } from 'types/file'; import { handleUploadError, CustomError } from 'utils/error'; import { logError } from 'utils/sentry'; import { findMatchingExistingFiles } from 'utils/upload'; @@ -6,12 +6,18 @@ import UIService from './uiService'; import UploadService from './uploadService'; import { FILE_TYPE } from 'constants/file'; import { UPLOAD_RESULT, MAX_FILE_SIZE_SUPPORTED } from 'constants/upload'; -import { FileWithCollection, BackupedFile, UploadFile } from 'types/upload'; +import { + FileWithCollection, + BackupedFile, + UploadFile, + FileWithMetadata, +} from 'types/upload'; import { addLocalLog, addLogLine } from 'utils/logging'; import { convertBytesToHumanReadable } from 'utils/file/size'; import { sleep } from 'utils/common'; import { addToCollection } from 'services/collectionService'; import uploadCancelService from './uploadCancelService'; +import uploadService from './uploadService'; interface UploadResponse { fileUploadResult: UPLOAD_RESULT; @@ -104,14 +110,18 @@ export default async function uploader( if (file.hasStaticThumbnail) { metadata.hasStaticThumbnail = true; } + let pubMagicMetadata: FilePublicMagicMetadata; if (uploaderName) { - metadata.uploaderName = uploaderName; + pubMagicMetadata = await uploadService.constructPublicMagicMetadata( + { uploaderName } + ); } - const fileWithMetadata = { + const fileWithMetadata: FileWithMetadata = { localID, filedata: file.filedata, thumbnail: file.thumbnail, metadata, + pubMagicMetadata, }; if (uploadCancelService.isUploadCancelationRequested()) { diff --git a/src/types/file/index.ts b/src/types/file/index.ts index 006d1cc42..4ecdaa6fe 100644 --- a/src/types/file/index.ts +++ b/src/types/file/index.ts @@ -20,6 +20,7 @@ export interface FilePublicMagicMetadataProps { editedTime?: number; editedName?: string; caption?: string; + uploaderName?: string; } export interface FilePublicMagicMetadata diff --git a/src/types/upload/index.ts b/src/types/upload/index.ts index aa56d50c4..c2250adee 100644 --- a/src/types/upload/index.ts +++ b/src/types/upload/index.ts @@ -1,6 +1,7 @@ import { FILE_TYPE } from 'constants/file'; import { Collection } from 'types/collection'; -import { fileAttribute } from 'types/file'; +import { fileAttribute, FilePublicMagicMetadata } from 'types/file'; +import { EncryptedMagicMetadataCore } from 'types/magicMetadata'; export interface DataStream { stream: ReadableStream; @@ -27,7 +28,6 @@ export interface Metadata { hash?: string; imageHash?: string; videoHash?: string; - uploaderName?: string; } export interface Location { @@ -120,6 +120,7 @@ export interface FileWithMetadata extends Omit { metadata: Metadata; localID: number; + pubMagicMetadata: FilePublicMagicMetadata; } export interface EncryptedFile { @@ -130,6 +131,7 @@ export interface ProcessedFile { file: fileAttribute; thumbnail: fileAttribute; metadata: fileAttribute; + pubMagicMetadata: EncryptedMagicMetadataCore; localID: number; } export interface BackupedFile extends Omit {}