onlyoffice filename corrupted after editing (#686)

Fix #683 

Filename handling is going to be worth a major refactor
This commit is contained in:
ericlinagora
2024-10-11 14:55:22 +02:00
committed by GitHub
3 changed files with 23 additions and 4 deletions
@@ -94,6 +94,10 @@ async function report(platform: TdrivePlatform, args: ListArguments) {
` - ${formatTS(version.date_added)} by ${await formatUser(version.creator_id)}`, ` - ${formatTS(version.date_added)} by ${await formatUser(version.creator_id)}`,
); );
console.error(` - id: ${version.id}`); console.error(` - id: ${version.id}`);
if (dfile.name != version.filename)
console.error(` - filename: ${JSON.stringify(version.filename)}`);
if (dfile.name != version.file_metadata.name)
console.error(` - meta.name: ${JSON.stringify(version.file_metadata.name)}`);
console.error( console.error(
` - size: ${version.file_metadata.size} (${ ` - size: ${version.file_metadata.size} (${
version.file_metadata.size > previousSize ? "+" : "" version.file_metadata.size > previousSize ? "+" : ""
@@ -1150,7 +1150,15 @@ export class DocumentsService {
} }
if (file) { if (file) {
const fileEntity = await globalResolver.services.files.save(null, file, options, context); const fileEntity = await globalResolver.services.files.save(
null,
file,
{
...options,
filename: options.filename ?? driveFile.name,
},
context,
);
await globalResolver.services.documents.documents.createVersion( await globalResolver.services.documents.documents.createVersion(
driveFile.id, driveFile.id,
@@ -1160,6 +1168,7 @@ export class DocumentsService {
file_metadata: { file_metadata: {
external_id: fileEntity.id, external_id: fileEntity.id,
source: "internal", source: "internal",
name: file.filename ?? driveFile.name,
}, },
}, },
context, context,
@@ -1186,8 +1195,14 @@ export class DocumentsService {
)}`, )}`,
); );
} catch (error) { } catch (error) {
logger.error({ error: `${error}` }, "Failed to cancel editing Drive item"); logger.error(
CrudException.throwMe(error, new CrudException("Failed to cancel editing Drive item", 500)); { error: `${error}` },
`Failed to ${keepEditing ? "update" : "end"} editing Drive item`,
);
CrudException.throwMe(
error,
new CrudException(`Failed to ${keepEditing ? "update" : "end"} editing Drive item`, 500),
);
} }
} }
}; };
@@ -422,7 +422,7 @@ export class DocumentsController {
totalChunks: parseInt(q.resumableTotalChunks || q.total_chunks) || 1, totalChunks: parseInt(q.resumableTotalChunks || q.total_chunks) || 1,
totalSize: parseInt(q.resumableTotalSize || q.total_size) || 0, totalSize: parseInt(q.resumableTotalSize || q.total_size) || 0,
chunkNumber: parseInt(q.resumableChunkNumber || q.chunk_number) || 1, chunkNumber: parseInt(q.resumableChunkNumber || q.chunk_number) || 1,
filename: q.resumableFilename || q.filename || file?.filename || undefined, filename: q.filename || undefined,
type: q.resumableType || q.type || file?.mimetype || undefined, type: q.resumableType || q.type || file?.mimetype || undefined,
waitForThumbnail: !!q.thumbnail_sync, waitForThumbnail: !!q.thumbnail_sync,
ignoreThumbnails: false, ignoreThumbnails: false,