diff --git a/src/public/javascripts/services/messaging.js b/src/public/javascripts/services/messaging.js index e5a381d3b..cc65df357 100644 --- a/src/public/javascripts/services/messaging.js +++ b/src/public/javascripts/services/messaging.js @@ -1,7 +1,7 @@ import utils from './utils.js'; import infoService from "./info.js"; -const $changesToPushCount = $("#changes-to-push-count"); +const $outstandingSyncsCount = $("#outstanding-syncs-count"); const messageHandlers = []; @@ -43,7 +43,7 @@ function handleMessage(event) { messageHandler(syncData); } - $changesToPushCount.html(message.changesToPushCount); + $outstandingSyncsCount.html(message.outstandingSyncs); } else if (message.type === 'sync-hash-check-failed') { infoService.showError("Sync check failed!", 60000); diff --git a/src/services/messaging.js b/src/services/messaging.js index f24157e4d..520197a0b 100644 --- a/src/services/messaging.js +++ b/src/services/messaging.js @@ -2,8 +2,6 @@ const WebSocket = require('ws'); const utils = require('./utils'); const log = require('./log'); const sql = require('./sql'); -const optionService = require('./options'); -const syncSetup = require('./sync_setup'); let webSocketServer; @@ -65,15 +63,12 @@ async function sendMessageToAllClients(message) { async function sendPing(client, lastSentSyncId) { const syncData = await sql.getRows("SELECT * FROM sync WHERE id > ?", [lastSentSyncId]); - - const lastSyncedPush = await optionService.getOption('lastSyncedPush'); - - const changesToPushCount = await sql.getValue("SELECT COUNT(*) FROM sync WHERE id > ?", [lastSyncedPush]); + const stats = require('./sync').stats; await sendMessage(client, { type: 'sync', data: syncData, - changesToPushCount: await syncSetup.isSyncSetup() ? changesToPushCount : 0 + outstandingSyncs: stats.outstandingPushes + stats.outstandingPulls }); } diff --git a/src/services/sync.js b/src/services/sync.js index 986458e63..00dab2f05 100644 --- a/src/services/sync.js +++ b/src/services/sync.js @@ -151,8 +151,6 @@ async function pushSync(syncContext) { if (filteredSyncs.length === 0) { log.info("Nothing to push"); - stats.outstandingPushes = 0; - await setLastSyncedPush(lastSyncedPush); break; @@ -170,8 +168,6 @@ async function pushSync(syncContext) { lastSyncedPush = syncRecords[syncRecords.length - 1].sync.id; await setLastSyncedPush(lastSyncedPush); - - stats.outstandingPushes = await sql.getValue(`SELECT MAX(id) FROM sync`) - lastSyncedPush; } } @@ -299,6 +295,12 @@ async function setLastSyncedPush(lastSyncedPush) { await optionService.setOption('lastSyncedPush', lastSyncedPush); } +async function updatePushStats() { + const lastSyncedPush = await optionService.getOption('lastSyncedPush'); + + stats.outstandingPushes = await sql.getValue("SELECT COUNT(*) FROM sync WHERE id > ?", [lastSyncedPush]); +} + sqlInit.dbReady.then(async () => { if (await syncSetup.isSyncSetup()) { log.info("Setting up sync to " + await syncSetup.getSyncServer() + " with timeout " + await syncSetup.getSyncTimeout()); @@ -313,6 +315,8 @@ sqlInit.dbReady.then(async () => { // kickoff initial sync immediately setTimeout(cls.wrap(sync), 1000); + + setInterval(cls.wrap(updatePushStats), 1000); } else { log.info("Sync server not configured, sync timer not running.") diff --git a/src/views/index.ejs b/src/views/index.ejs index ac2840176..672ea6de1 100644 --- a/src/views/index.ejs +++ b/src/views/index.ejs @@ -38,7 +38,7 @@