async Task <bool> StartServerAsync() { try { var cardanoServerConsoleProcess = _cardanoServer.Start(_nodePort); var allWallets = await _walletClient.GetAllWalletsAsync(); AllWallets = new ObservableCollection <Wallet>(allWallets); var allPools = await _walletClient.GetAllPoolsAsync(); BlockChainCache = new BlockChainCache(); BlockChainCache.StakePools = new ObservableCollection <StakePool>(allPools); BlockChainCache.CacheDate = DateTime.Now; string jsonString = JsonConvert.SerializeObject(BlockChainCache); byte[] jsonUtf8Bytes; var options = new JsonSerializerOptions { WriteIndented = true }; jsonUtf8Bytes = JsonSerializer.SerializeToUtf8Bytes(BlockChainCache, options); await File.WriteAllBytesAsync(StakePoolListDatabase, jsonUtf8Bytes); //var allPoolsGrouped = allPools.GroupBy(g=>g.LifeTimeBlocks == 0).ToDictionary(x => x.Key, x => x.ToList()); var allStakePoolsGroups = new DataGridCollectionView(allPools); //allStakePoolsGroups.GroupDescriptions.Add(new DataGridPathGroupDescription("LifeTimeBlocks")); //allStakePoolsGroups.Filter = FilterProperty; AllStakePools = new ObservableCollection <StakePool>(allPools); if (BlockChainCache.StakePools.Any()) { BlockChainCache.StakePools.Clear(); } OnPropertyChanged("BlockChainCache"); return(true); } catch (Exception e) { Log.Logger.Fatal(e.Message); return(false); } }
async Task <bool> StartServerAsync() { try { WalletApiProcess = _cardanoServer.ConnectToDaedalus(_sprdSettings.WalletSettings); } catch (Exception e) { var msgBox = MessageBox.Avalonia.MessageBoxManager.GetMessageBoxStandardWindow("SPRD: Daedalus not running", string.Format("{0}{1}Do you want start Daedalus automatically now? Daedalus to be running and synchronized.{2}SPRD will exit, restart again when Daedalus is ready!", e.Message, Environment.NewLine, Environment.NewLine), ButtonEnum.YesNo, Icon.Stop); var msgBoxResult = await msgBox.ShowDialog(_desktopMainWindow); if (msgBoxResult == ButtonResult.Yes) { _cardanoServer.StartDaedalus(); } _desktopMainWindow.Close(); Environment.Exit(0); return(false); //WalletApiProcess = _cardanoServer.ConnectToDaedalus(_sprdSettings.WalletSettings); } try { var lastCommitedPoolInformations = await _sprdServer.GetPoolInformationsAsync(); LastComittedAdaPools = new ObservableCollection <SprdPoolInfo>(lastCommitedPoolInformations); var allWallets = await _walletClient.GetAllWalletsAsync(); AllWallets = new ObservableCollection <Wallet>(allWallets); if (!AllWallets.Any()) { throw new Exception(string.Format("No wallets found in Daedalus. You cannot use SPRD since a Wallet must be selected in order to verify your identity!{0} The logs may help or try to restart Daedalus and SPRD!", Environment.NewLine)); } ResolvePoolIds(BlockChainCache.StakePools); SprdSelection.Wallet = AllWallets.First(); var allPools = await _walletClient.GetAllPoolsAsync(); AllStakePools = new ObservableCollection <StakePool>(allPools); OnPropertyChanged("ShowCaching"); ResolvePoolIds(AllStakePools); await WriteCache(allPools); } catch (Exception e) { if (e.Message.Contains("The operation has timed out.")) { Logging.Logger.LogWarning("Timeout happened, try to restart servers..."); Dispose(); var started = await StartServerAsync(); if (started) { return(started); } } var errorMessag = string.Format("While starting the Cardano wallet API following error occurred: {0}", e.Message); await ShowException(errorMessag); return(false); } return(true); }