upgradeSchema: New keepOnDisk option, used for edits

This commit is contained in:
Scott Nonnenberg 2024-01-08 16:31:24 -08:00
parent 661727c290
commit d1aa47544b
4 changed files with 27 additions and 17 deletions

View file

@ -111,7 +111,7 @@ type MigrationsModuleType = {
}>;
upgradeMessageSchema: (
attributes: MessageAttributesType,
options?: { maxVersion?: number }
options?: { maxVersion?: number; keepOnDisk?: boolean }
) => Promise<MessageAttributesType>;
writeMessageAttachments: (
message: MessageAttributesType
@ -266,24 +266,26 @@ export function initializeMigrations({
}),
upgradeMessageSchema: (
message: MessageAttributesType,
options: { maxVersion?: number } = {}
options: { maxVersion?: number; keepOnDisk?: boolean } = {}
) => {
const { maxVersion } = options;
const { maxVersion, keepOnDisk } = options;
return MessageType.upgradeSchema(message, {
writeNewAttachmentData,
getRegionCode,
deleteOnDisk,
getAbsoluteAttachmentPath,
makeObjectUrl,
revokeObjectUrl,
getAbsoluteStickerPath,
getImageDimensions,
getRegionCode,
makeImageThumbnail,
makeObjectUrl,
makeVideoScreenshot,
revokeObjectUrl,
writeNewAttachmentData,
writeNewStickerData,
keepOnDisk,
logger,
maxVersion,
getAbsoluteStickerPath,
writeNewStickerData,
deleteOnDisk,
});
},
writeMessageAttachments: MessageType.createAttachmentDataWriter({

View file

@ -52,6 +52,7 @@ export type ContextType = {
height: number;
}>;
getRegionCode: () => string | undefined;
keepOnDisk?: boolean;
logger: LoggerType;
makeImageThumbnail: (params: {
size: number;
@ -380,14 +381,19 @@ const toVersion1 = _withSchemaVersion({
context,
options
): Promise<AttachmentType> => {
const { deleteOnDisk } = context;
const { deleteOnDisk, keepOnDisk } = context;
const rotatedAttachment = await autoOrientJPEG(
attachment,
context,
options
);
if (attachment.path) {
if (
!keepOnDisk &&
attachment !== rotatedAttachment &&
rotatedAttachment.data &&
attachment.path
) {
await deleteOnDisk(attachment.path);
}
@ -500,6 +506,7 @@ export const upgradeSchema = async (
makeVideoScreenshot,
writeNewStickerData,
deleteOnDisk,
keepOnDisk,
logger,
maxVersion = CURRENT_SCHEMA_VERSION,
}: ContextType
@ -559,6 +566,7 @@ export const upgradeSchema = async (
getImageDimensions,
makeImageThumbnail,
makeVideoScreenshot,
keepOnDisk,
logger,
getAbsoluteStickerPath,
getRegionCode,
@ -640,7 +648,7 @@ export const processNewAttachment = async (
logger,
});
if (attachment.path) {
if (rotatedAttachment !== attachment && attachment.path) {
await deleteOnDisk(attachment.path);
}
}

View file

@ -2,7 +2,6 @@
// SPDX-License-Identifier: AGPL-3.0-only
import type { MessageModel } from '../models/messages';
import * as log from '../logging/log';
import { getEnvironment, Environment } from '../environment';
export function getMessageModelLogger(model: MessageModel): MessageModel {
@ -37,8 +36,6 @@ export function getMessageModelLogger(model: MessageModel): MessageModel {
// Disallowed set of methods & attributes
log.warn(`MessageModelLogger: model.${property}`, new Error().stack);
if (typeof target[property] === 'function') {
return target[property].bind(target);
}

View file

@ -134,7 +134,10 @@ export async function handleEditMessage(
}
const upgradedEditedMessageData =
await window.Signal.Migrations.upgradeMessageSchema(editAttributes.message);
await window.Signal.Migrations.upgradeMessageSchema(
editAttributes.message,
{ keepOnDisk: true }
);
// Copies over the attachments from the main message if they're the same
// and they have already been downloaded.