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 SubHeaderViewModel(SettingsWrapper settingsWrapper, StatsService statsService) { _settingsWrapper = settingsWrapper; PathClickCommand = new RelayCommand(PathClicked); _region = _settingsWrapper.CurrentSettings.Region; _settingsWrapper.SettingChanged(nameof(SettingsJson.InstallDirectory)).Subscribe(s => { InitPath(); }); statsService.StatsStatusChanged.Skip(1).Subscribe(status => { SetStatusChip(status); if (status == StatsStatus.Fetching) { EnableUi = false; ShowProgress = Visibility.Visible; ShowIcon = Visibility.Collapsed; } else { EnableUi = true; ShowProgress = Visibility.Collapsed; ShowIcon = Visibility.Visible; } }); // TODO: Should be called in line 43 initially. It's not. rip. InitPath(); }