diff --git a/src/routes/api/sync.js b/src/routes/api/sync.js index 5a23a25b6..044b853de 100644 --- a/src/routes/api/sync.js +++ b/src/routes/api/sync.js @@ -1,7 +1,6 @@ "use strict"; const syncService = require('../../services/sync'); -const setupService = require('../../services/setup'); const syncUpdateService = require('../../services/sync_update'); const syncTableService = require('../../services/sync_table'); const sql = require('../../services/sql'); @@ -12,16 +11,13 @@ const log = require('../../services/log'); async function testSync() { try { - if (await setupService.isSyncServerInitialized()) { - await syncService.login(); + await syncService.login(); - return { success: true, message: "Sync server handshake has been successful" }; - } - else { - await setupService.setupSyncToSyncServer(); + // login was successful so we'll kick off sync now + // this is important in case when sync server has been just initialized + syncService.sync(); - return { success: true, message: "Sync has been established to the server instance. It will take some time to finish." }; - } + return { success: true, message: "Sync server handshake has been successful, sync has been started." }; } catch (e) { return { diff --git a/src/services/setup.js b/src/services/setup.js index b3f240627..4f8ed7ce3 100644 --- a/src/services/setup.js +++ b/src/services/setup.js @@ -33,8 +33,6 @@ async function setupSyncToSyncServer() { // the previous request would have failed. await optionService.setOption('lastSyncedPush', 0); await optionService.setOption('lastSyncedPull', 0); - - syncService.sync(); } async function requestToSyncServer(method, path, body = null) { diff --git a/src/services/sync.js b/src/services/sync.js index c8c53f3ce..5cf8055d1 100644 --- a/src/services/sync.js +++ b/src/services/sync.js @@ -69,6 +69,16 @@ async function sync() { } async function login() { + const setupService = require('./setup'); // circular dependency issue + + if (!await setupService.isSyncServerInitialized()) { + await setupService.setupSyncToSyncServer(); + } + + return await doLogin(); +} + +async function doLogin() { const timestamp = dateUtils.nowDate(); const documentSecret = await optionService.getOption('documentSecret');