Merge pull request #601 from ente-io/handle-file-permission-denied
better handle metadata extraction error
This commit is contained in:
commit
98e3965365
|
@ -21,6 +21,7 @@ import { CustomError } from 'utils/error';
|
||||||
import { Collection } from 'types/collection';
|
import { Collection } from 'types/collection';
|
||||||
import { EnteFile } from 'types/file';
|
import { EnteFile } from 'types/file';
|
||||||
import {
|
import {
|
||||||
|
ElectronFile,
|
||||||
FileWithCollection,
|
FileWithCollection,
|
||||||
MetadataAndFileTypeInfo,
|
MetadataAndFileTypeInfo,
|
||||||
MetadataAndFileTypeInfoMap,
|
MetadataAndFileTypeInfoMap,
|
||||||
|
@ -227,50 +228,20 @@ class UploadManager {
|
||||||
logUploadInfo(`extractMetadataFromFiles executed`);
|
logUploadInfo(`extractMetadataFromFiles executed`);
|
||||||
UIService.reset(mediaFiles.length);
|
UIService.reset(mediaFiles.length);
|
||||||
for (const { file, localID, collectionID } of mediaFiles) {
|
for (const { file, localID, collectionID } of mediaFiles) {
|
||||||
|
let fileTypeInfo = null;
|
||||||
|
let metadata = null;
|
||||||
try {
|
try {
|
||||||
const { fileTypeInfo, metadata } = await (async () => {
|
const result = await this.extractFileTypeAndMetadata(
|
||||||
if (file.size >= MAX_FILE_SIZE_SUPPORTED) {
|
|
||||||
logUploadInfo(
|
|
||||||
`${getFileNameSize(
|
|
||||||
file
|
|
||||||
)} rejected because of large size`
|
|
||||||
);
|
|
||||||
|
|
||||||
return { fileTypeInfo: null, metadata: null };
|
|
||||||
}
|
|
||||||
const fileTypeInfo = await UploadService.getFileType(
|
|
||||||
file
|
|
||||||
);
|
|
||||||
if (fileTypeInfo.fileType === FILE_TYPE.OTHERS) {
|
|
||||||
logUploadInfo(
|
|
||||||
`${getFileNameSize(
|
|
||||||
file
|
|
||||||
)} rejected because of unknown file format`
|
|
||||||
);
|
|
||||||
return { fileTypeInfo, metadata: null };
|
|
||||||
}
|
|
||||||
logUploadInfo(
|
|
||||||
` extracting ${getFileNameSize(file)} metadata`
|
|
||||||
);
|
|
||||||
const metadata =
|
|
||||||
(await UploadService.extractFileMetadata(
|
|
||||||
file,
|
file,
|
||||||
collectionID,
|
collectionID
|
||||||
fileTypeInfo
|
);
|
||||||
)) || null;
|
fileTypeInfo = result.fileTypeInfo;
|
||||||
return { fileTypeInfo, metadata };
|
metadata = result.metadata;
|
||||||
})();
|
|
||||||
|
|
||||||
logUploadInfo(
|
logUploadInfo(
|
||||||
`metadata extraction successful${getFileNameSize(
|
`metadata extraction successful${getFileNameSize(
|
||||||
file
|
file
|
||||||
)} `
|
)} `
|
||||||
);
|
);
|
||||||
this.metadataAndFileTypeInfoMap.set(localID, {
|
|
||||||
fileTypeInfo: fileTypeInfo && { ...fileTypeInfo },
|
|
||||||
metadata: metadata && { ...metadata },
|
|
||||||
});
|
|
||||||
UIService.increaseFileUploaded();
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
logError(e, 'metadata extraction failed for a file');
|
logError(e, 'metadata extraction failed for a file');
|
||||||
logUploadInfo(
|
logUploadInfo(
|
||||||
|
@ -279,6 +250,11 @@ class UploadManager {
|
||||||
)} error: ${e.message}`
|
)} error: ${e.message}`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
this.metadataAndFileTypeInfoMap.set(localID, {
|
||||||
|
fileTypeInfo: fileTypeInfo && { ...fileTypeInfo },
|
||||||
|
metadata: metadata && { ...metadata },
|
||||||
|
});
|
||||||
|
UIService.increaseFileUploaded();
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
logError(e, 'error extracting metadata');
|
logError(e, 'error extracting metadata');
|
||||||
|
@ -286,6 +262,36 @@ class UploadManager {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async extractFileTypeAndMetadata(
|
||||||
|
file: File | ElectronFile,
|
||||||
|
collectionID: number
|
||||||
|
) {
|
||||||
|
if (file.size >= MAX_FILE_SIZE_SUPPORTED) {
|
||||||
|
logUploadInfo(
|
||||||
|
`${getFileNameSize(file)} rejected because of large size`
|
||||||
|
);
|
||||||
|
|
||||||
|
return { fileTypeInfo: null, metadata: null };
|
||||||
|
}
|
||||||
|
const fileTypeInfo = await UploadService.getFileType(file);
|
||||||
|
if (fileTypeInfo.fileType === FILE_TYPE.OTHERS) {
|
||||||
|
logUploadInfo(
|
||||||
|
`${getFileNameSize(
|
||||||
|
file
|
||||||
|
)} rejected because of unknown file format`
|
||||||
|
);
|
||||||
|
return { fileTypeInfo, metadata: null };
|
||||||
|
}
|
||||||
|
logUploadInfo(` extracting ${getFileNameSize(file)} metadata`);
|
||||||
|
const metadata =
|
||||||
|
(await UploadService.extractFileMetadata(
|
||||||
|
file,
|
||||||
|
collectionID,
|
||||||
|
fileTypeInfo
|
||||||
|
)) || null;
|
||||||
|
return { fileTypeInfo, metadata };
|
||||||
|
}
|
||||||
|
|
||||||
private async uploadMediaFiles(mediaFiles: FileWithCollection[]) {
|
private async uploadMediaFiles(mediaFiles: FileWithCollection[]) {
|
||||||
logUploadInfo(`uploadMediaFiles called`);
|
logUploadInfo(`uploadMediaFiles called`);
|
||||||
this.filesToBeUploaded.push(...mediaFiles);
|
this.filesToBeUploaded.push(...mediaFiles);
|
||||||
|
|
Loading…
Reference in a new issue