Support to getting image & video name for motion photo

This commit is contained in:
Neeraj Gupta 2021-08-11 15:53:30 +05:30
parent 95177238f8
commit 37d5539646
2 changed files with 30 additions and 0 deletions

View file

@ -1,10 +1,25 @@
import downloadManager from "./downloadManager"
import { File } from './fileService';
import JSZip from 'jszip';
import { fileExtensionWithDot, fileNameWithoutExtension } from "utils/file";
class MotionPhoto {
imageBlob: Promise<Uint8Array>
videoBlob: Promise<Uint8Array>
title: String
// name of the file which contains image
_zipImageName: String
// name of the file which contains video
_zipVideoName: String
imageName() {
return fileNameWithoutExtension(this.title) + fileExtensionWithDot(this._zipImageName);
}
videoName() {
return fileNameWithoutExtension(this.title) + fileExtensionWithDot(this._zipVideoName);
}
}
export const downloadAndDecodeMotionPhoto = async (file: File) => {
@ -13,10 +28,13 @@ export const downloadAndDecodeMotionPhoto = async (file: File) => {
return JSZip.loadAsync(zipBlob, { createFolders: true })
.then(function (zip) {
let instnace = new MotionPhoto();
instnace.title = file.metadata.title
Object.keys(zip.files).forEach(function (filename) {
if (filename.startsWith("image")) {
instnace._zipImageName = filename
instnace.imageBlob = zip.files[filename].async('uint8array');
} else if (filename.startsWith("video")) {
instnace._zipVideoName = filename
instnace.videoBlob = zip.files[filename].async('uint8array');
}
})

View file

@ -146,3 +146,15 @@ export function removeUnneccessaryFileProps(files:File[]):File[] {
});
return stripedFiles;
}
export function fileNameWithoutExtension(filename) {
var lastDotPosition = filename.lastIndexOf(".");
if (lastDotPosition === -1) return filename;
else return filename.substr(0, lastDotPosition);
}
export function fileExtensionWithDot(filename) {
var lastDotPosition = filename.lastIndexOf(".");
if (lastDotPosition === -1) return "";
else return filename.substr(lastDotPosition);
}