From a764dfa789ba44e519371b4a1e4569db7f551fb7 Mon Sep 17 00:00:00 2001 From: fragosti Date: Thu, 18 Oct 2018 10:43:41 -0700 Subject: feat: MVP of passing in sraApiUrl, assetData and other settings from render method --- packages/instant/src/util/asset.ts | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 packages/instant/src/util/asset.ts (limited to 'packages/instant/src/util/asset.ts') diff --git a/packages/instant/src/util/asset.ts b/packages/instant/src/util/asset.ts new file mode 100644 index 000000000..ec22276ae --- /dev/null +++ b/packages/instant/src/util/asset.ts @@ -0,0 +1,34 @@ +import { assetDataUtils } from '@0xproject/order-utils'; +import { AssetProxyId, ObjectMap } from '@0xproject/types'; +import * as _ from 'lodash'; + +import { assetDataNetworkMapping } from '../data/asset_data_network_mapping'; +import { Asset, AssetMetaData, Network, ZeroExInstantError } from '../types'; + +export const assetUtils = { + createAssetFromAssetData: (assetData: string, assetMetaDataMap: ObjectMap): Asset => { + return { + assetProxyId: assetDataUtils.decodeAssetProxyId(assetData), + assetData, + metaData: assetUtils.getMetaDataOrThrow(assetData, assetMetaDataMap), + }; + }, + getMetaDataOrThrow: ( + assetData: string, + metaDataMap: ObjectMap, + network: Network = Network.Mainnet, + ): AssetMetaData => { + let mainnetAssetData: string | undefined = assetData; + if (network !== Network.Mainnet) { + mainnetAssetData = assetDataNetworkMapping.getAssociatedAssetDataIfExists(assetData, network); + } + if (_.isUndefined(mainnetAssetData)) { + throw new Error(ZeroExInstantError.AssetMetaDataNotAvailable); + } + const metaData = metaDataMap[mainnetAssetData]; + if (_.isUndefined(metaData)) { + throw new Error(); + } + return metaData; + }, +}; -- cgit v1.2.3