wrap electron file in getUint8ArrayView function

This commit is contained in:
Abhinav 2022-05-23 18:02:00 +05:30
parent 593eee8992
commit 381bd9ab95
3 changed files with 46 additions and 69 deletions

View file

@ -1,7 +1,9 @@
import { ElectronFile } from 'types/upload';
import { logError } from 'utils/sentry';
export async function getUint8ArrayView(file: Blob): Promise<Uint8Array> {
export async function getUint8ArrayView(
file: Blob | ElectronFile
): Promise<Uint8Array> {
try {
return new Uint8Array(await file.arrayBuffer());
} catch (e) {

View file

@ -22,7 +22,6 @@ import {
getUint8ArrayView,
} from '../readerService';
import { generateThumbnail } from './thumbnailService';
import { convertBytesToHumanReadable } from 'utils/billing';
const EDITED_FILE_SUFFIX = '-edited';
@ -38,43 +37,34 @@ export async function readFile(
fileTypeInfo: FileTypeInfo,
rawFile: File | ElectronFile
): Promise<FileInMemory> {
try {
const { thumbnail, hasStaticThumbnail } = await generateThumbnail(
rawFile,
fileTypeInfo
);
logUploadInfo(`reading file data ${getFileNameSize(rawFile)} `);
let filedata: Uint8Array | DataStream;
if (!(rawFile instanceof File)) {
if (rawFile.size > MULTIPART_PART_SIZE) {
filedata = await getElectronFileStream(
rawFile,
FILE_READER_CHUNK_SIZE
);
} else {
filedata = await rawFile.arrayBuffer();
}
} else if (rawFile.size > MULTIPART_PART_SIZE) {
filedata = getFileStream(rawFile, FILE_READER_CHUNK_SIZE);
const { thumbnail, hasStaticThumbnail } = await generateThumbnail(
rawFile,
fileTypeInfo
);
logUploadInfo(`reading file data ${getFileNameSize(rawFile)} `);
let filedata: Uint8Array | DataStream;
if (!(rawFile instanceof File)) {
if (rawFile.size > MULTIPART_PART_SIZE) {
filedata = await getElectronFileStream(
rawFile,
FILE_READER_CHUNK_SIZE
);
} else {
filedata = await getUint8ArrayView(rawFile);
}
logUploadInfo(
`read file data successfully ${getFileNameSize(rawFile)} `
);
return {
filedata,
thumbnail,
hasStaticThumbnail,
};
} catch (e) {
logError(e, 'failed to read file', {
fileSize: convertBytesToHumanReadable(rawFile.size),
});
throw e;
} else if (rawFile.size > MULTIPART_PART_SIZE) {
filedata = getFileStream(rawFile, FILE_READER_CHUNK_SIZE);
} else {
filedata = await getUint8ArrayView(rawFile);
}
logUploadInfo(`read file data successfully ${getFileNameSize(rawFile)} `);
return {
filedata,
thumbnail,
hasStaticThumbnail,
};
}
export async function extractFileMetadata(

View file

@ -8,7 +8,6 @@ import {
LivePhotoAssets,
Metadata,
} from 'types/upload';
import { convertBytesToHumanReadable } from 'utils/billing';
import { CustomError } from 'utils/error';
import { isImageOrVideo, splitFilenameAndExtension } from 'utils/file';
import { logError } from 'utils/sentry';
@ -76,42 +75,28 @@ export async function readLivePhoto(
fileTypeInfo: FileTypeInfo,
livePhotoAssets: LivePhotoAssets
) {
try {
const { thumbnail, hasStaticThumbnail } = await generateThumbnail(
livePhotoAssets.image,
{
exactType: fileTypeInfo.imageType,
fileType: FILE_TYPE.IMAGE,
}
);
const { thumbnail, hasStaticThumbnail } = await generateThumbnail(
livePhotoAssets.image,
{
exactType: fileTypeInfo.imageType,
fileType: FILE_TYPE.IMAGE,
}
);
const image =
livePhotoAssets.image instanceof File
? await getUint8ArrayView(livePhotoAssets.image)
: await livePhotoAssets.image.arrayBuffer();
const image = await getUint8ArrayView(livePhotoAssets.image);
const video =
livePhotoAssets.video instanceof File
? await getUint8ArrayView(livePhotoAssets.video)
: await livePhotoAssets.video.arrayBuffer();
const video = await getUint8ArrayView(livePhotoAssets.video);
return {
filedata: await encodeMotionPhoto({
image,
video,
imageNameTitle: livePhotoAssets.image.name,
videoNameTitle: livePhotoAssets.video.name,
}),
thumbnail,
hasStaticThumbnail,
};
} catch (e) {
logError(e, 'failed to read live photo assets', {
imageSize: convertBytesToHumanReadable(livePhotoAssets.image.size),
videoSize: convertBytesToHumanReadable(livePhotoAssets.video.size),
});
throw e;
}
return {
filedata: await encodeMotionPhoto({
image,
video,
imageNameTitle: livePhotoAssets.image.name,
videoNameTitle: livePhotoAssets.video.name,
}),
thumbnail,
hasStaticThumbnail,
};
}
export function clusterLivePhotoFiles(mediaFiles: FileWithCollection[]) {