public FeedbackFlyoutVM() { RefreshCommand = new RelayCommand(() => { this.IsBusy = true; var tasks = FeedbackThreadList.Where(t => !t.FeedbackThread.IsNewThread) .Select(t => FeedbackManager.Current.RefreshFeedbackThreadVMAsync(SelectedFeedbackThread)); Task.WaitAll(tasks.ToArray(), 20); this.IsBusy = false; }); AddThreadCommand = new RelayCommand(() => { var threadVM = new FeedbackThreadVM(); this.FeedbackThreadList.Add(threadVM); FeedbackManager.Current.AddFeedbackThread(threadVM); this.SelectedFeedbackThread = threadVM; }); CloseThreadCommand = new RelayCommand(async() => { var msg = this.SelectedFeedbackThread.IsNewThread ? LocalizedStrings.LocalizedResources.CloseNewThreadQuestion : LocalizedStrings.LocalizedResources.CloseActiveThreadQuestion; var dialog = new MessageDialog(msg); dialog.Commands.Add(new UICommand() { Id = true, Label = LocalizedStrings.LocalizedResources.Yes }); dialog.Commands.Add(new UICommand() { Id = false, Label = LocalizedStrings.LocalizedResources.No }); var result = await dialog.ShowAsync(); FeedbackFlyoutVM.ShowFlyout(); if ((bool)result.Id) { if (this.SelectedFeedbackThread.IsNewThread) { FeedbackManager.Current.SaveFeedbackThreadTokens(); } this.FeedbackThreadList.Remove(this.SelectedFeedbackThread); if (!this.FeedbackThreadList.Any()) { this.FeedbackThreadList.Add(new FeedbackThreadVM()); } this.SelectedFeedbackThread = this.FeedbackThreadList.First(); } }); }
internal async Task<FeedbackThreadVM> TryRestoreFeedbackThread() { try { await this.LoadFeedbackThreadsAsync(); var threadVM = this.OpenFeedbackThreadVMs.FirstOrDefault(); this.CurrentFeedbackThreadVM = threadVM; return this.CurrentFeedbackThreadVM; } catch (Exception ex) { HockeyClient.Current.AsInternal().HandleInternalUnhandledException(ex); return null; } }
public FeedbackFlyoutVM() { RefreshCommand = new RelayCommand(() => { this.IsBusy = true; var tasks = FeedbackThreadList.Where(t => !t.FeedbackThread.IsNewThread) .Select(t => FeedbackManager.Current.RefreshFeedbackThreadVMAsync(SelectedFeedbackThread)); Task.WaitAll(tasks.ToArray(),20); this.IsBusy = false; }); AddThreadCommand = new RelayCommand(() => { var threadVM = new FeedbackThreadVM(); this.FeedbackThreadList.Add(threadVM); FeedbackManager.Current.AddFeedbackThread(threadVM); this.SelectedFeedbackThread = threadVM; }); CloseThreadCommand = new RelayCommand(async () => { var msg = this.SelectedFeedbackThread.IsNewThread ? LocalizedStrings.LocalizedResources.CloseNewThreadQuestion : LocalizedStrings.LocalizedResources.CloseActiveThreadQuestion; var dialog = new MessageDialog(msg); dialog.Commands.Add(new UICommand() { Id = true, Label = LocalizedStrings.LocalizedResources.Yes }); dialog.Commands.Add(new UICommand() { Id = false, Label = LocalizedStrings.LocalizedResources.No }); var result = await dialog.ShowAsync(); FeedbackFlyoutVM.ShowFlyout(); if ((bool)result.Id) { if (this.SelectedFeedbackThread.IsNewThread) { FeedbackManager.Current.SaveFeedbackThreadTokens(); } this.FeedbackThreadList.Remove(this.SelectedFeedbackThread); if (!this.FeedbackThreadList.Any()) { this.FeedbackThreadList.Add(new FeedbackThreadVM()); } this.SelectedFeedbackThread = this.FeedbackThreadList.First(); } }); }
internal async Task InitializeIfNeededAsync() { if (!_initialized) { this.IsBusy = true; if (NetworkInterface.GetIsNetworkAvailable()) { var threads = (await FeedbackManager.Current.LoadFeedbackThreadsAsync()).ToList(); this.FeedbackThreadList.Clear(); foreach (var thread in threads.ToList()) { this.FeedbackThreadList.Add(thread); } this.SelectedFeedbackThread = this.FeedbackThreadList.First(); _initialized = true; } if (!_initialized) { await new MessageDialog(LocalizedStrings.LocalizedResources.FeedbackNoInternet).ShowAsync(); } this.IsBusy = false; } }
internal async Task RefreshFeedbackThreadVMAsync(FeedbackThreadVM threadVM) { if (!threadVM.FeedbackThread.IsNewThread) { threadVM.FeedbackThread = (await HockeyClient.Current.AsInternal().OpenFeedbackThreadAsync(threadVM.FeedbackThread.Token)) ?? FeedbackThread.CreateInstance(); } }
internal void AddFeedbackThread(FeedbackThreadVM fbThreadVM) { this._openthreadVMs.Add(fbThreadVM); }