Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 4
0
        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;
        }