moved uploaderName to pub magic metadata

This commit is contained in:
Abhinav 2022-12-15 17:22:55 +05:30
parent 3ae701775a
commit aa8c467ea7
6 changed files with 57 additions and 6 deletions

View file

@ -22,6 +22,7 @@ import {
getUint8ArrayView, getUint8ArrayView,
} from '../readerService'; } from '../readerService';
import { generateThumbnail } from './thumbnailService'; import { generateThumbnail } from './thumbnailService';
import { EncryptedMagicMetadataCore } from 'types/magicMetadata';
const EDITED_FILE_SUFFIX = '-edited'; const EDITED_FILE_SUFFIX = '-edited';
@ -110,6 +111,16 @@ export async function encryptFile(
const { file: encryptedMetadata }: EncryptionResult = const { file: encryptedMetadata }: EncryptionResult =
await worker.encryptMetadata(file.metadata, fileKey); 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( const encryptedKey: B64EncryptionResult = await worker.encryptToB64(
fileKey, fileKey,
encryptionKey encryptionKey
@ -120,6 +131,7 @@ export async function encryptFile(
file: encryptedFiledata, file: encryptedFiledata,
thumbnail: encryptedThumbnail, thumbnail: encryptedThumbnail,
metadata: encryptedMetadata, metadata: encryptedMetadata,
pubMagicMetadata: encryptedPubMagicMetadata,
localID: file.localID, localID: file.localID,
}, },
fileKey: encryptedKey, fileKey: encryptedKey,

View file

@ -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<FilePublicMagicMetadata> {
const pubMagicMetadata = await updateMagicMetadataProps(
NEW_FILE_MAGIC_METADATA,
null,
publicMagicMetadataProps
);
return pubMagicMetadata;
}

View file

@ -35,6 +35,8 @@ import { uploadStreamUsingMultipart } from './multiPartUploadService';
import UIService from './uiService'; import UIService from './uiService';
import { USE_CF_PROXY } from 'constants/upload'; import { USE_CF_PROXY } from 'constants/upload';
import publicUploadHttpClient from './publicUploadHttpClient'; import publicUploadHttpClient from './publicUploadHttpClient';
import { constructPublicMagicMetadata } from './magicMetadataService';
import { FilePublicMagicMetadataProps } from 'types/file';
class UploadService { class UploadService {
private uploadURLs: UploadURL[] = []; private uploadURLs: UploadURL[] = [];
@ -142,6 +144,12 @@ class UploadService {
return clusterLivePhotoFiles(mediaFiles); return clusterLivePhotoFiles(mediaFiles);
} }
constructPublicMagicMetadata(
publicMagicMetadataProps: FilePublicMagicMetadataProps
) {
return constructPublicMagicMetadata(publicMagicMetadataProps);
}
async encryptAsset( async encryptAsset(
worker: any, worker: any,
file: FileWithMetadata, file: FileWithMetadata,
@ -203,6 +211,7 @@ class UploadService {
objectKey: thumbnailObjectKey, objectKey: thumbnailObjectKey,
}, },
metadata: file.metadata, metadata: file.metadata,
pubMagicMetadata: file.pubMagicMetadata,
}; };
return backupedFile; return backupedFile;
} catch (e) { } catch (e) {

View file

@ -1,4 +1,4 @@
import { EnteFile } from 'types/file'; import { EnteFile, FilePublicMagicMetadata } from 'types/file';
import { handleUploadError, CustomError } from 'utils/error'; import { handleUploadError, CustomError } from 'utils/error';
import { logError } from 'utils/sentry'; import { logError } from 'utils/sentry';
import { findMatchingExistingFiles } from 'utils/upload'; import { findMatchingExistingFiles } from 'utils/upload';
@ -6,12 +6,18 @@ import UIService from './uiService';
import UploadService from './uploadService'; import UploadService from './uploadService';
import { FILE_TYPE } from 'constants/file'; import { FILE_TYPE } from 'constants/file';
import { UPLOAD_RESULT, MAX_FILE_SIZE_SUPPORTED } from 'constants/upload'; 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 { addLocalLog, addLogLine } from 'utils/logging';
import { convertBytesToHumanReadable } from 'utils/file/size'; import { convertBytesToHumanReadable } from 'utils/file/size';
import { sleep } from 'utils/common'; import { sleep } from 'utils/common';
import { addToCollection } from 'services/collectionService'; import { addToCollection } from 'services/collectionService';
import uploadCancelService from './uploadCancelService'; import uploadCancelService from './uploadCancelService';
import uploadService from './uploadService';
interface UploadResponse { interface UploadResponse {
fileUploadResult: UPLOAD_RESULT; fileUploadResult: UPLOAD_RESULT;
@ -104,14 +110,18 @@ export default async function uploader(
if (file.hasStaticThumbnail) { if (file.hasStaticThumbnail) {
metadata.hasStaticThumbnail = true; metadata.hasStaticThumbnail = true;
} }
let pubMagicMetadata: FilePublicMagicMetadata;
if (uploaderName) { if (uploaderName) {
metadata.uploaderName = uploaderName; pubMagicMetadata = await uploadService.constructPublicMagicMetadata(
{ uploaderName }
);
} }
const fileWithMetadata = { const fileWithMetadata: FileWithMetadata = {
localID, localID,
filedata: file.filedata, filedata: file.filedata,
thumbnail: file.thumbnail, thumbnail: file.thumbnail,
metadata, metadata,
pubMagicMetadata,
}; };
if (uploadCancelService.isUploadCancelationRequested()) { if (uploadCancelService.isUploadCancelationRequested()) {

View file

@ -20,6 +20,7 @@ export interface FilePublicMagicMetadataProps {
editedTime?: number; editedTime?: number;
editedName?: string; editedName?: string;
caption?: string; caption?: string;
uploaderName?: string;
} }
export interface FilePublicMagicMetadata export interface FilePublicMagicMetadata

View file

@ -1,6 +1,7 @@
import { FILE_TYPE } from 'constants/file'; import { FILE_TYPE } from 'constants/file';
import { Collection } from 'types/collection'; import { Collection } from 'types/collection';
import { fileAttribute } from 'types/file'; import { fileAttribute, FilePublicMagicMetadata } from 'types/file';
import { EncryptedMagicMetadataCore } from 'types/magicMetadata';
export interface DataStream { export interface DataStream {
stream: ReadableStream<Uint8Array>; stream: ReadableStream<Uint8Array>;
@ -27,7 +28,6 @@ export interface Metadata {
hash?: string; hash?: string;
imageHash?: string; imageHash?: string;
videoHash?: string; videoHash?: string;
uploaderName?: string;
} }
export interface Location { export interface Location {
@ -120,6 +120,7 @@ export interface FileWithMetadata
extends Omit<FileInMemory, 'hasStaticThumbnail'> { extends Omit<FileInMemory, 'hasStaticThumbnail'> {
metadata: Metadata; metadata: Metadata;
localID: number; localID: number;
pubMagicMetadata: FilePublicMagicMetadata;
} }
export interface EncryptedFile { export interface EncryptedFile {
@ -130,6 +131,7 @@ export interface ProcessedFile {
file: fileAttribute; file: fileAttribute;
thumbnail: fileAttribute; thumbnail: fileAttribute;
metadata: fileAttribute; metadata: fileAttribute;
pubMagicMetadata: EncryptedMagicMetadataCore;
localID: number; localID: number;
} }
export interface BackupedFile extends Omit<ProcessedFile, 'localID'> {} export interface BackupedFile extends Omit<ProcessedFile, 'localID'> {}