public StatsService(ILogger logger, SettingsWrapper settingsWrapper, WatcherService watcherService, ApiService apiService, SocketIoService socketIoService) { _logger = logger; _apiService = apiService; _settingsWrapper = settingsWrapper; _socketIoService = socketIoService; _statsStatusChangedSubject = new BehaviorSubject <StatsStatus>(StatsStatus.Waiting); _statsSubject = new BehaviorSubject <List <DisplayPlayerStats> >(null); watcherService.MatchFound.Where(path => path != null) .Subscribe(path => { Task.Run(async() => { await StatsFound(path); }); }); socketIoService.Hub.OnPlayersRequested.SelectMany(_statsSubject).Subscribe(players => { try { socketIoService.Hub.SendColorKeys(players.Select(p => p.GetColorKeys()).ToList()); socketIoService.Hub.SendPlayers(players.Select(p => p.ToMobile()).ToList()); } catch (Exception e) { _logger.Error("Error trying to convert stats to mobile version", e); } }); }
public SettingsWrapper(ILogger logger, SocketIoService socketIoService) { _logger = logger; _socketIoService = socketIoService; Init(); socketIoService.Hub.OnSettingsRequested.Subscribe(_ => { SettingsRequested(); }); _saveQueueSubject = new Subject <object>(); _saveQueueSubject.Throttle(TimeSpan.FromSeconds(10)).Subscribe(async _ => { await InternalSaveAsync(); }); SettingChangedSubject = new Subject <ChangedSetting>(); SettingChangedSubject.Where(setting => setting?.Key != null && setting.HasChanged) .Do(setting => _logger.Info($"Setting ({setting.Key}) changed from '{setting.OldValue}' to '{setting.NewValue}'")) .Throttle(TimeSpan.FromSeconds(2)) .Subscribe(key => Save()); _uiSettingsChangedSubject = new Subject <ChangedSetting>(); var uiSettingsChangedInternal = SettingChanged("UISetting") .Throttle(TimeSpan.FromMilliseconds(500)); uiSettingsChangedInternal.Subscribe(changedSetting => { SetBrushes(); SettingsRequested(); _uiSettingsChangedSubject.OnNext(changedSetting); }); SetBrushes(); }
public HeaderViewModel(ILogger logger, SocketIoService socketIoService, StatsService statsService, SettingsWrapper settingsWrapper) { _logger = logger; _settingsWrapper = settingsWrapper; OpenWebsiteCommand = new RelayCommand(LogoClick); SettingsCommand = new RelayCommand(SettingsClick); QrCodeClickCommand = new RelayCommand(QrCodeClick); ExportStatsCommand = new RelayCommand(async _ => await ExportStatsAsync()); EnableReplayCommand = new RelayCommand(EnableReplays); SwitchThemeCommand = new RelayCommand(SwitchTheme); socketIoService.StateChanged.Subscribe(state => { ConnectionState = state.ToString(); }); statsService.StatsStatusChanged.Subscribe(status => { CanExport = status == StatsStatus.Fetched; }); _settingsWrapper.SettingChanged(nameof(SettingsJson.InstallDirectory)).Subscribe(s => { var path = Path.Combine(_settingsWrapper.CurrentSettings.InstallDirectory, "preferences.xml"); CanEnableReplays = File.Exists(path); }); if (_settingsWrapper.CurrentSettings.DarkMode) { SwitchTheme(); } }
public QrCodeViewModel(SocketIoService socketIoService, SettingsWrapper settingsWrapper) { // uiScheduler = TaskScheduler.FromCurrentSynchronizationContext(); GenerateCommand = new RelayCommand(() => Generate()); _socketIoService = socketIoService; if (string.IsNullOrEmpty(settingsWrapper.CurrentSettings.Token)) { settingsWrapper.CurrentSettings.Token = Guid.NewGuid().ToString(); } Generate(settingsWrapper.CurrentSettings.Token); }
protected override void OnStartup(StartupEventArgs e) { #if DEBUG IsDebug = true; #endif IoCKernel.Init(); ConfigureMainWindow(); Current.MainWindow.Show(); CheckForUpdate(IoCKernel.Get <SettingsWrapper>()); _socketIoService = IoCKernel.Get <SocketIoService>(); //_socketIoService.Connect(); base.OnStartup(e); }
public StatsViewModel(ILogger logger, StatsService statsService, SettingsWrapper settingsWrapper, SocketIoService socketIoService) { _settingsWrapper = settingsWrapper; DetailCommand = new RelayCommand(param => OpenPlayerDetail((string[])param)); statsService.Stats.Subscribe(async stats => { await Task.Run(() => { _stats = stats; FriendlyPlayers = new ObservableCollection <DisplayPlayerStats>(stats.Where(p => p.Player.Relation != 2)); EnemyPlayers = new ObservableCollection <DisplayPlayerStats>(stats.Where(p => p.Player.Relation == 2)); AvgXpFriendly = TeamAvgXp(FriendlyPlayers); AvgXpEnemy = TeamAvgXp(EnemyPlayers); AvgWinrateFriendly = TeamAvgWinRate(FriendlyPlayers); AvgWinrateEnemy = TeamAvgWinRate(EnemyPlayers); AvgBattlesFriendly = TeamAvgBattles(FriendlyPlayers); AvgBattlesEnemy = TeamAvgBattles(EnemyPlayers); ListVisibility = Visibility.Visible; }); }); _settingsWrapper.UiSettingsChanged.Subscribe(async key => { if (_stats == null) { return; } logger.Info("Re-computing UI for players"); FontSize = _settingsWrapper.CurrentSettings.FontSize; foreach (var player in _stats) { await Task.Run(() => { player.ComputeUi(); }); } socketIoService.Hub.SendColorKeys(_stats.Select(s => s.GetColorKeys()).ToList()); }); }
public QrCodeWindow(SocketIoService socketIoService) { _socketIoService = socketIoService; InitializeComponent(); }