fix type passed to thumbnail generation for heic detection

This commit is contained in:
Abhinav 2022-02-15 16:32:42 +05:30
parent acbbfdf405
commit f58108a55f

View file

@ -22,15 +22,21 @@ interface LivePhotoIdentifier {
size: number; size: number;
} }
interface Asset {
file: File;
metadata: Metadata;
fileTypeInfo: FileTypeInfo;
}
const ENTE_LIVE_PHOTO_FORMAT = 'elp'; const ENTE_LIVE_PHOTO_FORMAT = 'elp';
export function getLivePhotoFileType( export function getLivePhotoFileType(
file1TypeInfo: FileTypeInfo, imageFileTypeInfo: FileTypeInfo,
file2TypeInfo: FileTypeInfo videoTypeInfo: FileTypeInfo
) { ) {
return { return {
fileType: FILE_TYPE.LIVE_PHOTO, fileType: FILE_TYPE.LIVE_PHOTO,
exactType: `${file1TypeInfo.exactType}+${file2TypeInfo.exactType}`, exactType: `${imageFileTypeInfo.exactType}+${videoTypeInfo.exactType}`,
}; };
} }
@ -54,11 +60,18 @@ export async function readLivePhoto(
fileTypeInfo: FileTypeInfo, fileTypeInfo: FileTypeInfo,
livePhotoAssets: LivePhotoAssets livePhotoAssets: LivePhotoAssets
) { ) {
const imageType = fileTypeInfo.exactType.slice(
0,
fileTypeInfo.exactType.indexOf('+')
);
const { thumbnail, hasStaticThumbnail } = await generateThumbnail( const { thumbnail, hasStaticThumbnail } = await generateThumbnail(
worker, worker,
reader, reader,
livePhotoAssets.image, livePhotoAssets.image,
{ exactType: fileTypeInfo.exactType, fileType: FILE_TYPE.IMAGE } {
exactType: imageType,
fileType: FILE_TYPE.IMAGE,
}
); );
const image = await getUint8ArrayView(reader, livePhotoAssets.image); const image = await getUint8ArrayView(reader, livePhotoAssets.image);
@ -120,34 +133,51 @@ export function clusterLivePhotoFiles(mediaFiles: FileWithCollection[]) {
if ( if (
areFilesLivePhotoAssets(firstFileIdentifier, secondFileIdentifier) areFilesLivePhotoAssets(firstFileIdentifier, secondFileIdentifier)
) { ) {
let imageFile: File; let imageAsset: Asset;
let videoFile: File; let videoAsset: Asset;
let imageMetadata: Metadata;
if ( if (
firstFileTypeInfo.fileType === FILE_TYPE.IMAGE && firstFileTypeInfo.fileType === FILE_TYPE.IMAGE &&
secondFileFileInfo.fileType === FILE_TYPE.VIDEO secondFileFileInfo.fileType === FILE_TYPE.VIDEO
) { ) {
imageFile = firstMediaFile.file; imageAsset = {
imageMetadata = firstFileMetadata; file: firstMediaFile.file,
videoFile = secondMediaFile.file; metadata: firstFileMetadata,
fileTypeInfo: firstFileTypeInfo,
};
videoAsset = {
file: secondMediaFile.file,
metadata: secondFileMetadata,
fileTypeInfo: secondFileFileInfo,
};
} else { } else {
imageFile = secondMediaFile.file; videoAsset = {
imageMetadata = secondFileMetadata; file: firstMediaFile.file,
videoFile = firstMediaFile.file; metadata: firstFileMetadata,
fileTypeInfo: firstFileTypeInfo,
};
imageAsset = {
file: secondMediaFile.file,
metadata: secondFileMetadata,
fileTypeInfo: secondFileFileInfo,
};
} }
const livePhotoLocalID = index; const livePhotoLocalID = index;
analysedMediaFiles.push({ analysedMediaFiles.push({
localID: livePhotoLocalID, localID: livePhotoLocalID,
collectionID: firstMediaFile.collectionID, collectionID: firstMediaFile.collectionID,
isLivePhoto: true, isLivePhoto: true,
livePhotoAssets: { image: imageFile, video: videoFile }, livePhotoAssets: {
image: imageAsset.file,
video: videoAsset.file,
},
}); });
const livePhotoFileTypeInfo: FileTypeInfo = getLivePhotoFileType( const livePhotoFileTypeInfo: FileTypeInfo = getLivePhotoFileType(
firstFileTypeInfo, imageAsset.fileTypeInfo,
secondFileFileInfo videoAsset.fileTypeInfo
);
const livePhotoMetadata: Metadata = getLivePhotoMetadata(
imageAsset.metadata
); );
const livePhotoMetadata: Metadata =
getLivePhotoMetadata(imageMetadata);
uploadService.setFileMetadataAndFileTypeInfo(livePhotoLocalID, { uploadService.setFileMetadataAndFileTypeInfo(livePhotoLocalID, {
fileTypeInfo: { ...livePhotoFileTypeInfo }, fileTypeInfo: { ...livePhotoFileTypeInfo },
metadata: { ...livePhotoMetadata }, metadata: { ...livePhotoMetadata },