dagcoin-wallet-workflows
Version:
Dagcoin wallet workflows implementation using Dagcoin Finite State Machine
31 lines (23 loc) • 1.34 kB
JavaScript
;
module.exports = function (properties, stateMachine, state) {
var DataFetcher = require('dagcoin-fsm/lib/dataFetcher');
var fetcher = new DataFetcher(properties, stateMachine, state);
fetcher.retrieveData = function () {
var enoughBytesFsm = require(__dirname + '/../../enoughBytes/enoughBytes')(properties.fundingExchangeClientService, properties.constants.MIN_BYTE_FEE);
enoughBytesFsm.start();
return enoughBytesFsm.pingUntilOver().then(function () {
if (!enoughBytesFsm.getCurrentState().isFinal) {
throw Error('STATE MACHINE enoughBytesFsm CURRENT STATE SHOULD BE FINAL. IT IS: ' + enoughBytesFsm.getCurrentState().getName());
}
return enoughBytesFsm.waitForFinalState();
}).then(function () {
stateMachine.setData('shared-address', enoughBytesFsm.getData('shared-address'));
stateMachine.setData('update-payment-props', enoughBytesFsm.getData('update-payment-props'));
if (enoughBytesFsm.getData('send-payment-error')) {
stateMachine.setData('send-payment-error', enoughBytesFsm.getData('send-payment-error'));
}
return Promise.resolve(enoughBytesFsm.getCurrentState().getName() === 'enough-bytes');
});
};
return fetcher;
};