This commit is contained in:
Manav Rathi
2025-06-20 17:02:19 +05:30
parent 57d919b56f
commit eb5a0cb1db
3 changed files with 4 additions and 129 deletions

View File

@@ -1,122 +0,0 @@
/* TODO: Audit this file */
/* eslint-disable @typescript-eslint/ban-ts-comment */
import { encryptMetadataJSON } from "ente-base/crypto";
import { apiURL } from "ente-base/origins";
import { updateMagicMetadata } from "ente-gallery/services/magic-metadata";
import type {
EncryptedMagicMetadata,
EnteFile,
FilePublicMagicMetadata,
FilePublicMagicMetadataProps,
FileWithUpdatedPublicMagicMetadata,
} from "ente-media/file";
import { mergeMetadata } from "ente-media/file";
import HTTPService from "ente-shared/network/HTTPService";
import { getToken } from "ente-shared/storage/localStorage/helpers";
export interface UpdateMagicMetadataRequest {
id: number;
magicMetadata: EncryptedMagicMetadata;
}
interface BulkUpdateMagicMetadataRequest {
metadataList: UpdateMagicMetadataRequest[];
}
export const updateFilePublicMagicMetadata = async (
fileWithUpdatedPublicMagicMetadataList: FileWithUpdatedPublicMagicMetadata[],
): Promise<EnteFile[]> => {
const token = getToken();
if (!token) {
// @ts-ignore
return;
}
const reqBody: BulkUpdateMagicMetadataRequest = { metadataList: [] };
for (const {
file,
updatedPublicMagicMetadata,
} of fileWithUpdatedPublicMagicMetadataList) {
const { encryptedData, decryptionHeader } = await encryptMetadataJSON(
updatedPublicMagicMetadata.data,
file.key,
);
reqBody.metadataList.push({
id: file.id,
magicMetadata: {
version: updatedPublicMagicMetadata.version,
count: updatedPublicMagicMetadata.count,
data: encryptedData,
header: decryptionHeader,
},
});
}
await HTTPService.put(
await apiURL("/files/public-magic-metadata"),
reqBody,
// @ts-ignore
null,
{ "X-Auth-Token": token },
);
return fileWithUpdatedPublicMagicMetadataList.map(
({ file, updatedPublicMagicMetadata }): EnteFile => ({
...file,
pubMagicMetadata: {
...updatedPublicMagicMetadata,
version: updatedPublicMagicMetadata.version + 1,
},
}),
);
};
export async function changeFileName(
file: EnteFile,
editedName: string,
): Promise<EnteFile> {
const updatedPublicMagicMetadataProps: FilePublicMagicMetadataProps = {
editedName,
};
const updatedPublicMagicMetadata: FilePublicMagicMetadata =
await updateMagicMetadata(
updatedPublicMagicMetadataProps,
file.pubMagicMetadata,
file.key,
);
const updateResult = await updateFilePublicMagicMetadata([
{ file, updatedPublicMagicMetadata },
]);
// @ts-ignore
return updateResult[0];
}
export async function changeCaption(
file: EnteFile,
caption: string,
): Promise<EnteFile> {
const updatedPublicMagicMetadataProps: FilePublicMagicMetadataProps = {
caption,
};
const updatedPublicMagicMetadata: FilePublicMagicMetadata =
await updateMagicMetadata(
updatedPublicMagicMetadataProps,
file.pubMagicMetadata,
file.key,
);
const updateResult = await updateFilePublicMagicMetadata([
{ file, updatedPublicMagicMetadata },
]);
// @ts-ignore
return updateResult[0];
}
export function updateExistingFilePubMetadata(
existingFile: EnteFile,
updatedFile: EnteFile,
) {
// @ts-ignore
existingFile.pubMagicMetadata = updatedFile.pubMagicMetadata;
// @ts-ignore
existingFile.metadata = mergeMetadata([existingFile])[0].metadata;
}

View File

@@ -10,11 +10,9 @@ import log from "ente-base/log";
import { apiURL } from "ente-base/origins";
import { ensureAuthToken } from "ente-base/token";
import { fileLogID, type EnteFile } from "ente-media/file";
import {
filePublicMagicMetadata,
updateRemotePublicMagicMetadata,
} from "ente-media/file-metadata";
import { filePublicMagicMetadata } from "ente-media/file-metadata";
import { FileType } from "ente-media/file-type";
import { updateFilePublicMagicMetadata } from "ente-new/photos/services/file";
import {
getAllLocalFiles,
getLocalTrashFileIDs,
@@ -1040,7 +1038,7 @@ const processQueueItem = async ({
if (!res) {
log.info(`Generate HLS for ${fileLogID(file)} | not-required`);
// See: [Note: Marking files which do not need video processing]
await updateRemotePublicMagicMetadata(file, { sv: 1 });
await updateFilePublicMagicMetadata(file, { sv: 1 });
return;
}

View File

@@ -9,7 +9,6 @@ import {
import { authenticatedRequestHeaders, ensureOk } from "ente-base/http";
import { apiURL } from "ente-base/origins";
import { ensureMasterKeyFromSession } from "ente-base/session";
import type { UpdateMagicMetadataRequest } from "ente-gallery/services/file";
import {
CollectionSubType,
decryptRemoteCollection,
@@ -32,7 +31,7 @@ import {
} from "ente-media/magic-metadata";
import { batch } from "ente-utils/array";
import { z } from "zod/v4";
import { requestBatchSize } from "./file";
import { requestBatchSize, type UpdateMagicMetadataRequest } from "./file";
import { ensureUserKeyPair, getPublicKey } from "./user";
const uncategorizedCollectionName = "Uncategorized";