ente/src/services/motionPhotoService.ts

35 lines
1 KiB
TypeScript
Raw Normal View History

import JSZip from 'jszip';
2021-08-11 15:59:59 +00:00
import { fileExtensionWithDot } from 'utils/file';
class MotionPhoto {
2021-08-11 15:59:59 +00:00
imageBlob: Uint8Array;
videoBlob: Uint8Array;
imageNameTitle: String;
videoNameTitle: String;
}
2021-08-11 15:59:59 +00:00
export const decodeMotionPhoto = async (
zipBlob: Blob,
originalName: string,
) => {
const zip = await JSZip.loadAsync(zipBlob, { createFolders: true });
const motionPhoto = new MotionPhoto();
for (const zipFilename in zip.files) {
if (zipFilename.startsWith('image')) {
motionPhoto.imageNameTitle =
originalName + fileExtensionWithDot(zipFilename);
motionPhoto.imageBlob = await zip.files[zipFilename].async(
'uint8array',
);
} else if (zipFilename.startsWith('video')) {
motionPhoto.videoNameTitle =
originalName + fileExtensionWithDot(zipFilename);
motionPhoto.videoBlob = await zip.files[zipFilename].async(
'uint8array',
);
}
}
return motionPhoto;
};