public async Task RunActivityAsync() { var poolListing = await PoolListApi.QueryStakePoolInfoAsync(_httpClient, _jsonSerializer); AvailablePools.AddRange(poolListing .Select(p => p.Value) .Where(p => p.ApiEnabled) .Where(p => p.Uri.Scheme == "https") .Where(p => p.Network == App.Current.ActiveNetwork.Name) .Where(p => p.SupportedApiVersions.Where(PoolApiClient.IsSupportedApiVersion).Any()) .OrderBy(p => p.Uri.Host)); if (File.Exists(_configPath)) { var config = await ReadConfig(_configPath); await App.Current.Dispatcher.InvokeAsync(() => { foreach (var entry in config.Entries) { var entryInfo = AvailablePools.Where(p => p.Uri.Host == entry.Host).FirstOrDefault(); if (entryInfo == null) { continue; } var stakePoolSelection = new StakePoolSelection(entryInfo, entry.ApiKey, Hexadecimal.Decode(entry.MultisigVoteScript)); ConfiguredStakePools.Add(stakePoolSelection); RaisePropertyChanged(nameof(VotePreferencesVisibility)); // If only one pool is saved, use this as the default. if (config.Entries.Length == 1) { SelectedStakePool = stakePoolSelection; } } }); } await App.Current.Dispatcher.InvokeAsync(() => { ManageStakePools.Executable = true; CommandManager.InvalidateRequerySuggested(); }); }
public async Task RunActivityAsync() { var poolListing = await PoolListApi.QueryStakePoolInfoAsync(_httpClient, _jsonSerializer); var availablePools = poolListing .Select(p => p.Value) .Where(p => p.ApiEnabled) .Where(p => p.Uri.Scheme == "https") .Where(p => p.Network == App.Current.ActiveNetwork.Name) .Where(p => p.SupportedApiVersions.Where(PoolApiClient.IsSupportedApiVersion).Any()) .OrderBy(p => p.Uri.Host); var selectedStakePool = availablePools.FirstOrDefault(); await App.Current.Dispatcher.InvokeAsync(() => { foreach (var pool in availablePools) { AvailablePools.Add(pool); } SelectedStakePool = selectedStakePool; }); if (File.Exists(_configPath)) { var config = await ReadConfig(_configPath); foreach (var entry in config.Entries) { _configuredPools[entry.Host] = entry; if (selectedStakePool != null && entry.Host == selectedStakePool.Uri.Host) { await App.Current.Dispatcher.InvokeAsync(() => { SelectedConfiguredPool = entry; SelectedPoolApiKey = entry.ApiKey; }); } } } }