Replace
This commit is contained in:
parent
27a2b087c7
commit
871cb417d6
|
@ -1,32 +0,0 @@
|
|||
import JSZip from "jszip";
|
||||
import { EnteFile } from "types/file";
|
||||
import {
|
||||
getFileExtensionWithDot,
|
||||
getFileNameWithoutExtension,
|
||||
} from "utils/file";
|
||||
|
||||
class LivePhoto {
|
||||
image: Uint8Array;
|
||||
video: Uint8Array;
|
||||
imageNameTitle: string;
|
||||
videoNameTitle: string;
|
||||
}
|
||||
|
||||
export const decodeLivePhoto = async (file: EnteFile, zipBlob: Blob) => {
|
||||
const originalName = getFileNameWithoutExtension(file.metadata.title);
|
||||
const zip = await JSZip.loadAsync(zipBlob, { createFolders: true });
|
||||
|
||||
const livePhoto = new LivePhoto();
|
||||
for (const zipFilename in zip.files) {
|
||||
if (zipFilename.startsWith("image")) {
|
||||
livePhoto.imageNameTitle =
|
||||
originalName + getFileExtensionWithDot(zipFilename);
|
||||
livePhoto.image = await zip.files[zipFilename].async("uint8array");
|
||||
} else if (zipFilename.startsWith("video")) {
|
||||
livePhoto.videoNameTitle =
|
||||
originalName + getFileExtensionWithDot(zipFilename);
|
||||
livePhoto.video = await zip.files[zipFilename].async("uint8array");
|
||||
}
|
||||
}
|
||||
return livePhoto;
|
||||
};
|
|
@ -38,7 +38,7 @@ import { writeStream } from "utils/native-stream";
|
|||
import { getAllLocalCollections } from "../collectionService";
|
||||
import downloadManager from "../download";
|
||||
import { getAllLocalFiles } from "../fileService";
|
||||
import { decodeLivePhoto } from "../livePhotoService";
|
||||
import { decodeLivePhoto } from "@/media/live-photo";
|
||||
import { migrateExport } from "./migration";
|
||||
|
||||
/** Name of the JSON file in which we keep the state of the export. */
|
||||
|
@ -1017,7 +1017,7 @@ class ExportService {
|
|||
) {
|
||||
const electron = ensureElectron();
|
||||
const fileBlob = await new Response(fileStream).blob();
|
||||
const livePhoto = await decodeLivePhoto(file, fileBlob);
|
||||
const livePhoto = await decodeLivePhoto(file.metadata.title, fileBlob);
|
||||
const imageExportName = await safeFileName(
|
||||
collectionExportPath,
|
||||
livePhoto.imageNameTitle,
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
import { decodeLivePhoto } from "@/media/live-photo";
|
||||
import { ensureElectron } from "@/next/electron";
|
||||
import log from "@/next/log";
|
||||
import { LS_KEYS, getData } from "@ente/shared/storage/localStorage";
|
||||
|
@ -7,7 +8,6 @@ import { FILE_TYPE } from "constants/file";
|
|||
import { getLocalCollections } from "services/collectionService";
|
||||
import downloadManager from "services/download";
|
||||
import { getAllLocalFiles } from "services/fileService";
|
||||
import { decodeLivePhoto } from "services/livePhotoService";
|
||||
import { Collection } from "types/collection";
|
||||
import {
|
||||
CollectionExportNames,
|
||||
|
@ -318,7 +318,10 @@ async function getFileExportNamesFromExportedFiles(
|
|||
if (file.metadata.fileType === FILE_TYPE.LIVE_PHOTO) {
|
||||
const fileStream = await downloadManager.getFile(file);
|
||||
const fileBlob = await new Response(fileStream).blob();
|
||||
const livePhoto = await decodeLivePhoto(file, fileBlob);
|
||||
const livePhoto = await decodeLivePhoto(
|
||||
file.metadata.title,
|
||||
fileBlob,
|
||||
);
|
||||
const imageExportName = getUniqueFileExportNameForMigration(
|
||||
collectionPath,
|
||||
livePhoto.imageNameTitle,
|
||||
|
|
|
@ -1,48 +0,0 @@
|
|||
import JSZip from "jszip";
|
||||
import { EnteFile } from "types/file";
|
||||
import {
|
||||
getFileExtensionWithDot,
|
||||
getFileNameWithoutExtension,
|
||||
} from "utils/file";
|
||||
|
||||
/**
|
||||
* An in-memory representation of a live photo
|
||||
*/
|
||||
class LivePhoto {
|
||||
image: Uint8Array;
|
||||
video: Uint8Array;
|
||||
imageNameTitle: string;
|
||||
videoNameTitle: string;
|
||||
}
|
||||
|
||||
export const decodeLivePhoto = async (file: EnteFile, zipBlob: Blob) => {
|
||||
const originalName = getFileNameWithoutExtension(file.metadata.title);
|
||||
const zip = await JSZip.loadAsync(zipBlob, { createFolders: true });
|
||||
|
||||
const livePhoto = new LivePhoto();
|
||||
for (const zipFilename in zip.files) {
|
||||
if (zipFilename.startsWith("image")) {
|
||||
livePhoto.imageNameTitle =
|
||||
originalName + getFileExtensionWithDot(zipFilename);
|
||||
livePhoto.image = await zip.files[zipFilename].async("uint8array");
|
||||
} else if (zipFilename.startsWith("video")) {
|
||||
livePhoto.videoNameTitle =
|
||||
originalName + getFileExtensionWithDot(zipFilename);
|
||||
livePhoto.video = await zip.files[zipFilename].async("uint8array");
|
||||
}
|
||||
}
|
||||
return livePhoto;
|
||||
};
|
||||
|
||||
export const encodeLivePhoto = async (livePhoto: LivePhoto) => {
|
||||
const zip = new JSZip();
|
||||
zip.file(
|
||||
"image" + getFileExtensionWithDot(livePhoto.imageNameTitle),
|
||||
livePhoto.image,
|
||||
);
|
||||
zip.file(
|
||||
"video" + getFileExtensionWithDot(livePhoto.videoNameTitle),
|
||||
livePhoto.video,
|
||||
);
|
||||
return await zip.generateAsync({ type: "uint8array" });
|
||||
};
|
|
@ -1,9 +1,9 @@
|
|||
import { decodeLivePhoto } from "@/media/live-photo";
|
||||
import log from "@/next/log";
|
||||
import { FILE_TYPE } from "constants/file";
|
||||
import PQueue from "p-queue";
|
||||
import DownloadManager from "services/download";
|
||||
import { getLocalFiles } from "services/fileService";
|
||||
import { decodeLivePhoto } from "services/livePhotoService";
|
||||
import { EnteFile } from "types/file";
|
||||
import { Dimensions } from "types/image";
|
||||
import {
|
||||
|
@ -134,7 +134,7 @@ async function getOriginalConvertedFile(file: EnteFile, queue?: PQueue) {
|
|||
if (file.metadata.fileType === FILE_TYPE.IMAGE) {
|
||||
return await getRenderableImage(file.metadata.title, fileBlob);
|
||||
} else {
|
||||
const livePhoto = await decodeLivePhoto(file, fileBlob);
|
||||
const livePhoto = await decodeLivePhoto(file.metadata.title, fileBlob);
|
||||
return await getRenderableImage(
|
||||
livePhoto.imageNameTitle,
|
||||
new Blob([livePhoto.image]),
|
||||
|
|
Loading…
Reference in a new issue