fix(trader): trader now gets disabled just after config change (bug #40)

This commit is contained in:
Damian Mee 2014-09-02 21:21:51 +02:00
parent fba1f972c7
commit ed3779ede4

View file

@ -106,7 +106,8 @@ function loadOrConfigPlugin(pluginHandle, pluginType, currency, onChangeCallback
var currentName = cachedConfig.exchanges.plugins.current[pluginType]; var currentName = cachedConfig.exchanges.plugins.current[pluginType];
var pluginChanged = currentlyUsedPlugins[pluginType] !== currentName; var pluginChanged = currentlyUsedPlugins[pluginType] !== currentName;
if (currentName) { // some plugins may be disabled if (!currentName) pluginHandle = null;
else { // some plugins may be disabled
var pluginConfig = cachedConfig.exchanges.plugins.settings[currentName] || {}; var pluginConfig = cachedConfig.exchanges.plugins.settings[currentName] || {};
if (currency) pluginConfig.currency = currency; if (currency) pluginConfig.currency = currency;
@ -115,7 +116,7 @@ function loadOrConfigPlugin(pluginHandle, pluginType, currency, onChangeCallback
else pluginHandle = loadPlugin(currentName, pluginConfig); else pluginHandle = loadPlugin(currentName, pluginConfig);
} }
if (typeof onChangeCb === 'function') onChangeCb(pluginHandle, currency); if (typeof onChangeCallback === 'function') onChangeCallback(pluginHandle, currency);
return pluginHandle; return pluginHandle;
} }
@ -154,7 +155,13 @@ exports.configure = function configure(config) {
// TRADER [optional] configure (or load) // TRADER [optional] configure (or load)
traderPlugin = loadOrConfigPlugin( traderPlugin = loadOrConfigPlugin(
traderPlugin, traderPlugin,
'trade' 'trade',
null,
function onTraderChange(newTrader) {
traderPlugin = newTrader;
if (newTrader === null) stopTrader();
else startTrader();
}
); );
// ID VERIFIER [optional] configure (or load) // ID VERIFIER [optional] configure (or load)
@ -276,17 +283,27 @@ exports.startPolling = function startPolling() {
rateInterval = setInterval(pollRate, POLLING_RATE); rateInterval = setInterval(pollRate, POLLING_RATE);
} }
startTrader();
};
function startTrader() {
// Always start trading, even if we don't have a trade exchange configured, // Always start trading, even if we don't have a trade exchange configured,
// since configuration can always change in `Trader#configure`. // since configuration can always change in `Trader#configure`.
// `Trader#executeTrades` returns early if we don't have a trade exchange // `Trader#executeTrades` returns early if we don't have a trade exchange
// configured at the moment. // configured at the moment.
if (!tradeInterval) { if (traderPlugin && !tradeInterval) {
tradeInterval = setInterval( tradeInterval = setInterval(
executeTrades, executeTrades,
cachedConfig.exchanges.settings.tradeInterval cachedConfig.exchanges.settings.tradeInterval
); );
} }
}; }
function stopTrader() {
if (tradeInterval) {
clearInterval(tradeInterval);
tradeInterval = null;
}
}
function pollBalance(callback) { function pollBalance(callback) {