"use strict";

const optionService = require('./options');
const config = require('./config');

/*
 * Primary configuration for sync is in the options (document), but we allow to override
 * these settings in config file. The reason for that is to avoid a mistake of loading a live/production
 * document with live sync settings in a dev/debug environment. Changes would then successfully propagate
 * to live sync server.
 */

async function get(name) {
    return (config['Sync'] && config['Sync'][name]) || await optionService.getOption(name);
}

module.exports = {
    getSyncServerHost: async () => await get('syncServerHost'),
    isSyncSetup: async () => {
        const syncServerHost = await get('syncServerHost');

        // special value "disabled" is here to support use case where document is configured with sync server
        // and we need to override it with config from config.ini
        return !!syncServerHost && syncServerHost !== 'disabled';
    },
    getSyncTimeout: async () => parseInt(await get('syncServerTimeout')),
    getSyncProxy: async () => await get('syncProxy')
};