From 2e14f2373e4979ec726d3ea75b6797aa5bd496ee Mon Sep 17 00:00:00 2001 From: Yaaccount <33345431+yaaccount@users.noreply.github.com> Date: Wed, 2 Jan 2019 14:28:50 +0100 Subject: [PATCH] poll unconfirmed transactions in a loop --- src/app/services/dataBridge.service.js | 33 ++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/src/app/services/dataBridge.service.js b/src/app/services/dataBridge.service.js index 8fe78492..b89b4e2e 100644 --- a/src/app/services/dataBridge.service.js +++ b/src/app/services/dataBridge.service.js @@ -8,7 +8,7 @@ class DataBridge { * * @params {services} - Angular services to inject */ - constructor(Alert, Wallet, $timeout, $filter, Nodes, DataStore) { + constructor(Alert, Wallet, $timeout, $interval, $filter, Nodes, DataStore) { 'ngInject'; //// Service dependencies region //// @@ -17,6 +17,7 @@ class DataBridge { this._$timeout = $timeout; this._Wallet = Wallet; this._$filter = $filter; + this._$interval = $interval; this._Nodes = Nodes; this._DataStore = DataStore; @@ -45,6 +46,11 @@ class DataBridge { */ this.renewalAlertTriggeredFor = {}; + /** + * Handler to an unconfirmed transaction trigger/polling loop. + */ + this.unconfirmedTriggerLoop = undefined; + //// End properties region //// } @@ -312,6 +318,26 @@ class DataBridge { } }; + let triggerUnconfirmedTransactionsReception = () => { + try { + let _address = this._Wallet.currentAccount.address; + // copied from nem-sdk/com/websockets/account.js/requestRecentTransactions + // TODO: call directly nem.com.websockets.requests.account.transactions.unconfirmed(connector) after it is implemented/exposed in nem-sdk + connector.stompClient.send("/w/api/account/transfers/unconfirmed", {}, "{'account':'" + _address + "'}"); + for (let i = 0; i < this._DataStore.account.metaData.meta.cosignatoryOf.length; i++) { + let _address = this._DataStore.account.metaData.meta.cosignatoryOf[i].address; + // copied from nem-sdk/com/websockets/account.js/requestRecentTransactions + // TODO: call directly nem.com.websockets.requests.account.transactions.unconfirmed(connector) after it is implemented/exposed in nem-sdk + connector.stompClient.send("/w/api/account/transfers/unconfirmed", {}, "{'account':'" + _address + "'}"); + } + } catch (e) { + console.error(e); + } + } + + this.unconfirmedTriggerLoop = this._$interval(() => { + triggerUnconfirmedTransactionsReception(); + }, 10000);//every 10s // Set websockets callbacks nem.com.websockets.subscribe.account.transactions.confirmed(connector, confirmedCallback); @@ -339,6 +365,9 @@ class DataBridge { * Reset DataBridge service properties */ reset() { + if (this.unconfirmedTriggerLoop) { + this._$interval.cancel(this.unconfirmedTriggerLoop); + } this._DataStore.chain.time = undefined; clearInterval(this.timeSyncInterval) } @@ -398,4 +427,4 @@ class DataBridge { //// End methods region //// } -export default DataBridge; \ No newline at end of file +export default DataBridge;