2021-08-11 09:46:57 +00:00
|
|
|
import downloadManager from "./downloadManager"
|
|
|
|
import { File } from './fileService';
|
|
|
|
import JSZip from 'jszip';
|
2021-08-11 10:23:30 +00:00
|
|
|
import { fileExtensionWithDot, fileNameWithoutExtension } from "utils/file";
|
2021-08-11 09:46:57 +00:00
|
|
|
|
|
|
|
class MotionPhoto {
|
|
|
|
imageBlob: Promise<Uint8Array>
|
|
|
|
videoBlob: Promise<Uint8Array>
|
2021-08-11 10:57:13 +00:00
|
|
|
imageNameTitle: String
|
|
|
|
videoNameTitle: String
|
2021-08-11 09:46:57 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
export const downloadAndDecodeMotionPhoto = async (file: File) => {
|
|
|
|
const fileStream = await downloadManager.downloadFile(file);
|
|
|
|
let zipBlob = await new Response(fileStream).blob();
|
|
|
|
return JSZip.loadAsync(zipBlob, { createFolders: true })
|
|
|
|
.then(function (zip) {
|
|
|
|
let instnace = new MotionPhoto();
|
2021-08-11 10:57:13 +00:00
|
|
|
let orignalName = fileNameWithoutExtension(file.metadata.title)
|
|
|
|
Object.keys(zip.files).forEach(function (zipFilename) {
|
|
|
|
if (zipFilename.startsWith("image")) {
|
|
|
|
instnace.imageNameTitle = orignalName() + fileExtensionWithDot(zipFilename);
|
|
|
|
instnace.imageBlob = zip.files[zipFilename].async('uint8array');
|
|
|
|
} else if (zipFilename.startsWith("video")) {
|
|
|
|
instnace.videoNameTitle = orignalName() + fileExtensionWithDot(zipFilename);
|
|
|
|
instnace.videoBlob = zip.files[zipFilename].async('uint8array');
|
2021-08-11 09:46:57 +00:00
|
|
|
}
|
|
|
|
})
|
|
|
|
return instnace;
|
|
|
|
});
|
2021-08-11 10:42:42 +00:00
|
|
|
}
|