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;
                        });
                    }
                }
            }
        }