Move perPage and 18 precision lower to re-use

This commit is contained in:
Jacob Evans
2019-09-16 20:26:53 +01:00
parent 703e8e06a3
commit 09ec6d637b
6 changed files with 13 additions and 12 deletions

View File

@@ -3,6 +3,11 @@ import { AssetPairsItem, SignedOrder } from '@0x/types';
import { OrderStore } from '../order_store';
import { AcceptedRejectedOrders, AddedRemovedOrders } from '../types';
// AssetPairItem requires precision but some OrderProviders may not
// enforce any precision. This is not the token decimal but the
// maximum precision for an orderbook.
export const DEFAULT_TOKEN_PRECISION = 18;
export abstract class BaseOrderProvider {
public readonly _orderStore: OrderStore;

View File

@@ -6,6 +6,7 @@ import { AcceptedRejectedOrders, RejectedOrder } from '../types';
import { utils } from '../utils';
import { BaseOrderProvider } from './base_order_provider';
export const PER_PAGE_DEFAULT = 100;
export abstract class BaseSRAOrderProvider extends BaseOrderProvider {
protected readonly _httpClient: HttpClient;
@@ -15,7 +16,7 @@ export abstract class BaseSRAOrderProvider extends BaseOrderProvider {
/**
* This is an internal class for Websocket and Polling Order Providers
*/
constructor(orderStore: OrderStore, httpEndpoint: string, perPage: number, networkId?: number) {
constructor(orderStore: OrderStore, httpEndpoint: string, perPage: number = PER_PAGE_DEFAULT, networkId?: number) {
super(orderStore);
this._httpClient = new HttpClient(httpEndpoint);
this._perPage = perPage;

View File

@@ -5,7 +5,7 @@ import { OrderStore } from '../order_store';
import { AcceptedRejectedOrders } from '../types';
import { utils } from '../utils';
import { BaseOrderProvider } from './base_order_provider';
import { BaseOrderProvider, DEFAULT_TOKEN_PRECISION } from './base_order_provider';
export class CustomOrderProvider extends BaseOrderProvider {
constructor(orders: SignedOrder[], orderStore: OrderStore) {
@@ -22,7 +22,7 @@ export class CustomOrderProvider extends BaseOrderProvider {
const assetPairsItems: AssetPairsItem[] = [];
const minAmount = new BigNumber(0);
const maxAmount = new BigNumber(2).pow(256).minus(1);
const precision = 18;
const precision = DEFAULT_TOKEN_PRECISION;
for (const assetPairKey of this._orderStore.keys()) {
const [assetA, assetB] = OrderStore.assetPairKeyToAssets(assetPairKey);
const assetDataA: Asset = { assetData: assetA, minAmount, maxAmount, precision };

View File

@@ -14,7 +14,7 @@ import { OrderStore } from '../order_store';
import { AcceptedRejectedOrders, AddedRemovedOrders, MeshOrderProviderOpts } from '../types';
import { utils } from '../utils';
import { BaseOrderProvider } from './base_order_provider';
import { BaseOrderProvider, DEFAULT_TOKEN_PRECISION } from './base_order_provider';
export class MeshOrderProvider extends BaseOrderProvider {
private readonly _wsClient: WSClient;
@@ -62,7 +62,7 @@ export class MeshOrderProvider extends BaseOrderProvider {
const assetPairsItems: AssetPairsItem[] = [];
const minAmount = new BigNumber(0);
const maxAmount = new BigNumber(2).pow(256).minus(1);
const precision = 18;
const precision = DEFAULT_TOKEN_PRECISION;
for (const assetPairKey of this._orderStore.keys()) {
const [assetA, assetB] = OrderStore.assetPairKeyToAssets(assetPairKey);
const assetDataA: Asset = { assetData: assetA, minAmount, maxAmount, precision };

View File

@@ -7,8 +7,6 @@ import { SRAPollingOrderProviderOpts } from '../types';
import { BaseSRAOrderProvider } from './base_sra_order_provider';
const PER_PAGE_DEFAULT = 100;
export class SRAPollingOrderProvider extends BaseSRAOrderProvider {
private readonly _assetPairKeyToPollingIntervalId: Map<string, number> = new Map();
private readonly _pollingIntervalMs: number;
@@ -20,7 +18,7 @@ export class SRAPollingOrderProvider extends BaseSRAOrderProvider {
* @param orderStore The `OrderStore` where orders are added and removed from
*/
constructor(opts: SRAPollingOrderProviderOpts, orderStore: OrderStore) {
super(orderStore, opts.httpEndpoint, opts.perPage || PER_PAGE_DEFAULT, opts.networkId);
super(orderStore, opts.httpEndpoint, opts.perPage, opts.networkId);
assert.isNumber('pollingIntervalMs', opts.pollingIntervalMs);
this._pollingIntervalMs = opts.pollingIntervalMs;
}

View File

@@ -13,9 +13,7 @@ import { OrderStore } from '../order_store';
import { AddedRemovedOrders, SRAWebsocketOrderProviderOpts } from '../types';
import { utils } from '../utils';
import { BaseSRAOrderProvider } from './base_sra_order_provider';
const PER_PAGE_DEFAULT = 100;
import { BaseSRAOrderProvider, PER_PAGE_DEFAULT } from './base_sra_order_provider';
export class SRAWebsocketOrderProvider extends BaseSRAOrderProvider {
private readonly _websocketEndpoint: string;
@@ -147,7 +145,6 @@ export class SRAWebsocketOrderProvider extends BaseSRAOrderProvider {
ordersChannelHandler,
);
} catch (e) {
// TODO(dave4506) Provide a more informative error
throw new Error(`Creating websocket connection to ${this._websocketEndpoint}`);
}
}