From cccae84ceea30da379e3787dec6ea523c8327567 Mon Sep 17 00:00:00 2001 From: Sergey Konovalov Date: Fri, 21 Jun 2024 17:38:59 +0300 Subject: [PATCH] [bug] Distinguish "Form" forcesave cache from others; Fix bug 68720 --- DocService/sources/DocsCoServer.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/DocService/sources/DocsCoServer.js b/DocService/sources/DocsCoServer.js index 54875406..525d94d2 100644 --- a/DocService/sources/DocsCoServer.js +++ b/DocService/sources/DocsCoServer.js @@ -836,7 +836,8 @@ function* setForceSave(ctx, docId, forceSave, cmd, success, url) { convertInfo.setResponseKey(undefined); convertInfo.setFormData(undefined); if (convertInfo.getForceSave()) { - convertInfo.getForceSave().setType(undefined); + //type must be saved to distinguish c_oAscForceSaveTypes.Form + //convertInfo.getForceSave().setType(undefined); convertInfo.getForceSave().setAuthorUserId(undefined); convertInfo.getForceSave().setAuthorUserIndex(undefined); } @@ -884,7 +885,13 @@ async function applyForceSaveCache(ctx, docId, forceSave, type, opt_userConnecti let forceSaveCache = await checkForceSaveCache(ctx, forceSave.convertInfo); if (forceSaveCache.hasCache || forceSave.ended) { if (commonDefines.c_oAscForceSaveTypes.Form === type || commonDefines.c_oAscForceSaveTypes.Internal === type || !forceSave.ended) { - if (forceSaveCache.hasValidCache) { + //c_oAscForceSaveTypes.Form has uniqueue options {'documentLayout': {'isPrint': true}}; dont use it for other types + let forceSaveCached = forceSaveCache.cmd?.getForceSave()?.getType(); + let cacheHasSameOptions = (commonDefines.c_oAscForceSaveTypes.Form === type && + commonDefines.c_oAscForceSaveTypes.Form === forceSaveCached) || + (commonDefines.c_oAscForceSaveTypes.Form !== type && + commonDefines.c_oAscForceSaveTypes.Form !== forceSaveCached) + if (forceSaveCache.hasValidCache && cacheHasSameOptions) { let cmd = forceSaveCache.cmd; cmd.setUserConnectionDocId(opt_userConnectionDocId); cmd.setUserConnectionId(opt_userConnectionId); @@ -899,7 +906,7 @@ async function applyForceSaveCache(ctx, docId, forceSave, type, opt_userConnecti await canvasService.commandSfcCallback(ctx, cmd, true, false); res.ok = true; } else { - await editorData.checkAndSetForceSave(ctx, docId, forceSave.getTime(), forceSave.getIndex(), false, false, null); + await editorData.checkAndSetForceSave(ctx, docId, forceSave.time, forceSave.index, false, false, null); res.startedForceSave = await editorData.checkAndStartForceSave(ctx, docId); res.ok = !!res.startedForceSave; }