From 244d057851bf10a4525ccbb44ab62bb641a73edf Mon Sep 17 00:00:00 2001 From: Sergey Konovalov Date: Wed, 12 Jul 2023 19:49:01 +0300 Subject: [PATCH] [bug] Fix forcesave in case of error in integrator's response --- DocService/sources/DocsCoServer.js | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/DocService/sources/DocsCoServer.js b/DocService/sources/DocsCoServer.js index 6646069b..b66d2b87 100644 --- a/DocService/sources/DocsCoServer.js +++ b/DocService/sources/DocsCoServer.js @@ -793,7 +793,7 @@ const hasChanges = co.wrap(function*(ctx, docId) { function* setForceSave(ctx, docId, forceSave, cmd, success, url) { let forceSaveType = forceSave.getType(); const end = success && commonDefines.c_oAscForceSaveTypes.Form !== forceSaveType && commonDefines.c_oAscForceSaveTypes.Internal !== forceSaveType; - yield editorData.checkAndSetForceSave(ctx, docId, forceSave.getTime(), forceSave.getIndex(), true, end, cmd); + yield editorData.checkAndSetForceSave(ctx, docId, forceSave.getTime(), forceSave.getIndex(), end, end, cmd); if (commonDefines.c_oAscForceSaveTypes.Command !== forceSaveType) { let data = {type: forceSaveType, time: forceSave.getTime(), success: success}; @@ -832,11 +832,6 @@ let applyForceSaveCache = co.wrap (function* (ctx, docId, forceSave, type, opt_u res.notModified = true; return res; } - if (!forceSave.started) { - res.startedForceSave = yield editorData.checkAndStartForceSave(ctx, docId); - res.ok = !!res.startedForceSave; - return res; - } let forceSaveCache = yield checkForceSaveCache(ctx, forceSave.convertInfo); if (forceSaveCache.hasCache || forceSave.ended) { if (commonDefines.c_oAscForceSaveTypes.Form === type || commonDefines.c_oAscForceSaveTypes.Internal === type || !forceSave.ended) { @@ -858,6 +853,10 @@ let applyForceSaveCache = co.wrap (function* (ctx, docId, forceSave, type, opt_u } else { res.notModified = true; } + } else if (!forceSave.started) { + res.startedForceSave = yield editorData.checkAndStartForceSave(ctx, docId); + res.ok = !!res.startedForceSave; + return res; } else if (commonDefines.c_oAscForceSaveTypes.Form === type || commonDefines.c_oAscForceSaveTypes.Internal === type) { res.ok = true; res.inProgress = true; @@ -883,7 +882,12 @@ let startForceSave = co.wrap(function*(ctx, docId, type, opt_userdata, opt_userI let applyCacheRes = yield applyForceSaveCache(ctx, docId, forceSave, type, opt_userConnectionId, opt_userConnectionDocId, opt_responseKey); startedForceSave = applyCacheRes.startedForceSave; if (applyCacheRes.notModified) { - res.code = commonDefines.c_oAscServerCommandErrors.NotModified; + let selectRes = yield taskResult.select(ctx, docId); + if (selectRes.length > 0) { + res.code = commonDefines.c_oAscServerCommandErrors.NotModified; + } else { + res.code = commonDefines.c_oAscServerCommandErrors.DocumentIdError; + } } else if (!applyCacheRes.ok) { res.code = commonDefines.c_oAscServerCommandErrors.UnknownError; }