private async Task RefreshAsync() { await Task.Run(() => { Application.Current.Dispatcher.Invoke(() => _settings.UpdateServers()); var currentServer = VM_ShokoServer.Instance.ShokoPlex.CurrentDevice(VM_ShokoServer.Instance.CurrentUser.JMMUserID); if (currentServer == null) { return; } Application.Current.Dispatcher.Invoke(() => { for (var i = 0; i < _settings.PlexDevices.Count; i++) { if (_settings.PlexDevices[i].ClientIdentifier == currentServer.ClientIdentifier) { cbServer.SelectedIndex = i; } } lstPlexIDs.SelectedItems.Clear(); foreach (var itm in lstPlexIDs.Items) { if (VM_ShokoServer.Instance.Plex_Sections.Contains(((Directory)itm).Key)) { lstPlexIDs.SelectedItems.Add(itm); } } }); }); }
public PlexSettings() { InitializeComponent(); cbServer.SelectionChanged += (sender, args) => { VM_ShokoServer.Instance.ShokoPlex.UseDevice(VM_ShokoServer.Instance.CurrentUser.JMMUserID, cbServer.SelectedItem as MediaDevice); _settings.UpdateDirectories(); }; lstPlexIDs.SelectionChanged += (sender, args) => { VM_ShokoServer.Instance.ShokoPlex.UseDirectories(VM_ShokoServer.Instance.CurrentUser.JMMUserID, lstPlexIDs.SelectedItems.Cast <Directory>().ToList()); }; this.DataContext = _settings = new VM_PlexSettings(); worker = new BackgroundWorker(); worker.DoWork += (o, e) => { do { Thread.Sleep(TimeSpan.FromSeconds(10)); } while (VM_ShokoServer.Instance.CurrentUser == null); Application.Current.Dispatcher.Invoke(() => _settings.UpdateServers()); var currentServer = VM_ShokoServer.Instance.ShokoPlex.CurrentDevice(VM_ShokoServer.Instance.CurrentUser.JMMUserID); if (currentServer == null) { return; } Application.Current.Dispatcher.Invoke(() => { for (var i = 0; i < _settings.PlexDevices.Count; i++) { if (_settings.PlexDevices[i].ClientIdentifier == currentServer.ClientIdentifier) { cbServer.SelectedIndex = i; } } lstPlexIDs.SelectedItems.Clear(); foreach (var itm in lstPlexIDs.Items) { if (VM_ShokoServer.Instance.Plex_Sections.Contains(((Directory)itm).Key)) { lstPlexIDs.SelectedItems.Add(itm); } } }); }; worker.RunWorkerAsync(); }