From 297a62fe80142897250f6dd6fddb4cdf1d3fe3ee Mon Sep 17 00:00:00 2001 From: Steve Klebanoff Date: Thu, 8 Nov 2018 17:13:22 -0800 Subject: move files around and rename --- .../src/components/zero_ex_instant_provider.tsx | 3 +- packages/instant/src/util/hearbeats.ts | 65 ---------------------- packages/instant/src/util/heartbeater.ts | 42 ++++++++++++++ packages/instant/src/util/heartbeater_factory.ts | 18 ++++++ 4 files changed, 62 insertions(+), 66 deletions(-) delete mode 100644 packages/instant/src/util/hearbeats.ts create mode 100644 packages/instant/src/util/heartbeater.ts create mode 100644 packages/instant/src/util/heartbeater_factory.ts diff --git a/packages/instant/src/components/zero_ex_instant_provider.tsx b/packages/instant/src/components/zero_ex_instant_provider.tsx index 24ae0c4b6..bbc20dab6 100644 --- a/packages/instant/src/components/zero_ex_instant_provider.tsx +++ b/packages/instant/src/components/zero_ex_instant_provider.tsx @@ -15,7 +15,8 @@ import { AffiliateInfo, AssetMetaData, Network, OrderSource } from '../types'; import { assetUtils } from '../util/asset'; import { errorFlasher } from '../util/error_flasher'; import { gasPriceEstimator } from '../util/gas_price_estimator'; -import { generateAccountHeartbeater, Heartbeater, generateBuyQuoteHeartbeater } from '../util/hearbeats'; +import { Heartbeater } from '../util/heartbeater'; +import { generateAccountHeartbeater, generateBuyQuoteHeartbeater } from '../util/heartbeater_factory'; import { providerStateFactory } from '../util/provider_state_factory'; fonts.include(); diff --git a/packages/instant/src/util/hearbeats.ts b/packages/instant/src/util/hearbeats.ts deleted file mode 100644 index ecd7c5068..000000000 --- a/packages/instant/src/util/hearbeats.ts +++ /dev/null @@ -1,65 +0,0 @@ -// TODO: rename file - -import * as _ from 'lodash'; -import { Dispatch } from 'redux'; - -import { Action } from '../redux/actions'; -import { asyncData } from '../redux/async_data'; -import { State } from '../redux/reducer'; -import { Store } from '../redux/store'; - -import { updateBuyQuoteOrFlashErrorAsyncForState } from './buy_quote_fetcher'; - -type HeartbeatableFunction = () => Promise; -export class Heartbeater { - private _intervalId?: number; - private _pendingRequest: boolean; - private _performingFunctionAsync: HeartbeatableFunction; - - public constructor(_performingFunctionAsync: HeartbeatableFunction) { - this._performingFunctionAsync = _performingFunctionAsync; - this._pendingRequest = false; - } - - public start(intervalTimeMs: number): void { - if (!_.isUndefined(this._intervalId)) { - throw new Error('Heartbeat is running, please stop before restarting'); - } - this._trackAndPerformAsync(); - this._intervalId = window.setInterval(this._trackAndPerformAsync.bind(this), intervalTimeMs); - } - - public stop(): void { - if (this._intervalId) { - window.clearInterval(this._intervalId); - } - this._intervalId = undefined; - this._pendingRequest = false; - } - - private async _trackAndPerformAsync(): Promise { - if (this._pendingRequest) { - return; - } - - this._pendingRequest = true; - try { - await this._performingFunctionAsync(); - } finally { - this._pendingRequest = false; - } - } -} - -export const generateAccountHeartbeater = (store: Store): Heartbeater => { - return new Heartbeater(async () => { - await asyncData.fetchAccountInfoAndDispatchToStore(store, { setLoading: false }); - }); -}; - -export const generateBuyQuoteHeartbeater = (store: Store): Heartbeater => { - return new Heartbeater(async () => { - await updateBuyQuoteOrFlashErrorAsyncForState(store.getState(), store.dispatch); - return Promise.resolve(); - }); -}; diff --git a/packages/instant/src/util/heartbeater.ts b/packages/instant/src/util/heartbeater.ts new file mode 100644 index 000000000..c5a823953 --- /dev/null +++ b/packages/instant/src/util/heartbeater.ts @@ -0,0 +1,42 @@ +import * as _ from 'lodash'; + +type HeartbeatableFunction = () => Promise; +export class Heartbeater { + private _intervalId?: number; + private _pendingRequest: boolean; + private _performingFunctionAsync: HeartbeatableFunction; + + public constructor(_performingFunctionAsync: HeartbeatableFunction) { + this._performingFunctionAsync = _performingFunctionAsync; + this._pendingRequest = false; + } + + public start(intervalTimeMs: number): void { + if (!_.isUndefined(this._intervalId)) { + throw new Error('Heartbeat is running, please stop before restarting'); + } + this._trackAndPerformAsync(); + this._intervalId = window.setInterval(this._trackAndPerformAsync.bind(this), intervalTimeMs); + } + + public stop(): void { + if (this._intervalId) { + window.clearInterval(this._intervalId); + } + this._intervalId = undefined; + this._pendingRequest = false; + } + + private async _trackAndPerformAsync(): Promise { + if (this._pendingRequest) { + return; + } + + this._pendingRequest = true; + try { + await this._performingFunctionAsync(); + } finally { + this._pendingRequest = false; + } + } +} diff --git a/packages/instant/src/util/heartbeater_factory.ts b/packages/instant/src/util/heartbeater_factory.ts new file mode 100644 index 000000000..fc33787ee --- /dev/null +++ b/packages/instant/src/util/heartbeater_factory.ts @@ -0,0 +1,18 @@ +import { asyncData } from '../redux/async_data'; +import { Store } from '../redux/store'; + +import { updateBuyQuoteOrFlashErrorAsyncForState } from './buy_quote_fetcher'; +import { Heartbeater } from './heartbeater'; + +export const generateAccountHeartbeater = (store: Store): Heartbeater => { + return new Heartbeater(async () => { + await asyncData.fetchAccountInfoAndDispatchToStore(store, { setLoading: false }); + }); +}; + +export const generateBuyQuoteHeartbeater = (store: Store): Heartbeater => { + return new Heartbeater(async () => { + await updateBuyQuoteOrFlashErrorAsyncForState(store.getState(), store.dispatch); + return Promise.resolve(); + }); +}; -- cgit