private async void logoutToolStripMenuItem_Click(object sender, EventArgs e) { using (var form = new LoggingOut(_controller)) { form.ShowDialog(); } }
private void LogoutButton_Click(object sender, EventArgs e) { try { LoggingOut.Invoke(); } catch (Exception exception) { showFailLogoutMessage(exception.Message); } updateFormButtonsWithLogout(); }
private void toolStripMenuItem2_Click(object sender, EventArgs e) { var result = MessageBox.Show( @"Are you sure you wish to logout of your account? You will require your recovery passphrase to log back in. Be sure you remember it before proceeding.", @"Confirm logout", MessageBoxButtons.YesNo); if (result != DialogResult.Yes) { return; } using (var form = new LoggingOut(_controller)) { form.ShowDialog(); } }
public SettingsViewModel( ITogglDataSource dataSource, ISyncManager syncManager, IPlatformInfo platformInfo, IUserPreferences userPreferences, IAnalyticsService analyticsService, IInteractorFactory interactorFactory, IOnboardingStorage onboardingStorage, INavigationService navigationService, IRxActionFactory rxActionFactory, IPermissionsChecker permissionsChecker, ISchedulerProvider schedulerProvider) : base(navigationService) { Ensure.Argument.IsNotNull(dataSource, nameof(dataSource)); Ensure.Argument.IsNotNull(syncManager, nameof(syncManager)); Ensure.Argument.IsNotNull(platformInfo, nameof(platformInfo)); Ensure.Argument.IsNotNull(userPreferences, nameof(userPreferences)); Ensure.Argument.IsNotNull(analyticsService, nameof(analyticsService)); Ensure.Argument.IsNotNull(onboardingStorage, nameof(onboardingStorage)); Ensure.Argument.IsNotNull(interactorFactory, nameof(interactorFactory)); Ensure.Argument.IsNotNull(rxActionFactory, nameof(rxActionFactory)); Ensure.Argument.IsNotNull(permissionsChecker, nameof(permissionsChecker)); Ensure.Argument.IsNotNull(schedulerProvider, nameof(schedulerProvider)); this.dataSource = dataSource; this.syncManager = syncManager; this.platformInfo = platformInfo; this.userPreferences = userPreferences; this.analyticsService = analyticsService; this.interactorFactory = interactorFactory; this.onboardingStorage = onboardingStorage; this.permissionsChecker = permissionsChecker; IsSynced = syncManager.ProgressObservable .SelectMany(checkSynced) .AsDriver(schedulerProvider); IsRunningSync = syncManager.ProgressObservable .Select(isRunningSync) .AsDriver(schedulerProvider); Name = dataSource.User.Current .Select(user => user.Fullname) .DistinctUntilChanged() .AsDriver(schedulerProvider); Email = dataSource.User.Current .Select(user => user.Email.ToString()) .DistinctUntilChanged() .AsDriver(schedulerProvider); IsManualModeEnabled = userPreferences.IsManualModeEnabledObservable .AsDriver(schedulerProvider); AreRunningTimerNotificationsEnabled = userPreferences.AreRunningTimerNotificationsEnabledObservable .AsDriver(schedulerProvider); AreStoppedTimerNotificationsEnabled = userPreferences.AreStoppedTimerNotificationsEnabledObservable .AsDriver(schedulerProvider); WorkspaceName = dataSource.User.Current .DistinctUntilChanged(user => user.DefaultWorkspaceId) .SelectMany(_ => interactorFactory.GetDefaultWorkspace() .TrackException <InvalidOperationException, IThreadSafeWorkspace>("SettingsViewModel.constructor") .Execute() ) .Select(workspace => workspace.Name) .AsDriver(schedulerProvider); BeginningOfWeek = dataSource.User.Current .Select(user => user.BeginningOfWeek) .DistinctUntilChanged() .Select(beginningOfWeek => beginningOfWeek.ToLocalizedString()) .AsDriver(schedulerProvider); DateFormat = dataSource.Preferences.Current .Select(preferences => preferences.DateFormat.Localized) .DistinctUntilChanged() .AsDriver(schedulerProvider); DurationFormat = dataSource.Preferences.Current .Select(preferences => preferences.DurationFormat.ToFormattedString()) .DistinctUntilChanged() .AsDriver(schedulerProvider); UseTwentyFourHourFormat = dataSource.Preferences.Current .Select(preferences => preferences.TimeOfDayFormat.IsTwentyFourHoursFormat) .DistinctUntilChanged() .AsDriver(schedulerProvider); IsGroupingTimeEntries = dataSource.Preferences.Current .Select(preferences => preferences.CollapseTimeEntries) .DistinctUntilChanged() .AsDriver(false, schedulerProvider); IsCalendarSmartRemindersVisible = calendarPermissionGranted.AsObservable() .CombineLatest(userPreferences.EnabledCalendars.Select(ids => ids.Any()), CommonFunctions.And); CalendarSmartReminders = userPreferences.CalendarNotificationsSettings() .Select(s => s.Title()) .DistinctUntilChanged(); LoggingOut = loggingOutSubject.AsObservable() .AsDriver(schedulerProvider); PresentableSyncStatus combineStatuses(bool synced, bool syncing, bool loggingOut) { if (loggingOut) { return(PresentableSyncStatus.LoggingOut); } return(syncing ? PresentableSyncStatus.Syncing : PresentableSyncStatus.Synced); } CurrentSyncStatus = Observable.CombineLatest( IsSynced, IsRunningSync, LoggingOut.SelectValue(true).StartWith(false), combineStatuses); dataSource.User.Current .Subscribe(user => currentUser = user) .DisposedBy(disposeBag); dataSource.Preferences.Current .Subscribe(preferences => currentPreferences = preferences) .DisposedBy(disposeBag); IsRunningSync .Subscribe(isSyncing => this.isSyncing = isSyncing) .DisposedBy(disposeBag); IsFeedbackSuccessViewShowing = isFeedbackSuccessViewShowing.AsObservable() .AsDriver(schedulerProvider); SwipeActionsEnabled = userPreferences.SwipeActionsEnabled .AsDriver(schedulerProvider); OpenCalendarSettings = rxActionFactory.FromAsync(openCalendarSettings); OpenCalendarSmartReminders = rxActionFactory.FromAsync(openCalendarSmartReminders); OpenNotificationSettings = rxActionFactory.FromAsync(openNotificationSettings); ToggleTwentyFourHourSettings = rxActionFactory.FromAsync(toggleUseTwentyFourHourClock); OpenHelpView = rxActionFactory.FromAsync(openHelpView); TryLogout = rxActionFactory.FromAsync(tryLogout); OpenAboutView = rxActionFactory.FromAsync(openAboutView); OpenSiriShortcuts = rxActionFactory.FromAsync(openSiriShorcuts); OpenSiriWorkflows = rxActionFactory.FromAsync(openSiriWorkflows); SubmitFeedback = rxActionFactory.FromAsync(submitFeedback); SelectDateFormat = rxActionFactory.FromAsync(selectDateFormat); PickDefaultWorkspace = rxActionFactory.FromAsync(pickDefaultWorkspace); SelectDurationFormat = rxActionFactory.FromAsync(selectDurationFormat); SelectBeginningOfWeek = rxActionFactory.FromAsync(selectBeginningOfWeek); ToggleTimeEntriesGrouping = rxActionFactory.FromAsync(toggleTimeEntriesGrouping); ToggleManualMode = rxActionFactory.FromAction(toggleManualMode); ToggleSwipeActions = rxActionFactory.FromAction(toggleSwipeActions); }