private async Task UpdateSwapBalanceAsync() { queryingNotify = "Querying balance ..."; await InvokeAsync(() => { StateHasChanged(); }); lyrReserveBalance = await SwapUtils.GetLyraBalanceAsync(Configuration["network"], swapOptions.CurrentValue.lyrPvk); tlyrReserveBalance = await SwapUtils.GetEthContractBalanceAsync(swapOptions.CurrentValue.ethUrl, swapOptions.CurrentValue.ethContract, swapOptions.CurrentValue.ethPub); // var ethGas = await SwapUtils.EstimateEthTransferFeeAsync(swapOptions.CurrentValue.ethUrl, // swapOptions.CurrentValue.ethContract, swapOptions.CurrentValue.ethPub); // ICoinGeckoClient _client; // _client = CoinGeckoClient.Instance; // const string vsCurrencies = "usd"; // var prices = await _client.SimpleClient.GetSimplePrice(new[] { "ethereum", "lyra" }, new[] { vsCurrencies }); //ethGasFee = (decimal)((double)(ethGas / 10000000000) * prices["ethereum"]["usd"].GetValueOrDefault()); //lyraPrice = (decimal) prices["lyra"]["usd"].Value; queryingNotify = ""; await InvokeAsync(() => { StateHasChanged(); }); }
private async Task UpdateSwapFromBalanceAsync() { if (string.IsNullOrEmpty(_swapFromTokenName)) { _swapFromTokenName = "LYR"; } if (_swapFromTokenName == "LYR") { // get lyr balance fromTokenBalance = walletState.Value.wallet.BaseBalance; } else if (_swapFromTokenName == "TLYR") { fromTokenBalance = 0; fromTokenBalance = await SwapUtils.GetEthContractBalanceAsync(swapOptions.CurrentValue.ethUrl, swapOptions.CurrentValue.ethContract, SelectedAccount); } await InvokeAsync(() => { StateHasChanged(); }); }
private async Task BeginSwapTLYR(MouseEventArgs e) { IsDisabled = true; swapResultMessage = "Checking for configurations..."; await InvokeAsync(() => { StateHasChanged(); }); // do check swapResultMessage = ""; // check network id CurrentChainName = await metamaskService.GetChainName(); if (Configuration["network"] == "testnet" && CurrentChainName != "Rinkeby Test Network") { swapResultMessage = "Only Rinkeby Test Network is supported for testnet."; } else if (Configuration["network"] == "mainnet" && CurrentChainName != "Ethereum Main Network") { swapResultMessage = "Only Ethereum Main Network is supported for mainnet."; } else if (!EthereumEnabled || !walletState.Value.IsOpening) { swapResultMessage = "Wallet(s) not opening or connected."; } else if (swapFromToken == swapToToken) { swapResultMessage = "No need to swap."; } else if (!((swapFromToken == "LYR" && swapToToken == "TLYR") || (swapFromToken == "TLYR" && swapToToken == "LYR"))) { swapResultMessage = "Unknown token pair"; } else if (swapFromCount < 10) { swapResultMessage = "Swap amount too small. (< 10)"; } else if (swapFromCount > 1000000) { swapResultMessage = "Swap amount too large. (> 1M)"; } else if (swapFromToken == "LYR" && swapFromCount > walletState.Value.wallet.BaseBalance) { swapResultMessage = "Not enough LYR in Lyra Wallet."; } else if (string.IsNullOrWhiteSpace(swapToAddress)) { swapResultMessage = "Not valid swap to address."; } else if (swapToToken == "TLYR" && swapToCount > 0.8m * tlyrReserveBalance) { swapResultMessage = "Reserve account of TLYR is running low. Please contact support."; } else if (swapToToken == "LYR" && swapToCount > 0.8m * lyrReserveBalance) { swapResultMessage = "Reserve account of LYR is running low. Please contact support."; } else if (swapToCount < 1) { swapResultMessage = "Swap to amount too small."; } else if (swapFromToken == "TLYR") { try { var tlyrBalance = await SwapUtils.GetEthContractBalanceAsync(swapOptions.CurrentValue.ethUrl, swapOptions.CurrentValue.ethContract, SelectedAccount); if (tlyrBalance < swapFromCount) { swapResultMessage = "Not enough TLYR in Ethereum Wallet."; } } catch (Exception) { swapResultMessage = "Unable to get TLYR balance."; } } if (!string.IsNullOrEmpty(swapResultMessage)) { IsDisabled = false; await InvokeAsync(() => { StateHasChanged(); }); return; } var mmmsg = swapFromToken == "TLYR" ? "Please open Matamask and confirm transaction." : ""; swapResultMessage = $"Do swapping... {mmmsg} Please wait for a moment... "; walletState.Value.Message = ""; await InvokeAsync(() => { StateHasChanged(); }); var arg = new WebWalletBeginSwapTLYRAction { wallet = walletState.Value.wallet, fromToken = swapFromToken, fromAddress = swapFromToken == "LYR" ? walletState.Value.wallet.AccountId : SelectedAccount, fromAmount = swapFromCount, toToken = swapToToken, toAddress = swapToAddress, toAmount = swapToCount, gasPrice = EthGasPrice, gasLimit = EthGasLimit, options = swapOptions.CurrentValue, metamask = metamaskInterceptor }; logger.LogInformation($"TokenSwap: Begin {arg.fromAmount} from {arg.fromAddress} to {arg.toAddress} amount {arg.toAmount}"); Dispatcher.Dispatch(arg); IsDisabled = true; }