async Task WriteCache(List <StakePool> allPools) { BlockChainCache = new BlockChainCache { StakePools = new ObservableCollection <StakePool>(allPools), CacheDate = DateTime.Now }; var options = new JsonSerializerOptions { WriteIndented = true }; byte[] jsonUtf8Bytes = JsonSerializer.SerializeToUtf8Bytes(BlockChainCache, options); if (BlockChainCache.StakePools.Any()) { BlockChainCache.StakePools.Clear(); } OnPropertyChanged("BlockChainCache"); if (!_stakePoolListDatabase.HasWritePermissionOnDir()) { throw new Exception(string.Format( "Failed caching to local system. Software can still be used but without caching it results in slower performance. {0}No write permission for: {1}", Environment.NewLine, _stakePoolListDatabase)); } await File.WriteAllBytesAsync(_stakePoolListDatabase, jsonUtf8Bytes); }
public MainWindowViewModel(Window desktopMainWindow) { _desktopMainWindow = desktopMainWindow; BlockChainCache = new BlockChainCache(); BlockChainCache.StakePools = new ObservableCollection <StakePool>(); var stakePoolDbFileInfo = new FileInfo(StakePoolListDatabase); if (stakePoolDbFileInfo.Exists) { var jsonCacheStakePools = File.ReadAllBytes(StakePoolListDatabase); var readOnlySpan = new ReadOnlySpan <byte>(jsonCacheStakePools); BlockChainCache = JsonSerializer.Deserialize <BlockChainCache>(readOnlySpan); _allStakePools = BlockChainCache.StakePools; OnPropertyChanged("BlockChainCache"); } else { _allStakePools = new ObservableCollection <StakePool>(); } _allWallets = new ObservableCollection <Wallet>(); _cardanoServer = new CardanoServer(); _walletClient = new WalletClient(_nodePort); desktopMainWindow.Opened += StartCardanoServer; desktopMainWindow.Closing += WindowClosing; }
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); } }
public MainWindowViewModel(Window desktopMainWindow, SprdSettings sprdSettings) { _desktopMainWindow = desktopMainWindow; _sprdSettings = sprdSettings; _sprdSelection = new SprdSelection { Pool = new StakePool { Name = "<Select Pool>" }, Wallet = new Wallet { Name = "<Select Wallet>" }, }; SpreadAdaCommand = ReactiveCommand.Create(SpreadAda);//, this.WhenAnyValue(x => x.CanExecuteSprd)); BlockChainCache = new BlockChainCache { StakePools = new ObservableCollection <StakePool>() }; var stakePoolDbFileInfo = new FileInfo(_stakePoolListDatabase); if (stakePoolDbFileInfo.Exists) { var jsonCacheStakePools = File.ReadAllBytes(_stakePoolListDatabase); var readOnlySpan = new ReadOnlySpan <byte>(jsonCacheStakePools); BlockChainCache = JsonSerializer.Deserialize <BlockChainCache>(readOnlySpan); _allStakePools = BlockChainCache.StakePools; OnPropertyChanged("BlockChainCache"); } else { _allStakePools = new ObservableCollection <StakePool>(); } _allWallets = new ObservableCollection <Wallet>(); LastComittedAdaPools = new ObservableCollection <SprdPoolInfo>(); _cardanoServer = new CardanoServer(); _sprdServer = new SprdServer(); _walletClient = new WalletClient(_sprdSettings.WalletSettings.Port, _sprdServer); desktopMainWindow.Opened += StartCardanoServer; desktopMainWindow.Closing += WindowClosing; }