diff --git a/src/services/options.js b/src/services/options.js index 8d0af63fa..da883ad27 100644 --- a/src/services/options.js +++ b/src/services/options.js @@ -1,7 +1,16 @@ const becca = require('../becca/becca'); +const sql = require("./sql.js"); function getOption(name) { - const option = require('../becca/becca').getOption(name); + let option; + + if (becca.loaded) { + option = becca.getOption(name); + } + else { + // e.g. in initial sync becca is not loaded because DB is not initialized + option = sql.getRow("SELECT * FROM options WHERE name = ?", name); + } if (!option) { throw new Error(`Option "${name}" doesn't exist`); @@ -39,12 +48,12 @@ function getOptionBool(name) { } function setOption(name, value) { - const option = becca.getOption(name); - if (value === true || value === false) { value = value.toString(); } + const option = becca.getOption(name); + if (option) { option.value = value; diff --git a/src/services/sync.js b/src/services/sync.js index 3325fb023..210b3aa9f 100644 --- a/src/services/sync.js +++ b/src/services/sync.js @@ -371,7 +371,10 @@ function getLastSyncedPull() { function setLastSyncedPull(entityChangeId) { const lastSyncedPullOption = becca.getOption('lastSyncedPull'); - lastSyncedPullOption.value = entityChangeId + ''; + + if (lastSyncedPullOption) { // might be null in initial sync when becca is not loaded + lastSyncedPullOption.value = entityChangeId + ''; + } // this way we avoid updating entity_changes which otherwise means that we've never pushed all entity_changes sql.execute("UPDATE options SET value = ? WHERE name = ?", [entityChangeId, 'lastSyncedPull']); @@ -389,7 +392,10 @@ function setLastSyncedPush(entityChangeId) { ws.setLastSyncedPush(entityChangeId); const lastSyncedPushOption = becca.getOption('lastSyncedPush'); - lastSyncedPushOption.value = entityChangeId + ''; + + if (lastSyncedPushOption) { // might be null in initial sync when becca is not loaded + lastSyncedPushOption.value = entityChangeId + ''; + } // this way we avoid updating entity_changes which otherwise means that we've never pushed all entity_changes sql.execute("UPDATE options SET value = ? WHERE name = ?", [entityChangeId, 'lastSyncedPush']);