{"version":3,"sources":["webpack:///./src/modals/dswap-order.module.css?ed52","webpack:///./src/modals/dswap-order.ts","webpack:///./src/modals/dswap-order.html"],"names":["module","exports","DswapOrderModal","controller","toast","taskQueue","store","controllerFactory","i18n","hes","ss","ts","copyTxt","copyMemoTxt","styles","loading","this","validationController","createForCurrentScope","renderer","addRenderer","settings","lock","centerHorizontalOnly","storeSubscription","state","subscribe","createValidationRules","swapRequestModel","baseTokenSymbol","Chain","sellToken","tokens","find","x","symbol","TokenInput","isCrypto","sellTokenSwap","depositAddress","DSWAP_ACCOUNT_HE","getDepositAddress","TokenInputMemo","address","memo","customMemoId","customMemo","message","tr","ns","error","amtInclFee","parseFloat","TokenInputAmount","toFixed","depositAmount","val","selBox","document","createElement","style","position","left","top","opacity","value","body","appendChild","focus","select","execCommand","removeChild","amount","token","stake","validationResult","validate","customValid","result","results","valid","rule","messageKey","swapV2","txMemo","ChainTransactionId","swapResponse","SwapRequest","Id","ok","txMemoId","sendTx","sendToken","transactionId","enrichTokensWithUserBalances"],"mappings":"+EACAA,EAAOC,QAAU,CAAC,iBAAmB,gDAAgD,eAAe,4CAA4C,aAAa,0CAA0C,eAAe,8C,+tBCgBtN,gBAAaC,EAAb,MAuBI,YAAoBC,EAAsCC,EAA6BC,EAA8BC,EACzGC,EAAwDC,EAAoBC,EAAgCC,EAAyBC,GAD7H,KAAAR,aAAsC,KAAAC,QAA6B,KAAAC,YAA8B,KAAAC,QACzG,KAAAC,oBAAwD,KAAAC,OAAoB,KAAAC,MAAgC,KAAAC,KAAyB,KAAAC,KArBvI,KAAAC,QAAU,OACV,KAAAC,YAAc,OAEhB,KAAAC,OAAS,IACT,KAAAC,SAAU,EAkBdC,KAAKC,qBAAuBV,EAAkBW,wBAE9CF,KAAKG,SAAW,IAAI,IACpBH,KAAKC,qBAAqBG,YAAYJ,KAAKG,UAE3CH,KAAKb,WAAWkB,SAASC,MAAO,EAChCN,KAAKb,WAAWkB,SAASE,sBAAuB,EAEhDP,KAAKQ,kBAAoBR,KAAKV,MAAMmB,MAAMC,UAAUD,IAC5CA,IACAT,KAAKS,MAAQA,KAKzB,OACIT,KAAKW,wBAGT,eAAeC,GAKX,GAJAZ,KAAKY,iBAAmBA,EACxBZ,KAAKa,sBAAwB,YAA4BD,EAAiBE,OAE1Ed,KAAKe,UAAYf,KAAKS,MAAMO,OAAOC,KAAKC,GAAKA,EAAEC,SAAWP,EAAiBQ,YACvEpB,KAAKe,WAAaf,KAAKe,UAAUM,SAAU,CAC3C,IAAIC,QAAsB,YAAqBtB,KAAKe,UAAUI,QAC9D,GAAIG,GAAiBtB,KAAKa,gBACtBb,KAAKuB,eAAiB,IAAYC,sBAIlC,GAFAxB,KAAKuB,qBAAuBvB,KAAKP,IAAIgC,kBAAkBH,EAAe,IAAYE,kBAE9ExB,KAAKuB,eACLvB,KAAKY,iBAAiBc,eAAiB1B,KAAKuB,eAAeI,QAEvD3B,KAAKuB,eAAeK,OACpB5B,KAAK6B,aAAe,cACpB7B,KAAK8B,WAAa9B,KAAKuB,eAAeK,KAAO,IAAM5B,KAAK6B,kBAEzD,CACH,MAAMzC,EAAQ,IAAI,IAElBA,EAAM2C,QAAU/B,KAAKR,KAAKwC,GAAG,sBAAuB,CAChDC,GAAI,WAGRjC,KAAKZ,MAAM8C,MAAM9C,GAKzB,IAAI+C,EAAaC,YAAqD,IAAzCpC,KAAKY,iBAAiByB,iBAAyB,QAAQC,QAAQ,IAE5FtC,KAAKuC,cAAgBJ,GAI7B,YAAYK,EAAaZ,GACrB,MAAMa,EAASC,SAASC,cAAc,YACtCF,EAAOG,MAAMC,SAAW,QACxBJ,EAAOG,MAAME,KAAO,IACpBL,EAAOG,MAAMG,IAAM,IACnBN,EAAOG,MAAMI,QAAU,IACvBP,EAAOQ,MAAQT,EACfE,SAASQ,KAAKC,YAAYV,GAC1BA,EAAOW,QACPX,EAAOY,SACPX,SAASY,YAAY,QACrBZ,SAASQ,KAAKK,YAAYd,GAEtBb,EACA5B,KAAKH,YAAc,UAEnBG,KAAKJ,QAAU,UAIvB,iBACII,KAAKwD,OAASxD,KAAKyD,MAAMC,MAGrB,yBAIR,oBACI,MAAMC,QAAmD3D,KAAKC,qBAAqB2D,WAEnF5D,KAAKD,SAAU,EACf,IAAI8D,GAAc,EAElB,IAAK,MAAMC,KAAUH,EAAiBI,QAClC,IAAKD,EAAOE,MAAO,CACf,MAAM5E,EAAQ,IAAI,IAElBA,EAAM2C,QAAU/B,KAAKR,KAAKwC,GAAG8B,EAAOG,KAAKC,WAAY,CACjDR,MAAO1D,KAAKyD,MAAMC,MAClBvC,OAAQnB,KAAKyD,MAAMtC,OACnBc,GAAI,WAGRjC,KAAKZ,MAAM8C,MAAM9C,GAIzB,GAAIY,KAAKe,WAAaf,KAAKe,UAAUM,WAAarB,KAAKuB,eAAgB,CACnE,MAAMnC,EAAQ,IAAI,IAElBA,EAAM2C,QAAU/B,KAAKR,KAAKwC,GAAG,wBAAyB,CAClD0B,MAAO1D,KAAKyD,MAAMC,MAClBvC,OAAQnB,KAAKyD,MAAMtC,OACnBc,GAAI,WAGRjC,KAAKZ,MAAM8C,MAAM9C,GACjByE,GAAc,EAGlB,GAAIF,EAAiBK,OAASH,EAK1B,GAAI7D,KAAKY,iBAAiBc,eAC1B,CACI1B,KAAKmE,QAAS,EACd,IAAIC,EAASpE,KAAKY,iBAAiBc,eAC/B1B,KAAK8B,aACLsC,GAAU,IAAMpE,KAAK8B,YAEzB9B,KAAKY,iBAAiByD,mBAAqBD,EAGvCpE,KAAK8B,aACL9B,KAAKY,iBAAiBc,eAAiB1B,KAAK6B,cAEhD,IAAIyC,QAAqBtE,KAAKN,GAAG6E,YAAYvE,KAAKY,kBAE9C0D,GAAgBA,EAAaE,IAC7BxE,KAAKb,WAAWsF,SAEjB,CACH,IAAIC,EAAW,cACf1E,KAAKY,iBAAiBc,eAAiBgD,EACvC,IAAIJ,QAAqBtE,KAAKN,GAAG6E,YAAYvE,KAAKY,kBAClDZ,KAAKmE,QAAS,EAEd,IAAIC,EAAS,eAAiBM,EAC9B,GAAIJ,GAAgBA,EAAaE,GAAI,CACjC,IAAIG,QAAe3E,KAAKP,IAAImF,UAAU5E,KAAKY,iBAAiBQ,WAAY,IAAYI,iBAAkBxB,KAAKY,iBAAiByB,iBAAkB+B,GAC1IO,EACIA,EAAOE,sBAGD7E,KAAKL,GAAGmF,6BAA6B,CAAC9E,KAAKY,iBAAiBQ,aAClEpB,KAAKb,WAAWsF,MAGpBzE,KAAKY,iBAAiBc,eAAiB,IAMvD1B,KAAKD,SAAU,IAGvB,OA9Lc,GAAT,I,sDACS,GAAT,I,wDACS,GAAT,I,uDACS,GAAT,I,2DAJQb,EAAe,GAD3B,c,uBAwBmC,mBAAiC,IAAiC,IAA0B,QAC7F,8BAA2C,OAAmB,IAA+B,IAAyB,OAxB5IA,GA+Lb,GA/LA,I,wCCjBAF,EAAOC,QAAU","file":"app~379b17c2.89022c2387752c74bb3e.chunk.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"sendTokenBalance\":\"dswap-order-module__sendTokenBalance____1RDr0\",\"modal-header\":\"dswap-order-module__modal-header____vZ5I8\",\"modal-body\":\"dswap-order-module__modal-body____3f-jy\",\"trade-button\":\"dswap-order-module__trade-button____1-MQG\"};","import { dispatchify, Store } from 'aurelia-store';\r\nimport { DialogController } from 'aurelia-dialog';\r\nimport { autoinject, TaskQueue, bindable } from 'aurelia-framework';\r\nimport { Subscription } from 'rxjs';\r\nimport { ValidationControllerFactory, ControllerValidateResult, ValidationRules } from 'aurelia-validation';\r\nimport { ToastService, ToastMessage } from 'services/toast-service';\r\nimport { BootstrapFormRenderer } from 'resources/bootstrap-form-renderer';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport styles from './dswap-order.module.css';\r\nimport { HiveEngineService } from 'services/hive-engine-service';\r\nimport { environment } from 'environment';\r\nimport { SwapService } from 'services/swap-service';\r\nimport { swapRequest } from 'common/dswap-api';\r\nimport { getPeggedTokenSymbolByChain, getSwapTokenByCrypto, getRandomID } from 'common/functions';\r\nimport { TokenService } from '../services/token-service';\r\n\r\n@autoinject()\r\nexport class DswapOrderModal {\r\n @bindable amount;\r\n @bindable username;\r\n @bindable copyTxt = \"Copy\";\r\n @bindable copyMemoTxt = \"Copy\";\r\n\r\n private styles = styles;\r\n private loading = false;\r\n private subscription: Subscription; \r\n private token: any;\r\n private validationController;\r\n private renderer;\r\n private swapRequestModel: ISwapRequestModel;\r\n private baseTokenSymbol;\r\n public storeSubscription: Subscription;\r\n private state: IState;\r\n private depositAddress;\r\n private sellToken; \r\n private depositAmount: number;\r\n private customMemo;\r\n private customMemoId;\r\n private swapV2;\r\n\r\n constructor(private controller: DialogController, private toast: ToastService, private taskQueue: TaskQueue, private store: Store,\r\n private controllerFactory: ValidationControllerFactory, private i18n: I18N, private hes: HiveEngineService, private ss: SwapService, private ts: TokenService) {\r\n this.validationController = controllerFactory.createForCurrentScope();\r\n\r\n this.renderer = new BootstrapFormRenderer();\r\n this.validationController.addRenderer(this.renderer);\r\n\r\n this.controller.settings.lock = false;\r\n this.controller.settings.centerHorizontalOnly = true; \r\n\r\n this.storeSubscription = this.store.state.subscribe(state => {\r\n if (state) {\r\n this.state = state;\r\n }\r\n }); \r\n }\r\n\r\n bind() {\r\n this.createValidationRules();\r\n }\r\n\r\n async activate(swapRequestModel: ISwapRequestModel) { \r\n this.swapRequestModel = swapRequestModel;\r\n this.baseTokenSymbol = await getPeggedTokenSymbolByChain(swapRequestModel.Chain);\r\n\r\n this.sellToken = this.state.tokens.find(x => x.symbol === swapRequestModel.TokenInput);\r\n if (this.sellToken && this.sellToken.isCrypto) {\r\n let sellTokenSwap = await getSwapTokenByCrypto(this.sellToken.symbol);\r\n if (sellTokenSwap == this.baseTokenSymbol) {\r\n this.depositAddress = environment.DSWAP_ACCOUNT_HE;\r\n } else {\r\n this.depositAddress = await this.hes.getDepositAddress(sellTokenSwap, environment.DSWAP_ACCOUNT_HE);\r\n \r\n if (this.depositAddress) {\r\n this.swapRequestModel.TokenInputMemo = this.depositAddress.address;\r\n\r\n if (this.depositAddress.memo) {\r\n this.customMemoId = getRandomID();\r\n this.customMemo = this.depositAddress.memo + \" \" + this.customMemoId;\r\n }\r\n } else {\r\n const toast = new ToastMessage();\r\n\r\n toast.message = this.i18n.tr(\"converterApiTimeout\", {\r\n ns: 'errors'\r\n });\r\n\r\n this.toast.error(toast);\r\n }\r\n }\r\n\r\n // calculate 1.001% fee instead of 1% to be safe with rounding differences\r\n let amtInclFee = parseFloat((this.swapRequestModel.TokenInputAmount * 100 / 98.999).toFixed(8));\r\n\r\n this.depositAmount = amtInclFee;\r\n }\r\n }\r\n\r\n copyMessage(val: string, memo: boolean) {\r\n const selBox = document.createElement('textarea');\r\n selBox.style.position = 'fixed';\r\n selBox.style.left = '0';\r\n selBox.style.top = '0';\r\n selBox.style.opacity = '0';\r\n selBox.value = val;\r\n document.body.appendChild(selBox);\r\n selBox.focus();\r\n selBox.select();\r\n document.execCommand('copy');\r\n document.body.removeChild(selBox);\r\n\r\n if (memo) {\r\n this.copyMemoTxt = \"Copied!\";\r\n } else {\r\n this.copyTxt = \"Copied!\";\r\n }\r\n }\r\n\r\n balanceClicked() {\r\n this.amount = this.token.stake;\r\n }\r\n\r\n private createValidationRules() {\r\n \r\n }\r\n\r\n async confirmSend() {\r\n const validationResult: ControllerValidateResult = await this.validationController.validate();\r\n\r\n this.loading = true;\r\n let customValid = true;\r\n\r\n for (const result of validationResult.results) {\r\n if (!result.valid) {\r\n const toast = new ToastMessage();\r\n\r\n toast.message = this.i18n.tr(result.rule.messageKey, {\r\n stake: this.token.stake,\r\n symbol: this.token.symbol,\r\n ns: 'errors'\r\n });\r\n\r\n this.toast.error(toast);\r\n }\r\n }\r\n\r\n if (this.sellToken && this.sellToken.isCrypto && !this.depositAddress) {\r\n const toast = new ToastMessage();\r\n\r\n toast.message = this.i18n.tr(\"DepositAddressMissing\", {\r\n stake: this.token.stake,\r\n symbol: this.token.symbol,\r\n ns: 'errors'\r\n });\r\n\r\n this.toast.error(toast);\r\n customValid = false;\r\n }\r\n\r\n if (validationResult.valid && customValid) {\r\n //let waitMsg = this.i18n.tr('swapRequestQueued', {\r\n // ns: 'notifications'\r\n //});\r\n\r\n if (this.swapRequestModel.TokenInputMemo)\r\n {\r\n this.swapV2 = false;\r\n let txMemo = this.swapRequestModel.TokenInputMemo;\r\n if (this.customMemo)\r\n txMemo += \" \" + this.customMemo;\r\n\r\n this.swapRequestModel.ChainTransactionId = txMemo;\r\n\r\n // update token input memo with unique id generated (if it is applicable)\r\n if (this.customMemo)\r\n this.swapRequestModel.TokenInputMemo = this.customMemoId;\r\n\r\n let swapResponse = await this.ss.SwapRequest(this.swapRequestModel);\r\n\r\n if (swapResponse && swapResponse.Id) {\r\n this.controller.ok();\r\n }\r\n } else {\r\n var txMemoId = getRandomID(); \r\n this.swapRequestModel.TokenInputMemo = txMemoId; \r\n let swapResponse = await this.ss.SwapRequest(this.swapRequestModel);\r\n this.swapV2 = true;\r\n\r\n var txMemo = \"SwapRequest \" + txMemoId;\r\n if (swapResponse && swapResponse.Id) {\r\n var sendTx = await this.hes.sendToken(this.swapRequestModel.TokenInput, environment.DSWAP_ACCOUNT_HE, this.swapRequestModel.TokenInputAmount, txMemo);\r\n if (sendTx) {\r\n if (sendTx.transactionId) {\r\n //this.swapRequestModel.ChainTransactionId = sendTx.transactionId;\r\n\r\n await this.ts.enrichTokensWithUserBalances([this.swapRequestModel.TokenInput]);\r\n this.controller.ok();\r\n }\r\n } else {\r\n this.swapRequestModel.TokenInputMemo = \"\";\r\n }\r\n }\r\n }\r\n }\r\n\r\n this.loading = false;\r\n }\r\n\r\n}\r\n","module.exports = \"\\r\\n\";"],"sourceRoot":""}