diff options
author | Fabio Berger <me@fabioberger.com> | 2018-07-18 22:43:25 +0800 |
---|---|---|
committer | Fabio Berger <me@fabioberger.com> | 2018-07-18 22:43:25 +0800 |
commit | 29d5034260b2e3b4b670d856463ed34377bff3ac (patch) | |
tree | 358b3cce6e4b2c4ea4f4c816668635e2aff758f0 /packages/order-utils/src/store/order_filled_cancelled_lazy_store.ts | |
parent | f99232095b3effea261b5b24bc01db4f96c416f6 (diff) | |
parent | 00d1622b3f087943e750f1b3f6ee6ceab7e80285 (diff) | |
download | dexon-sol-tools-29d5034260b2e3b4b670d856463ed34377bff3ac.tar dexon-sol-tools-29d5034260b2e3b4b670d856463ed34377bff3ac.tar.gz dexon-sol-tools-29d5034260b2e3b4b670d856463ed34377bff3ac.tar.bz2 dexon-sol-tools-29d5034260b2e3b4b670d856463ed34377bff3ac.tar.lz dexon-sol-tools-29d5034260b2e3b4b670d856463ed34377bff3ac.tar.xz dexon-sol-tools-29d5034260b2e3b4b670d856463ed34377bff3ac.tar.zst dexon-sol-tools-29d5034260b2e3b4b670d856463ed34377bff3ac.zip |
merge v2-prototype
Diffstat (limited to 'packages/order-utils/src/store/order_filled_cancelled_lazy_store.ts')
-rw-r--r-- | packages/order-utils/src/store/order_filled_cancelled_lazy_store.ts | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/packages/order-utils/src/store/order_filled_cancelled_lazy_store.ts b/packages/order-utils/src/store/order_filled_cancelled_lazy_store.ts new file mode 100644 index 000000000..336c6d0ba --- /dev/null +++ b/packages/order-utils/src/store/order_filled_cancelled_lazy_store.ts @@ -0,0 +1,65 @@ +import { BigNumber } from '@0xproject/utils'; +import * as _ from 'lodash'; + +import { AbstractOrderFilledCancelledFetcher } from '../abstract/abstract_order_filled_cancelled_fetcher'; +import { AbstractOrderFilledCancelledLazyStore } from '../abstract/abstract_order_filled_cancelled_lazy_store'; + +/** + * Copy on read store for balances/proxyAllowances of tokens/accounts + */ +export class OrderFilledCancelledLazyStore implements AbstractOrderFilledCancelledLazyStore { + private readonly _orderFilledCancelledFetcher: AbstractOrderFilledCancelledFetcher; + private _filledTakerAmount: { + [orderHash: string]: BigNumber; + }; + private _isCancelled: { + [orderHash: string]: boolean; + }; + constructor(orderFilledCancelledFetcher: AbstractOrderFilledCancelledFetcher) { + this._orderFilledCancelledFetcher = orderFilledCancelledFetcher; + this._filledTakerAmount = {}; + this._isCancelled = {}; + } + public async getFilledTakerAmountAsync(orderHash: string): Promise<BigNumber> { + if (_.isUndefined(this._filledTakerAmount[orderHash])) { + const filledTakerAmount = await this._orderFilledCancelledFetcher.getFilledTakerAmountAsync(orderHash); + this.setFilledTakerAmount(orderHash, filledTakerAmount); + } + const cachedFilledTakerAmount = this._filledTakerAmount[orderHash]; + return cachedFilledTakerAmount; + } + public setFilledTakerAmount(orderHash: string, filledTakerAmount: BigNumber): void { + this._filledTakerAmount[orderHash] = filledTakerAmount; + } + public deleteFilledTakerAmount(orderHash: string): void { + delete this._filledTakerAmount[orderHash]; + } + public async getIsCancelledAsync(orderHash: string): Promise<boolean> { + if (_.isUndefined(this._isCancelled[orderHash])) { + const isCancelled = await this._orderFilledCancelledFetcher.isOrderCancelledAsync(orderHash); + this.setIsCancelled(orderHash, isCancelled); + } + const cachedIsCancelled = this._isCancelled[orderHash]; // tslint:disable-line:boolean-naming + return cachedIsCancelled; + } + public setIsCancelled(orderHash: string, isCancelled: boolean): void { + this._isCancelled[orderHash] = isCancelled; + } + public deleteIsCancelled(orderHash: string): void { + delete this._isCancelled[orderHash]; + } + public deleteAll(): void { + this.deleteAllFilled(); + this.deleteAllIsCancelled(); + } + public deleteAllIsCancelled(): void { + this._isCancelled = {}; + } + public deleteAllFilled(): void { + this._filledTakerAmount = {}; + } + public getZRXAssetData(): string { + const zrxAssetData = this._orderFilledCancelledFetcher.getZRXAssetData(); + return zrxAssetData; + } +} |