split FileAttribute type into 3 separate sub types
This commit is contained in:
parent
693bfc6d12
commit
e216a29583
|
@ -11,7 +11,7 @@ import { SetProgressTracker } from 'components/FixLargeThumbnail';
|
||||||
import { getFileType } from 'services/typeDetectionService';
|
import { getFileType } from 'services/typeDetectionService';
|
||||||
import { getLocalTrash, getTrashedFiles } from './trashService';
|
import { getLocalTrash, getTrashedFiles } from './trashService';
|
||||||
import { EncryptionResult, UploadURL } from 'types/upload';
|
import { EncryptionResult, UploadURL } from 'types/upload';
|
||||||
import { fileAttribute } from 'types/file';
|
import { S3FileAttribute } from 'types/file';
|
||||||
import { USE_CF_PROXY } from 'constants/upload';
|
import { USE_CF_PROXY } from 'constants/upload';
|
||||||
|
|
||||||
const ENDPOINT = getEndpoint();
|
const ENDPOINT = getEndpoint();
|
||||||
|
@ -106,7 +106,7 @@ export async function uploadThumbnail(
|
||||||
fileKey: string,
|
fileKey: string,
|
||||||
updatedThumbnail: Uint8Array,
|
updatedThumbnail: Uint8Array,
|
||||||
uploadURL: UploadURL
|
uploadURL: UploadURL
|
||||||
): Promise<fileAttribute> {
|
): Promise<S3FileAttribute> {
|
||||||
const { file: encryptedThumbnail }: EncryptionResult =
|
const { file: encryptedThumbnail }: EncryptionResult =
|
||||||
await worker.encryptThumbnail(updatedThumbnail, fileKey);
|
await worker.encryptThumbnail(updatedThumbnail, fileKey);
|
||||||
let thumbnailObjectKey: string = null;
|
let thumbnailObjectKey: string = null;
|
||||||
|
@ -131,7 +131,7 @@ export async function uploadThumbnail(
|
||||||
|
|
||||||
export async function updateThumbnail(
|
export async function updateThumbnail(
|
||||||
fileID: number,
|
fileID: number,
|
||||||
newThumbnail: fileAttribute
|
newThumbnail: S3FileAttribute
|
||||||
) {
|
) {
|
||||||
try {
|
try {
|
||||||
const token = getToken();
|
const token = getToken();
|
||||||
|
|
|
@ -10,6 +10,7 @@ import {
|
||||||
ParsedMetadataJSONMap,
|
ParsedMetadataJSONMap,
|
||||||
DataStream,
|
DataStream,
|
||||||
ElectronFile,
|
ElectronFile,
|
||||||
|
MetadataEncryptionResult,
|
||||||
} from 'types/upload';
|
} from 'types/upload';
|
||||||
import { splitFilenameAndExtension } from 'utils/file';
|
import { splitFilenameAndExtension } from 'utils/file';
|
||||||
import { logError } from 'utils/sentry';
|
import { logError } from 'utils/sentry';
|
||||||
|
@ -105,7 +106,7 @@ export async function encryptFile(
|
||||||
|
|
||||||
const { file: encryptedThumbnail }: EncryptionResult =
|
const { file: encryptedThumbnail }: EncryptionResult =
|
||||||
await worker.encryptThumbnail(file.thumbnail, fileKey);
|
await worker.encryptThumbnail(file.thumbnail, fileKey);
|
||||||
const { file: encryptedMetadata }: EncryptionResult =
|
const { file: encryptedMetadata }: MetadataEncryptionResult =
|
||||||
await worker.encryptMetadata(file.metadata, fileKey);
|
await worker.encryptMetadata(file.metadata, fileKey);
|
||||||
|
|
||||||
const encryptedKey: B64EncryptionResult = await worker.encryptToB64(
|
const encryptedKey: B64EncryptionResult = await worker.encryptToB64(
|
||||||
|
|
|
@ -1,9 +1,18 @@
|
||||||
import { MagicMetadataCore, VISIBILITY_STATE } from 'types/magicMetadata';
|
import { MagicMetadataCore, VISIBILITY_STATE } from 'types/magicMetadata';
|
||||||
import { DataStream, Metadata } from 'types/upload';
|
import { DataStream, Metadata } from 'types/upload';
|
||||||
|
|
||||||
export interface fileAttribute {
|
export interface FileAttribute {
|
||||||
encryptedData?: DataStream | Uint8Array;
|
encryptedData: DataStream | Uint8Array;
|
||||||
objectKey?: string;
|
decryptionHeader: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface B64FileAttribute {
|
||||||
|
encryptedData: string;
|
||||||
|
decryptionHeader: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface S3FileAttribute {
|
||||||
|
objectKey: string;
|
||||||
decryptionHeader: string;
|
decryptionHeader: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -36,8 +45,8 @@ export interface EnteFile {
|
||||||
id: number;
|
id: number;
|
||||||
collectionID: number;
|
collectionID: number;
|
||||||
ownerID: number;
|
ownerID: number;
|
||||||
file: fileAttribute;
|
file: S3FileAttribute;
|
||||||
thumbnail: fileAttribute;
|
thumbnail: S3FileAttribute;
|
||||||
metadata: Metadata;
|
metadata: Metadata;
|
||||||
info: EnteFileInfo;
|
info: EnteFileInfo;
|
||||||
magicMetadata: FileMagicMetadata;
|
magicMetadata: FileMagicMetadata;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
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 { B64FileAttribute, FileAttribute, S3FileAttribute } from 'types/file';
|
||||||
|
|
||||||
export interface DataStream {
|
export interface DataStream {
|
||||||
stream: ReadableStream<Uint8Array>;
|
stream: ReadableStream<Uint8Array>;
|
||||||
|
@ -12,7 +12,12 @@ export function isDataStream(object: any): object is DataStream {
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface EncryptionResult {
|
export interface EncryptionResult {
|
||||||
file: fileAttribute;
|
file: FileAttribute;
|
||||||
|
key: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface MetadataEncryptionResult {
|
||||||
|
file: B64FileAttribute;
|
||||||
key: string;
|
key: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -126,12 +131,17 @@ export interface EncryptedFile {
|
||||||
fileKey: B64EncryptionResult;
|
fileKey: B64EncryptionResult;
|
||||||
}
|
}
|
||||||
export interface ProcessedFile {
|
export interface ProcessedFile {
|
||||||
file: fileAttribute;
|
file: FileAttribute;
|
||||||
thumbnail: fileAttribute;
|
thumbnail: FileAttribute;
|
||||||
metadata: fileAttribute;
|
metadata: B64FileAttribute;
|
||||||
localID: number;
|
localID: number;
|
||||||
}
|
}
|
||||||
export interface BackupedFile extends Omit<ProcessedFile, 'localID'> {}
|
|
||||||
|
export interface BackupedFile {
|
||||||
|
file: S3FileAttribute;
|
||||||
|
thumbnail: S3FileAttribute;
|
||||||
|
metadata: B64FileAttribute;
|
||||||
|
}
|
||||||
|
|
||||||
export interface UploadFile extends BackupedFile {
|
export interface UploadFile extends BackupedFile {
|
||||||
collectionID: number;
|
collectionID: number;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import { SelectedState } from 'types/gallery';
|
import { SelectedState } from 'types/gallery';
|
||||||
import {
|
import {
|
||||||
|
B64FileAttribute,
|
||||||
EnteFile,
|
EnteFile,
|
||||||
fileAttribute,
|
|
||||||
FileMagicMetadataProps,
|
FileMagicMetadataProps,
|
||||||
FilePublicMagicMetadataProps,
|
FilePublicMagicMetadataProps,
|
||||||
} from 'types/file';
|
} from 'types/file';
|
||||||
|
@ -199,7 +199,7 @@ export async function decryptFile(file: EnteFile, collectionKey: string) {
|
||||||
file.keyDecryptionNonce,
|
file.keyDecryptionNonce,
|
||||||
collectionKey
|
collectionKey
|
||||||
);
|
);
|
||||||
const encryptedMetadata = file.metadata as unknown as fileAttribute;
|
const encryptedMetadata = file.metadata as unknown as B64FileAttribute;
|
||||||
file.metadata = await worker.decryptMetadata(
|
file.metadata = await worker.decryptMetadata(
|
||||||
encryptedMetadata.encryptedData,
|
encryptedMetadata.encryptedData,
|
||||||
encryptedMetadata.decryptionHeader,
|
encryptedMetadata.decryptionHeader,
|
||||||
|
|
Loading…
Reference in a new issue