diff --git a/src/routes/api/login.js b/src/routes/api/login.js index fbc0886b3..9899ec1cc 100644 --- a/src/routes/api/login.js +++ b/src/routes/api/login.js @@ -10,6 +10,7 @@ const appInfo = require('../../services/app_info'); const eventService = require('../../services/events'); const cls = require('../../services/cls'); const sqlInit = require('../../services/sql_init'); +const sql = require('../../services/sql'); async function loginSync(req) { if (!await sqlInit.schemaExists()) { @@ -44,7 +45,8 @@ async function loginSync(req) { req.session.loggedIn = true; return { - sourceId: sourceIdService.getCurrentSourceId() + sourceId: sourceIdService.getCurrentSourceId(), + maxSyncId: await sql.getValue("SELECT MAX(id) FROM sync") }; } diff --git a/src/services/sync.js b/src/services/sync.js index a081cfcc0..802e4ae2e 100644 --- a/src/services/sync.js +++ b/src/services/sync.js @@ -1,6 +1,5 @@ "use strict"; -const url = require('url'); const log = require('./log'); const sql = require('./sql'); const sqlInit = require('./sql_init'); @@ -99,6 +98,16 @@ async function doLogin() { syncContext.sourceId = resp.sourceId; + const lastSyncedPull = await getLastSyncedPull(); + + // this is important in a scenario where we setup the sync by manually copying the document + // lastSyncedPull then could be pretty off for the newly cloned client + if (lastSyncedPull > resp.maxSyncId) { + log.info(`Lowering last synced pull from ${lastSyncedPull} to ${resp.maxSyncId}`); + + await setLastSyncedPull(resp.maxSyncId); + } + return syncContext; }