예제 #1
0
    public async Task <IViewComponentResult> InvokeAsync(StoreData store)
    {
        var walletId = new WalletId(store.Id, CryptoCode);
        var data     = await _walletHistogramService.GetHistogram(store, walletId, DefaultType);

        var vm = new StoreWalletBalanceViewModel
        {
            Store      = store,
            CryptoCode = CryptoCode,
            WalletId   = walletId,
            Series     = data?.Series,
            Labels     = data?.Labels,
            Balance    = data?.Balance ?? 0,
            Type       = DefaultType
        };

        return(View(vm));
    }
예제 #2
0
    public async Task <IViewComponentResult> InvokeAsync(StoreData store)
    {
        var cryptoCode = _networkProvider.DefaultNetwork.CryptoCode;
        var walletId   = new WalletId(store.Id, cryptoCode);
        var data       = await _walletHistogramService.GetHistogram(store, walletId, DefaultType);

        var defaultCurrency = store.GetStoreBlob().DefaultCurrency;

        var vm = new StoreWalletBalanceViewModel
        {
            Store           = store,
            CryptoCode      = cryptoCode,
            CurrencyData    = _currencies.GetCurrencyData(defaultCurrency, true),
            DefaultCurrency = defaultCurrency,
            WalletId        = walletId,
            Type            = DefaultType
        };

        if (data != null)
        {
            vm.Balance = data.Balance;
            vm.Series  = data.Series;
            vm.Labels  = data.Labels;
        }
        else
        {
            using CancellationTokenSource cts = new (TimeSpan.FromSeconds(3));
            var wallet     = _walletProvider.GetWallet(_networkProvider.DefaultNetwork);
            var derivation = store.GetDerivationSchemeSettings(_networkProvider, walletId.CryptoCode);
            var balance    = await wallet.GetBalance(derivation.AccountDerivation, cts.Token);

            vm.Balance = balance.Available.GetValue();
        }

        return(View(vm));
    }