{"version":3,"sources":["webpack:///./src/store/store.ts","webpack:///./src/services/log.ts","webpack:///./src/store/actions.ts","webpack:///./src/services/swap-service.ts","webpack:///./src/store/state.ts","webpack:///./src/services/toast-service.ts","webpack:///./src/services/token-service.ts"],"names":["store","instance","get","log","getLogger","login","state","username","dswapChainId","newState","account","name","loggedIn","copiedInitialsTate","logout","token","balances","scotTokens","pendingUnstakes","notifications","nfts","marketMakerUser","creationBlock","creationTimestamp","enabledMarkets","isEnabled","isOnCooldown","isPremium","isPremiumFeePaid","lastTickBlock","lastTickTimestamp","markets","timeLimit","_id","setAccount","Object","assign","async","getCurrentFirebaseUser","doc","chainId","Hive","firebaseHive","apps","find","x","firestore","collection","Steem","firebaseSteem","exists","firebaseUser","data","filter","notification","read","e","console","error","getMarketMakerUser","environment","isDebug","debugAccount","currentChainId","mmUser","creationTimestamp_string","unix","format","lastTickTimestamp_string","timeLimitTime","duration","timeLimit_string","days","hours","minutes","registerAction","boolean","loading","Boolean","tokens","http","SwapService","i18n","toast","hes","user","configure","config","useStandardConfiguration","withBaseUrl","FIREBASE_API_HE","this","storeSubscription","subscribe","model","response","Id","toastFailure","overrideOptions","timeout","message","tr","ns","initialState","$action","params","pools","buyBook","sellBook","tradeHistory","conversionHistory","buyTotal","sellTotal","pendingWithdrawals","nft","instances","nftSellBook","tokensLoaded","hivePriceUsd","hivePriceUsdDate","activePageId","ToastService","defaultOptions","class","position","theme","layout","title","titleColor","messageColor","iconColor","backgroundColor","close","closeOnEscape","closeOnClick","overlay","transitionIn","transitionOut","progressBar","settings","options","destroy","show","mergeToastSettings","toastRef","closedBy","hide","info","callback","progress","success","warning","question","toastMessageIsRequired","length","Error","ToastMessage","TokenService","loadPools","p","disabled_pools","includes","tokenPair","map","baseSymbol","quoteSymbol","split","deprecated_tokens","Map","mappedMarketPools","Array","from","values","m","flat","Set","includeMetrics","chain","poolTokens","symbols","swapEnabledTokens","mappedPools","getMappedMarketPools","getPoolSupportedTokens","pTokens","enrichTokensWithMetrics","dTokens","addEnabledCryptoTokens","cryptoTokens","swapEnabledCrypto","sort","reverse","c","swapTokenSymbol","symbol","cryptoToken","replace","isCrypto","unshift","metrics","marketCap","lastPrice","parseFloat","circulatingSupply","Date","now","volumeExpiration","volume","prices","hive","usd","lastPriceUsd","precision","peggedSymbol","highestBid","lowestAsk","priceChangeHive","priceChangePercent","t","push","userBalances","balance","userBalance","stake","getUserBalances","includeBalance","dToken","retrieveSingleToken","getUserBalanceOfToken","tokenRes","forceReload","getDSwapTokens","enrichTokensWithUserBalances","allTokens","mmTokens","disabledTokens","disabled_tokens","disabledTokens_SE"],"mappings":"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","file":"app~3e511cab.64fa253dc7aa93c14d07.chunk.js","sourcesContent":["import { Container } from 'aurelia-framework';\r\nimport { Store } from 'aurelia-store';\r\nimport { first } from 'rxjs/operators';\r\n\r\nconst store: Store = Container.instance.get(Store) as Store;\r\n\r\nexport async function getStateOnce(): Promise {\r\n // eslint-disable-next-line no-async-promise-executor\r\n return new Promise(async (resolve, reject) => {\r\n store.state.pipe(first()).subscribe((state: IState) => resolve(state), (e) => reject(e));\r\n });\r\n}\r\n\r\nexport const getCurrentState = () => (store as any)._state.getValue() as IState;\r\n\r\nexport default store;\r\n","import { LogManager } from 'aurelia-framework';\r\n\r\nexport const log = LogManager.getLogger('dswap');\r\n","import { Container } from 'aurelia-framework';\r\n/* eslint-disable no-undef */\r\nimport { initialState } from './state';\r\nimport store from './store';\r\n\r\nimport firebase from 'firebase/app';\r\nimport { log } from 'services/log';\r\n\r\nimport moment from 'moment';\r\nimport { loadUserBalances } from 'common/hive-engine-api';\r\nimport { dispatchify } from 'aurelia-store';\r\nimport { getUser } from 'common/market-maker-api';\r\nimport { environment } from 'environment';\r\nimport { Chain } from 'common/enums';\r\nimport { firebaseHiveAppName, firebaseSteemAppName } from 'common/constants';\r\nimport { getChainByState } from '../common/functions';\r\n\r\nexport function loading(state: IState, boolean: boolean) {\r\n const newState = { ...state };\r\n\r\n newState.loading = Boolean(boolean);\r\n\r\n return newState;\r\n}\r\n\r\nexport function login(state: IState, username: string, dswapChainId: number): IState {\r\n const newState = { ...state };\r\n if (newState?.account) {\r\n newState.account.name = username;\r\n newState.account.dswapChainId = dswapChainId;\r\n\r\n newState.loggedIn = true;\r\n } else {\r\n const copiedInitialsTate = { ...initialState };\r\n\r\n newState.account = copiedInitialsTate.account;\r\n newState.account.name = username;\r\n newState.account.dswapChainId = dswapChainId;\r\n newState.loggedIn = true;\r\n }\r\n\r\n return newState;\r\n}\r\n\r\nexport function logout(state: IState): IState {\r\n const newState = { ...state };\r\n\r\n newState.account = {\r\n name: '',\r\n token: {},\r\n account: {},\r\n balances: [],\r\n scotTokens: [],\r\n pendingUnstakes: [],\r\n notifications: [],\r\n nfts: [],\r\n dswapChainId: 0\r\n };\r\n\r\n newState.loggedIn = false;\r\n newState.marketMakerUser = {\r\n account: '',\r\n creationBlock: 0,\r\n creationTimestamp: 0,\r\n enabledMarkets: 0,\r\n isEnabled: false,\r\n isOnCooldown: false,\r\n isPremium: false,\r\n isPremiumFeePaid: false,\r\n lastTickBlock: 0,\r\n lastTickTimestamp: 0,\r\n markets: 0,\r\n timeLimit: 0,\r\n _id: 0 \r\n };\r\n\r\n return newState;\r\n}\r\n\r\nexport function setAccount(state: IState, account: Partial): IState {\r\n const newState = { ...state }; \r\n if (newState?.account) {\r\n newState.account = Object.assign(newState.account, account);\r\n }\r\n\r\n return newState;\r\n}\r\n\r\nexport function setTokens(state: IState, tokens: any[]): IState {\r\n const newState = { ...state };\r\n\r\n newState.tokens = tokens;\r\n\r\n return newState;\r\n}\r\n\r\nexport async function getCurrentFirebaseUser(state: IState): Promise { \r\n const newState = { ...state };\r\n\r\n if (!newState.loggedIn) {\r\n return newState;\r\n }\r\n\r\n try {\r\n let doc: any;\r\n let chainId = newState.account.dswapChainId;\r\n if (chainId == Chain.Hive) {\r\n let firebaseHive = firebase.apps.find(x => x.name === firebaseHiveAppName);\r\n doc = await firebaseHive\r\n .firestore()\r\n .collection('users')\r\n .doc(newState.account.name)\r\n .get();\r\n } else if (chainId === Chain.Steem) {\r\n let firebaseSteem = firebase.apps.find(x => x.name === firebaseSteemAppName);\r\n doc = await firebaseSteem\r\n .firestore()\r\n .collection('users')\r\n .doc(newState.account.name)\r\n .get();\r\n }\r\n\r\n if (doc.exists) {\r\n newState.firebaseUser = doc.data();\r\n\r\n if (newState?.firebaseUser?.notifications) {\r\n newState.firebaseUser.notifications = newState.firebaseUser.notifications.filter(\r\n notification => !notification.read,\r\n );\r\n }\r\n }\r\n } catch (e) {\r\n console.log('error firebase user');\r\n log.error(e);\r\n }\r\n\r\n return newState;\r\n}\r\n\r\nexport async function getMarketMakerUser(state: IState): Promise {\r\n const newState = { ...state };\r\n\r\n if (!newState.loggedIn) {\r\n return newState;\r\n }\r\n\r\n try {\r\n let account = environment.isDebug && environment.debugAccount ? environment.debugAccount : newState.account.name;\r\n let currentChainId = await getChainByState(newState);\r\n\r\n let mmUser = await getUser(account, currentChainId);\r\n\r\n if (mmUser) {\r\n mmUser.creationTimestamp_string = moment.unix(mmUser.creationTimestamp / 1000).format('YYYY-MM-DD HH:mm:ss');\r\n mmUser.lastTickTimestamp_string = moment.unix(mmUser.lastTickTimestamp / 1000).format('YYYY-MM-DD HH:mm:ss');\r\n\r\n let timeLimitTime = moment.duration(mmUser.timeLimit);\r\n mmUser.timeLimit_string = timeLimitTime.days() + \" days \" + timeLimitTime.hours() + \" hours \" + timeLimitTime.minutes() + \" minutes\";\r\n }\r\n newState.marketMakerUser = mmUser;\r\n } catch (e) {\r\n log.error(e);\r\n }\r\n\r\n return newState;\r\n}\r\n\r\nexport function resetInstance(state: IState): IState {\r\n const newState = { ...state };\r\n\r\n newState.instance = null;\r\n\r\n return newState;\r\n}\r\n\r\nstore.registerAction('loading', loading);\r\nstore.registerAction('login', login);\r\nstore.registerAction('logout', logout);\r\nstore.registerAction('setAccount', setAccount);\r\nstore.registerAction('setTokens', setTokens);\r\nstore.registerAction('getCurrentFirebaseUser', getCurrentFirebaseUser);\r\nstore.registerAction('getMarketMakerUser', getMarketMakerUser);\r\nstore.registerAction('resetInstance', resetInstance);\r\n","import { Subscription } from 'rxjs';\r\nimport { lazy, autoinject } from 'aurelia-framework';\r\nimport { HttpClient, json } from 'aurelia-fetch-client';\r\nimport { environment } from 'environment';\r\nimport firebase from 'firebase/app';\r\nimport { ToastMessage, ToastService } from './toast-service';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { Store } from 'aurelia-store';\r\nimport { loadCoins, loadTokenMetrics, loadUserBalances, loadTokens } from 'common/hive-engine-api';\r\nimport { HiveEngineService } from './hive-engine-service';\r\nimport { getPrices, usdFormat } from 'common/functions';\r\nimport { Chain } from '../common/enums';\r\nimport { loadUserBalancesSE, loadTokensSE, loadTokenMetricsSE } from '../common/steem-engine-api';\r\nimport { calculateSwapInput, calculateSwapOutput, swapRequest, swapRequestDca, swapRequestDcaCancel } from '../common/dswap-api';\r\n\r\nconst http = new HttpClient();\r\n\r\n@autoinject()\r\nexport class SwapService {\r\n public state: IState;\r\n\r\n public user = {\r\n name: '',\r\n account: {}\r\n };\r\n\r\n public storeSubscription: Subscription;\r\n\r\n constructor(private i18n: I18N,\r\n private store: Store,\r\n private toast: ToastService,\r\n private hes: HiveEngineService) {\r\n http.configure(config => {\r\n config\r\n .useStandardConfiguration()\r\n .withBaseUrl(environment.FIREBASE_API_HE)\r\n });\r\n\r\n this.storeSubscription = this.store.state.subscribe(state => {\r\n if (state) {\r\n this.state = state;\r\n\r\n this.user = state.account as any;\r\n }\r\n });\r\n }\r\n\r\n async SwapRequest(model: ISwapRequestModel) {\r\n //let toastWait = new ToastMessage();\r\n //toastWait.message = this.i18n.tr('swapRequestInProgress', {\r\n // ns: 'notifications'\r\n //});\r\n //toastWait.overrideOptions.timeout = 2000;\r\n //this.toast.warning(toastWait);\r\n\r\n let response = await swapRequest(model);\r\n console.log(response);\r\n if (!response || !response.Id) {\r\n let toastFailure = new ToastMessage();\r\n toastFailure.overrideOptions.timeout = 2000;\r\n toastFailure.message = this.i18n.tr('swapRequestQueueFailed', {\r\n ns: 'errors'\r\n });\r\n\r\n this.toast.error(toastFailure);\r\n } else { \r\n //let toastSuccess = new ToastMessage();\r\n\r\n //toastSuccess.message = this.i18n.tr('swapRequestInProgress', {\r\n // ns: 'notifications'\r\n //});\r\n\r\n //this.toast.success(toastSuccess);\r\n }\r\n\r\n return response;\r\n }\r\n\r\n async SwapRequestDCA(model: ISwapRequestDCAModel) {\r\n //let toastWait = new ToastMessage();\r\n //toastWait.message = this.i18n.tr('swapRequestInProgress', {\r\n // ns: 'notifications'\r\n //});\r\n //toastWait.overrideOptions.timeout = 2000;\r\n //this.toast.warning(toastWait);\r\n\r\n let response = await swapRequestDca(model);\r\n console.log(response);\r\n if (!response || !response.Id) {\r\n let toastFailure = new ToastMessage();\r\n toastFailure.overrideOptions.timeout = 2000;\r\n toastFailure.message = this.i18n.tr('swapRequestQueueFailed', {\r\n ns: 'errors'\r\n });\r\n\r\n this.toast.error(toastFailure);\r\n } else { \r\n //let toastSuccess = new ToastMessage();\r\n\r\n //toastSuccess.message = this.i18n.tr('swapRequestInProgress', {\r\n // ns: 'notifications'\r\n //});\r\n\r\n //this.toast.success(toastSuccess);\r\n }\r\n\r\n return response;\r\n }\r\n\r\n async CancelSwapRequestDCA(model: IDCACancelRequestModel) {\r\n //let toastWait = new ToastMessage();\r\n //toastWait.message = this.i18n.tr('swapRequestInProgress', {\r\n // ns: 'notifications'\r\n //});\r\n //toastWait.overrideOptions.timeout = 2000;\r\n //this.toast.warning(toastWait);\r\n\r\n let response = await swapRequestDcaCancel(model);\r\n console.log(response);\r\n if (!response || !response.Id) {\r\n let toastFailure = new ToastMessage();\r\n toastFailure.overrideOptions.timeout = 2000;\r\n toastFailure.message = this.i18n.tr('swapRequestQueueFailed', {\r\n ns: 'errors'\r\n });\r\n\r\n this.toast.error(toastFailure);\r\n } else { \r\n //let toastSuccess = new ToastMessage();\r\n\r\n //toastSuccess.message = this.i18n.tr('swapRequestInProgress', {\r\n // ns: 'notifications'\r\n //});\r\n\r\n //this.toast.success(toastSuccess);\r\n }\r\n\r\n return response;\r\n }\r\n\r\n async CalculateSwapOutput(model: ISwapCalcValuesModel) {\r\n let response = await calculateSwapOutput(model);\r\n if (!response) {\r\n let toastFailure = new ToastMessage();\r\n toastFailure.overrideOptions.timeout = 2000;\r\n toastFailure.message = this.i18n.tr('calculateSwapOutputFailed', {\r\n ns: 'errors'\r\n });\r\n\r\n this.toast.error(toastFailure);\r\n } \r\n\r\n return response;\r\n }\r\n\r\n async CalculateSwapInput(model: ISwapCalcValuesModel) {\r\n let response = await calculateSwapInput(model);\r\n if (!response) {\r\n let toastFailure = new ToastMessage();\r\n toastFailure.overrideOptions.timeout = 2000;\r\n toastFailure.message = this.i18n.tr('calculateSwapInputFailed', {\r\n ns: 'errors'\r\n });\r\n\r\n this.toast.error(toastFailure);\r\n }\r\n\r\n return response;\r\n }\r\n\r\n}\r\n","import { DefaultChainId } from \"common/constants\";\n\nexport const initialState: IState = {\n $action: {\n name: '',\n params: {}\n },\n account: {\n name: '',\n token: {},\n account: {},\n balances: [],\n scotTokens: [],\n pendingUnstakes: [],\n notifications: [],\n nfts: [],\n dswapChainId: 0\n },\n firebaseUser: {},\n marketMakerUser: {\n account: '',\n creationBlock: 0,\n creationTimestamp: 0,\n enabledMarkets: 0,\n isEnabled: false,\n isOnCooldown: false,\n isPremium: false,\n isPremiumFeePaid: false,\n lastTickBlock: 0,\n lastTickTimestamp: 0,\n markets: 0,\n timeLimit: 0,\n _id: 0\n },\n loggedIn: false,\n loading: false,\n tokens: [],\n pools: [],\n buyBook: [],\n sellBook: [],\n tradeHistory: [],\n conversionHistory: [],\n buyTotal: 0,\n sellTotal: 0,\n pendingWithdrawals: [],\n nft: null,\n nfts: [],\n instance: null,\n instances: [],\n nftSellBook: [],\n tokensLoaded: false,\n hivePriceUsd: '',\n hivePriceUsdDate: null,\n activePageId: 'home',\n dswapChainId: DefaultChainId\n};\n","import { autoinject } from 'aurelia-dependency-injection';\r\nimport izitoast, { IziToastSettings, IziToastProgress } from 'izitoast';\r\n\r\n@autoinject()\r\nexport class ToastService implements Toast {\r\n\r\n private defaultOptions: ToastOptions = {\r\n class: 'se-toast',\r\n position: 'bottomCenter',\r\n theme: 'light',\r\n layout: 1,\r\n title: '',\r\n titleColor: '#FFFFFF',\r\n messageColor: '#FFFFFF',\r\n iconColor: '#FFFFFF',\r\n backgroundColor: '#09A47A',\r\n close: true,\r\n closeOnEscape: true,\r\n closeOnClick: true,\r\n timeout: 3000,\r\n overlay: false,\r\n transitionIn: 'fadeInUp',\r\n transitionOut: 'fadeOutDown',\r\n progressBar: true\r\n };\r\n\r\n constructor() {\r\n izitoast.settings(this.defaultOptions);\r\n }\r\n\r\n setDefaultOptions(options: ToastOptions): void {\r\n this.defaultOptions = { ...this.defaultOptions, ...options };\r\n izitoast.settings(this.defaultOptions);\r\n }\r\n\r\n getDefaultOptions(): ToastOptions {\r\n return this.defaultOptions;\r\n }\r\n\r\n destroyAllToasts(): void {\r\n izitoast.destroy();\r\n }\r\n\r\n show(toast: ToastMessage): boolean | void {\r\n return izitoast.show(this.mergeToastSettings(toast));\r\n }\r\n\r\n hide(toastRef: string | HTMLDivElement, toast?: ToastMessage, closedBy?: string): void {\r\n izitoast.hide(this.mergeToastSettings(toast, false), toastRef, closedBy);\r\n }\r\n\r\n public info(toast: ToastMessage): void {\r\n izitoast.info(this.mergeToastSettings(toast));\r\n }\r\n\r\n progress(toastRef: HTMLDivElement, toast?: ToastMessage, callback?: () => void): ToastProgress {\r\n return izitoast.progress(this.mergeToastSettings(toast, false), toastRef, callback);\r\n }\r\n\r\n success(toast: ToastMessage): void {\r\n izitoast.success(this.mergeToastSettings(toast));\r\n }\r\n\r\n warning(toast: ToastMessage): void {\r\n izitoast.warning(this.mergeToastSettings(toast));\r\n }\r\n\r\n error(toast: ToastMessage): void {\r\n toast.overrideOptions.timeout = toast.overrideOptions.timeout || false;\r\n toast.overrideOptions.layout = toast.overrideOptions.layout || 2;\r\n izitoast.error(this.mergeToastSettings(toast));\r\n }\r\n\r\n question(toast: ToastMessage): void {\r\n izitoast.question(this.mergeToastSettings(toast));\r\n }\r\n\r\n private mergeToastSettings(toast: ToastMessage, toastMessageIsRequired = false): IziToastSettings {\r\n if (toastMessageIsRequired && (!toast || !toast.message || !toast.message.length)) {\r\n throw new Error('Toast message cannot be empty if \"toastMessageIsRequired\" is true!');\r\n }\r\n return toast ? { ...toast.overrideOptions, ...{ message: toast.message || '', title: toast.title || '' } } : {};\r\n }\r\n}\r\n\r\nexport type Omit = Pick>;\r\n\r\nexport interface ToastOptions extends Omit { }\r\n\r\nexport interface ToastProgress extends IziToastProgress { }\r\n\r\nexport class ToastMessage {\r\n constructor(\r\n public message?: string,\r\n public title?: string,\r\n public overrideOptions: ToastOptions = {}\r\n ) { }\r\n}\r\n\r\nexport interface Toast {\r\n setDefaultOptions(options: ToastOptions): void;\r\n getDefaultOptions(): ToastOptions;\r\n destroyAllToasts(): void;\r\n show(toast: ToastMessage): void | boolean;\r\n hide(toastRef: HTMLDivElement | string, toast?: ToastMessage, closedBy?: string): void;\r\n progress(toastRef: HTMLDivElement, toast?: ToastMessage, callback?: () => void): ToastProgress;\r\n info(toast: ToastMessage): void;\r\n success(toast: ToastMessage): void;\r\n warning(toast: ToastMessage): void;\r\n error(toast: ToastMessage): void;\r\n question(toast: ToastMessage): void;\r\n}\r\n","import { Subscription } from 'rxjs';\nimport { lazy, autoinject } from 'aurelia-framework';\nimport { HttpClient, json } from 'aurelia-fetch-client';\nimport { environment } from 'environment';\nimport firebase from 'firebase/app';\nimport { ToastMessage, ToastService } from './toast-service';\nimport { I18N } from 'aurelia-i18n';\nimport { Store } from 'aurelia-store';\nimport { loadCoins, loadTokenMetrics, loadUserBalances, loadTokens, fetchSettings, loadPoolTokens } from 'common/hive-engine-api';\nimport { HiveEngineService } from './hive-engine-service';\nimport { getPrices, usdFormat, getSwapTokenByCrypto, getPeggedTokenSymbolByChain } from 'common/functions';\nimport { Chain } from '../common/enums';\nimport { loadUserBalancesSE, loadTokensSE, loadTokenMetricsSE } from '../common/steem-engine-api';\nimport { env } from 'process';\n\nconst http = new HttpClient();\n\n@autoinject()\nexport class TokenService {\n public state: IState;\n\n public user = {\n name: '',\n account: {}\n };\n\n public storeSubscription: Subscription;\n\n constructor(private i18n: I18N,\n private store: Store,\n private toast: ToastService,\n private hes: HiveEngineService) {\n http.configure(config => {\n config\n .useStandardConfiguration()\n .withBaseUrl(environment.FIREBASE_API_HE)\n });\n \n this.storeSubscription = this.store.state.subscribe(state => {\n if (state) {\n this.state = state;\n\n this.user = state.account as any; \n }\n }); \n }\n\n async loadPools(){\n if (!this.state.pools) {\n let pools = await loadPoolTokens([], 1000);\n this.state.pools = pools;\n }\n\n }\n\n async getMappedMarketPools(){\n if (!this.state.pools) {\n await this.loadPools();\n }\n\n const pools = this.state.pools\n .filter((p) => !environment.settings?.disabled_pools.includes(p.tokenPair))\n .map<\n [string, MarketPool & { baseSymbol: string; quoteSymbol: string }]\n >((p) => {\n const [baseSymbol, quoteSymbol] = p.tokenPair.split(':');\n\n return [p.tokenPair, { ...p, baseSymbol, quoteSymbol }];\n })\n .filter(\n (p) =>\n !environment.settings?.deprecated_tokens.includes(p[1].baseSymbol) &&\n !environment.settings?.deprecated_tokens.includes(p[1].quoteSymbol),\n );\n\n return new Map(pools);\n }\n\n getPoolSupportedTokens(mappedMarketPools){\n const tokens = Array.from(mappedMarketPools.values())\n .map((m:any) => [m.baseSymbol, m.quoteSymbol])\n .flat();\n\n return Array.from(new Set(tokens));\n }\n\n async getDSwapTokens(includeMetrics = true, chain: Chain = Chain.Hive, poolTokens = false) {\n const symbols = environment.swapEnabledTokens;\n\n if (poolTokens) {\n let mappedPools = await this.getMappedMarketPools();\n let poolTokens = this.getPoolSupportedTokens(mappedPools);\n\n let pTokens = await loadTokens(poolTokens, 1000);\n\n if (includeMetrics)\n await this.enrichTokensWithMetrics(pTokens, symbols, chain);\n\n return pTokens;\n } else { \n let dTokens1 = await loadTokens([], 1000);\n let dTokens2 = await loadTokens([], 1000, 1000);\n\n let dTokens = [...dTokens1, ...dTokens2];\n\n if (includeMetrics)\n await this.enrichTokensWithMetrics(dTokens, symbols, chain);\n\n await this.addEnabledCryptoTokens(dTokens);\n\n this.state.tokens = dTokens;\n\n return dTokens;\n }\n } \n\n async addEnabledCryptoTokens(dTokens: IToken[]) {\n var cryptoTokens = environment.swapEnabledCrypto;\n\n if (cryptoTokens) {\n cryptoTokens = cryptoTokens.sort().reverse();\n for (const c of cryptoTokens) {\n let swapTokenSymbol = await getSwapTokenByCrypto(c);\n\n let token = dTokens.find(x => x.symbol == swapTokenSymbol);\n if (token) {\n let cryptoToken = { ...token };\n cryptoToken.symbol = c;\n cryptoToken.name = cryptoToken.name.replace(\" Pegged\", \"\").replace(\" pegged\", \"\");\n cryptoToken.isCrypto = true;\n\n dTokens.unshift(cryptoToken);\n }\n } \n }\n }\n\n async enrichTokensWithMetrics(dTokens: IToken[], symbols: string[], chain: Chain) {\n let metrics = [];\n\n if (chain === Chain.Hive) {\n metrics = await loadTokenMetrics(symbols);\n } else if (chain === Chain.Steem) {\n metrics = await loadTokenMetricsSE(symbols);\n }\n\n if (metrics && metrics.length > 0) { \n for(const m of metrics) {\n let token = dTokens.find(x => x.symbol == m.symbol);\n if (token) {\n m.marketCap = m.lastPrice * parseFloat(token.circulatingSupply);\n\n if (Date.now() / 1000 < m.volumeExpiration) {\n m.volume = parseFloat(m.volume);\n }\n\n if (!this.state.hivePriceUsd) {\n let prices = await getPrices(); \n if (prices)\n this.state.hivePriceUsd = prices.hive.usd; \n }\n\n m.lastPriceUsd = usdFormat(parseFloat(m.lastPrice), token.precision, this.state.hivePriceUsd, true); \n\n token.metrics = m; \n }\n }\n } else {\n var peggedSymbol = await getPeggedTokenSymbolByChain(Chain.Hive);\n if (symbols.length == 1 && symbols[0] == peggedSymbol) {\n let token = dTokens.find(x => x.symbol == peggedSymbol);\n if (token) {\n token.metrics = {\n highestBid: 0,\n lastPrice: 0,\n lastPriceUsd: this.state.hivePriceUsd,\n lowestAsk: 0,\n marketCap: 0,\n priceChangeHive: 0,\n priceChangePercent: 0,\n symbol: peggedSymbol,\n volume: 0,\n volumeExpiration: 0 \n }\n }\n }\n }\n }\n\n async enrichTokensWithUserBalancesDcaPools(tokens) {\n let account = environment.isDebug && environment.debugAccount ? environment.debugAccount : this.user.name;\n let symbols = [];\n for (let t of tokens) {\n symbols.push(t.symbol);\n }\n \n let userBalances = await loadUserBalances(account, symbols);\n for(let t of tokens) {\n let balance = userBalances.find(x => x.symbol == t.symbol);\n if (balance) {\n t.userBalance = balance;\n } else {\n t.userBalance = { _id: 0, account: account, balance: 0, stake: \"0\", symbol: t.symbol };\n }\n }\n }\n\n async enrichTokensWithUserBalances(symbols) {\n let account = environment.isDebug && environment.debugAccount ? environment.debugAccount : this.user.name;\n let userBalances = await loadUserBalances(account, symbols);\n for(let t of this.state.tokens) {\n let balance = userBalances.find(x => x.symbol == t.symbol);\n if (balance) {\n t.userBalance = balance;\n } else {\n t.userBalance = { _id: 0, account: account, balance: 0, stake: \"0\", symbol: t.symbol };\n }\n }\n }\n\n async getUserBalanceOfToken(symbol, chain: Chain) {\n let account = environment.isDebug && environment.debugAccount ? environment.debugAccount : this.user.name;\n let userBalances = await this.getUserBalances(account, symbol, chain); \n let balance = userBalances.find(x => x.symbol == symbol);\n if (balance) {\n return balance;\n } \n\n return { _id: 0, account: account, balance: 0, stake: \"0\", symbol: symbol };\n }\n\n async getUserBalances(account, symbol, chain: Chain) {\n if (chain === Chain.Hive) {\n return loadUserBalances(account, [symbol]);\n } else if (chain === Chain.Steem) {\n return loadUserBalancesSE(account, [symbol]);\n }\n }\n\n async getTokenDetails(symbol, chain: Chain, includeMetrics = true, includeBalance = true) { \n let dToken: any;\n if (this.state.tokens && this.state.tokens.length > 0) { \n dToken = this.state.tokens.find(x => x.symbol == symbol);\n\n if (!dToken)\n dToken = await this.retrieveSingleToken(symbol, chain);\n } else {\n dToken = await this.retrieveSingleToken(symbol, chain);\n }\n\n if (includeMetrics)\n await this.enrichTokensWithMetrics([dToken], [symbol], chain);\n\n if (includeBalance)\n dToken.userBalance = await this.getUserBalanceOfToken(symbol, chain);\n\n return dToken;\n }\n\n async retrieveSingleToken(symbol, chain: Chain) {\n let dToken: any;\n if (chain === Chain.Hive) {\n let tokenRes = await loadTokens([symbol])\n if (tokenRes)\n dToken = tokenRes[0];\n } else if (chain === Chain.Steem) {\n let tokenRes = await loadTokensSE([symbol])\n if (tokenRes)\n dToken = tokenRes[0];\n } \n return dToken;\n }\n\n async getDSwapTokenBalances(chain: Chain, forceReload?: boolean) {\n if (!this.state.tokens) {\n await this.getDSwapTokens(true, chain);\n }\n\n if (!this.state.tokens.find((x) => x.userBalance != null) || forceReload) {\n let symbols = this.state.tokens.map(x => x.symbol);\n await this.enrichTokensWithUserBalances(symbols);\n } \n \n return this.state.tokens;\n }\n\n async getMarketMakerTokens(symbols = [], chain: Chain) {\n let allTokens: any;\n let mmTokens = [];\n let disabledTokens = null;\n\n if (!environment.settings) {\n environment.settings = await fetchSettings();\n\n if (environment.settings && environment.settings.disabled_tokens) {\n disabledTokens = environment.settings.disabled_tokens;\n } else {\n disabledTokens = environment.disabledTokens;\n }\n } else {\n disabledTokens = environment.settings.disabled_tokens;\n }\n\n if (chain === Chain.Hive) {\n allTokens = await loadTokens(symbols, 1000);\n for (const token of allTokens) {\n if (disabledTokens.includes(token.symbol)) {\n continue;\n }\n\n mmTokens.push(token);\n }\n } else if (chain === Chain.Steem) {\n allTokens = await loadTokensSE(symbols, 1000);\n for (const token of allTokens) {\n if (environment.disabledTokens_SE.includes(token.symbol)) {\n continue;\n }\n\n mmTokens.push(token);\n }\n }\n\n return mmTokens;\n }\n}\n"],"sourceRoot":""}