public LoginViewModel( ILoginManager loginManager, IAnalyticsService analyticsService, IOnboardingStorage onboardingStorage, IMvxNavigationService navigationService, IPasswordManagerService passwordManagerService, IErrorHandlingService errorHandlingService) { Ensure.Argument.IsNotNull(loginManager, nameof(loginManager)); Ensure.Argument.IsNotNull(analyticsService, nameof(analyticsService)); Ensure.Argument.IsNotNull(onboardingStorage, nameof(onboardingStorage)); Ensure.Argument.IsNotNull(navigationService, nameof(navigationService)); Ensure.Argument.IsNotNull(passwordManagerService, nameof(passwordManagerService)); Ensure.Argument.IsNotNull(errorHandlingService, nameof(errorHandlingService)); this.loginManager = loginManager; this.analyticsService = analyticsService; this.onboardingStorage = onboardingStorage; this.navigationService = navigationService; this.passwordManagerService = passwordManagerService; this.errorHandlingService = errorHandlingService; SignupCommand = new MvxAsyncCommand(signup); GoogleLoginCommand = new MvxCommand(googleLogin); LoginCommand = new MvxCommand(login, () => LoginEnabled); ForgotPasswordCommand = new MvxAsyncCommand(forgotPassword); TogglePasswordVisibilityCommand = new MvxCommand(togglePasswordVisibility); StartPasswordManagerCommand = new MvxAsyncCommand(startPasswordManager, () => IsPasswordManagerAvailable); }
public ViewModel(IExrinContainer exrinContainer, IVisualState visualState, [CallerFilePath] string caller = nameof(ViewModel)) { if (exrinContainer == null) throw new ArgumentNullException(nameof(IExrinContainer)); _applicationInsights = exrinContainer.ApplicationInsights; _displayService = exrinContainer.DisplayService; _navigationService = exrinContainer.NavigationService; _errorHandlingService = exrinContainer.ErrorHandlingService; VisualState = visualState; if (VisualState != null) Task.Run(() => visualState.Init()) .ContinueWith((task) => { if (task.Exception != null) _applicationInsights.TrackException(task.Exception); }); Execution = new Execution() { HandleTimeout = TimeoutHandle, NotifyOfActivity = NotifyActivity, NotifyActivityFinished = NotifyActivityFinished, HandleResult = HandleResult }; }
public ViewModel(IExrinContainer exrinContainer, IVisualState visualState, [CallerFilePath] string caller = nameof(ViewModel)) { if (exrinContainer == null) { throw new ArgumentNullException(nameof(IExrinContainer)); } _applicationInsights = exrinContainer.ApplicationInsights; _displayService = exrinContainer.DisplayService; _navigationService = exrinContainer.NavigationService; _errorHandlingService = exrinContainer.ErrorHandlingService; VisualState = visualState; if (VisualState != null) { Task.Run(() => visualState.Init()) .ContinueWith((task) => { if (task.Exception != null) { _applicationInsights.TrackException(task.Exception); } }); } Execution = new Execution() { HandleTimeout = TimeoutHandle, NotifyOfActivity = NotifyActivity, NotifyActivityFinished = NotifyActivityFinished, HandleResult = HandleResult }; }
public SignupViewModel( IApiFactory apiFactory, ILoginManager loginManager, IAnalyticsService analyticsService, IOnboardingStorage onboardingStorage, IMvxNavigationService navigationService, IErrorHandlingService errorHandlingService) { Ensure.Argument.IsNotNull(apiFactory, nameof(apiFactory)); Ensure.Argument.IsNotNull(loginManager, nameof(loginManager)); Ensure.Argument.IsNotNull(analyticsService, nameof(analyticsService)); Ensure.Argument.IsNotNull(onboardingStorage, nameof(onboardingStorage)); Ensure.Argument.IsNotNull(navigationService, nameof(navigationService)); Ensure.Argument.IsNotNull(errorHandlingService, nameof(errorHandlingService)); this.apiFactory = apiFactory; this.loginManager = loginManager; this.analyticsService = analyticsService; this.onboardingStorage = onboardingStorage; this.navigationService = navigationService; this.errorHandlingService = errorHandlingService; LoginCommand = new MvxAsyncCommand(login); GoogleSignupCommand = new MvxCommand(googleSignup); PickCountryCommand = new MvxAsyncCommand(pickCountry); SignupCommand = new MvxAsyncCommand(signup, () => SignupEnabled); TogglePasswordVisibilityCommand = new MvxCommand(togglePasswordVisibility); }
public ExrinContainer(IApplicationInsights applicationInsights, IDisplayService displayService, IErrorHandlingService errorHandlingService, INavigationService navigationService) { ApplicationInsights = applicationInsights; DisplayService = displayService; ErrorHandlingService = errorHandlingService; NavigationService = navigationService; }
public BaseErrorHandlingServiceTests() { User = Substitute.For <IDatabaseUser>(); var token = Guid.NewGuid().ToString(); User.ApiToken.Returns(token); NavigationService = Substitute.For <IMvxNavigationService>(); AccessRestrictionStorage = Substitute.For <IAccessRestrictionStorage>(); ErrorHandlingService = new ErrorHandlingService(NavigationService, AccessRestrictionStorage); }
public Model(IDisplayService displayService, IApplicationInsights applicationInsights, IErrorHandlingService errorHandlingService, IModelState modelState) { _displayService = displayService; _errorHandlingService = errorHandlingService; _applicationInsights = applicationInsights; ModelState = modelState; Execution = new ModelExecution() { HandleTimeout = TimeoutHandle, HandleUnhandledException = HandleError }; }
public TogglDataSource( ITogglApi api, ITogglDatabase database, ITimeService timeService, IErrorHandlingService errorHandlingService, IBackgroundService backgroundService, Func <ITogglDataSource, ISyncManager> createSyncManager, TimeSpan minimumTimeInBackgroundForFullSync, INotificationService notificationService, IApplicationShortcutCreator shortcutCreator, IAnalyticsService analyticsService) { Ensure.Argument.IsNotNull(api, nameof(api)); Ensure.Argument.IsNotNull(database, nameof(database)); Ensure.Argument.IsNotNull(timeService, nameof(timeService)); Ensure.Argument.IsNotNull(notificationService, nameof(notificationService)); Ensure.Argument.IsNotNull(errorHandlingService, nameof(errorHandlingService)); Ensure.Argument.IsNotNull(backgroundService, nameof(backgroundService)); Ensure.Argument.IsNotNull(createSyncManager, nameof(createSyncManager)); Ensure.Argument.IsNotNull(shortcutCreator, nameof(shortcutCreator)); Ensure.Argument.IsNotNull(analyticsService, nameof(analyticsService)); this.database = database; this.timeService = timeService; this.shortcutCreator = shortcutCreator; this.backgroundService = backgroundService; this.notificationService = notificationService; this.errorHandlingService = errorHandlingService; this.minimumTimeInBackgroundForFullSync = minimumTimeInBackgroundForFullSync; User = new UserDataSource(database.User); Tags = new TagsDataSource(database.Tags); Tasks = new TasksDataSource(database.Tasks); Clients = new ClientsDataSource(database.Clients); Projects = new ProjectsDataSource(database.Projects); Workspaces = new WorkspacesDataSource(database.Workspaces); Preferences = new PreferencesDataSource(database.Preferences); WorkspaceFeatures = new WorkspaceFeaturesDataSource(database.WorkspaceFeatures); TimeEntries = new TimeEntriesDataSource(database.TimeEntries, timeService, analyticsService); this.createSyncManager = createSyncManager; CreateNewSyncManager(); ReportsProvider = new ReportsProvider(api, database); FeedbackApi = api.Feedback; isLoggedIn = true; }
public Model(IExrinContainer exrinContainer, IModelState modelState) { if (exrinContainer == null) throw new ArgumentNullException(nameof(IExrinContainer)); _displayService = exrinContainer.DisplayService; _errorHandlingService = exrinContainer.ErrorHandlingService; _applicationInsights = exrinContainer.ApplicationInsights; ModelState = modelState; Execution = new ModelExecution() { HandleTimeout = TimeoutHandle, HandleUnhandledException = HandleError }; }
public Model(IExrinContainer exrinContainer, IModelState modelState) { if (exrinContainer == null) { throw new ArgumentNullException(nameof(IExrinContainer)); } _displayService = exrinContainer.DisplayService; _errorHandlingService = exrinContainer.ErrorHandlingService; _applicationInsights = exrinContainer.ApplicationInsights; ModelState = modelState; Execution = new ModelExecution() { HandleTimeout = TimeoutHandle, HandleUnhandledException = HandleError }; }
public ViewModel(IDisplayService displayService, INavigationService navigationService, IErrorHandlingService errorHandlingService, IStackRunner stackRunner, IVisualState visualState) { _displayService = displayService; _navigationService = navigationService; _errorHandlingService = errorHandlingService; _stackRunner = stackRunner; VisualState = visualState; Execution = new Execution() { HandleTimeout = TimeoutHandle, NotifyOfActivity = NotifyActivity, NotifyActivityFinished = NotifyActivityFinished, HandleResult = HandleResult }; }
public TogglDataSource( ITogglApi api, ITogglDatabase database, ITimeService timeService, IErrorHandlingService errorHandlingService, IBackgroundService backgroundService, Func <ITogglDataSource, ISyncManager> createSyncManager, TimeSpan minimumTimeInBackgroundForFullSync, IApplicationShortcutCreator shortcutCreator) { Ensure.Argument.IsNotNull(api, nameof(api)); Ensure.Argument.IsNotNull(database, nameof(database)); Ensure.Argument.IsNotNull(timeService, nameof(timeService)); Ensure.Argument.IsNotNull(errorHandlingService, nameof(errorHandlingService)); Ensure.Argument.IsNotNull(backgroundService, nameof(backgroundService)); Ensure.Argument.IsNotNull(createSyncManager, nameof(createSyncManager)); Ensure.Argument.IsNotNull(shortcutCreator, nameof(shortcutCreator)); this.database = database; this.errorHandlingService = errorHandlingService; this.backgroundService = backgroundService; this.shortcutCreator = shortcutCreator; this.minimumTimeInBackgroundForFullSync = minimumTimeInBackgroundForFullSync; User = new UserDataSource(database.User, timeService); Tags = new TagsDataSource(database.IdProvider, database.Tags, timeService); Tasks = new TasksDataSource(database.Tasks); Clients = new ClientsDataSource(database.IdProvider, database.Clients, timeService); Preferences = new PreferencesDataSource(database.Preferences); Projects = new ProjectsDataSource(database.IdProvider, database.Projects, timeService); TimeEntries = new TimeEntriesDataSource(database.TimeEntries, timeService); Workspaces = new WorkspacesDataSource(database.Workspaces); WorkspaceFeatures = new WorkspaceFeaturesDataSource(database.WorkspaceFeatures); SyncManager = createSyncManager(this); ReportsProvider = new ReportsProvider(api, database); errorHandlingDisposable = SyncManager.ProgressObservable.Subscribe(onSyncError); isLoggedIn = true; }
public Builder WithErrorHandlingService(IErrorHandlingService errorHandlingService) { ErrorHandlingService = errorHandlingService; return(this); }
public SyncErrorHandlingService(IErrorHandlingService errorHandlingService) { Ensure.Argument.IsNotNull(errorHandlingService, nameof(errorHandlingService)); this.errorHandlingService = errorHandlingService; }
public LoginViewModel( ILoginManager loginManager, IAnalyticsService analyticsService, IOnboardingStorage onboardingStorage, IForkingNavigationService navigationService, IPasswordManagerService passwordManagerService, IErrorHandlingService errorHandlingService, ILastTimeUsageStorage lastTimeUsageStorage, ITimeService timeService, ISchedulerProvider schedulerProvider) { Ensure.Argument.IsNotNull(loginManager, nameof(loginManager)); Ensure.Argument.IsNotNull(analyticsService, nameof(analyticsService)); Ensure.Argument.IsNotNull(onboardingStorage, nameof(onboardingStorage)); Ensure.Argument.IsNotNull(navigationService, nameof(navigationService)); Ensure.Argument.IsNotNull(passwordManagerService, nameof(passwordManagerService)); Ensure.Argument.IsNotNull(errorHandlingService, nameof(errorHandlingService)); Ensure.Argument.IsNotNull(lastTimeUsageStorage, nameof(lastTimeUsageStorage)); Ensure.Argument.IsNotNull(timeService, nameof(timeService)); Ensure.Argument.IsNotNull(schedulerProvider, nameof(schedulerProvider)); this.timeService = timeService; this.loginManager = loginManager; this.analyticsService = analyticsService; this.onboardingStorage = onboardingStorage; this.navigationService = navigationService; this.errorHandlingService = errorHandlingService; this.lastTimeUsageStorage = lastTimeUsageStorage; this.passwordManagerService = passwordManagerService; this.schedulerProvider = schedulerProvider; var emailObservable = emailSubject.Select(email => email.TrimmedEnd()); Shake = shakeSubject.AsDriver(this.schedulerProvider); Email = emailObservable .Select(email => email.ToString()) .DistinctUntilChanged() .AsDriver(this.schedulerProvider); Password = passwordSubject .Select(password => password.ToString()) .DistinctUntilChanged() .AsDriver(this.schedulerProvider); IsLoading = isLoadingSubject .DistinctUntilChanged() .AsDriver(this.schedulerProvider); ErrorMessage = errorMessageSubject .DistinctUntilChanged() .AsDriver(this.schedulerProvider); IsPasswordMasked = isPasswordMaskedSubject .DistinctUntilChanged() .AsDriver(this.schedulerProvider); IsShowPasswordButtonVisible = Password .Select(password => password.Length > 1) .CombineLatest(isShowPasswordButtonVisibleSubject.AsObservable(), CommonFunctions.And) .DistinctUntilChanged() .AsDriver(this.schedulerProvider); HasError = ErrorMessage .Select(string.IsNullOrEmpty) .Select(CommonFunctions.Invert) .AsDriver(this.schedulerProvider); LoginEnabled = emailObservable .CombineLatest( passwordSubject.AsObservable(), IsLoading, (email, password, isLoading) => email.IsValid && password.IsValid && !isLoading) .DistinctUntilChanged() .AsDriver(this.schedulerProvider); IsPasswordManagerAvailable = passwordManagerService.IsAvailable; }
public SignupViewModel( IApiFactory apiFactory, IUserAccessManager userAccessManager, IAnalyticsService analyticsService, IOnboardingStorage onboardingStorage, IForkingNavigationService navigationService, IErrorHandlingService errorHandlingService, ILastTimeUsageStorage lastTimeUsageStorage, ITimeService timeService, ISchedulerProvider schedulerProvider, IRxActionFactory rxActionFactory, IPlatformInfo platformInfo) { Ensure.Argument.IsNotNull(apiFactory, nameof(apiFactory)); Ensure.Argument.IsNotNull(userAccessManager, nameof(userAccessManager)); Ensure.Argument.IsNotNull(analyticsService, nameof(analyticsService)); Ensure.Argument.IsNotNull(onboardingStorage, nameof(onboardingStorage)); Ensure.Argument.IsNotNull(navigationService, nameof(navigationService)); Ensure.Argument.IsNotNull(errorHandlingService, nameof(errorHandlingService)); Ensure.Argument.IsNotNull(lastTimeUsageStorage, nameof(lastTimeUsageStorage)); Ensure.Argument.IsNotNull(timeService, nameof(timeService)); Ensure.Argument.IsNotNull(schedulerProvider, nameof(schedulerProvider)); Ensure.Argument.IsNotNull(rxActionFactory, nameof(rxActionFactory)); Ensure.Argument.IsNotNull(platformInfo, nameof(platformInfo)); this.apiFactory = apiFactory; this.userAccessManager = userAccessManager; this.analyticsService = analyticsService; this.onboardingStorage = onboardingStorage; this.navigationService = navigationService; this.errorHandlingService = errorHandlingService; this.lastTimeUsageStorage = lastTimeUsageStorage; this.timeService = timeService; this.schedulerProvider = schedulerProvider; this.rxActionFactory = rxActionFactory; this.platformInfo = platformInfo; Login = rxActionFactory.FromAsync(login); Signup = rxActionFactory.FromAsync(signup); GoogleSignup = rxActionFactory.FromAsync(googleSignup); PickCountry = rxActionFactory.FromAsync(pickCountry); var emailObservable = emailSubject.Select(email => email.TrimmedEnd()); Shake = shakeSubject.AsDriver(this.schedulerProvider); Email = emailObservable .Select(email => email.ToString()) .DistinctUntilChanged() .AsDriver(this.schedulerProvider); Password = passwordSubject .Select(password => password.ToString()) .DistinctUntilChanged() .AsDriver(this.schedulerProvider); IsLoading = isLoadingSubject .DistinctUntilChanged() .AsDriver(this.schedulerProvider); IsCountryErrorVisible = isCountryErrorVisibleSubject .DistinctUntilChanged() .AsDriver(this.schedulerProvider); ErrorMessage = errorMessageSubject .DistinctUntilChanged() .AsDriver(this.schedulerProvider); CountryButtonTitle = countryNameSubject .DistinctUntilChanged() .AsDriver(this.schedulerProvider); IsPasswordMasked = isPasswordMaskedSubject .DistinctUntilChanged() .AsDriver(this.schedulerProvider); IsShowPasswordButtonVisible = Password .Select(password => password.Length > 1) .CombineLatest(isShowPasswordButtonVisibleSubject.AsObservable(), CommonFunctions.And) .DistinctUntilChanged() .AsDriver(this.schedulerProvider); HasError = ErrorMessage .Select(string.IsNullOrEmpty) .Select(CommonFunctions.Invert) .AsDriver(this.schedulerProvider); SignupEnabled = emailObservable .CombineLatest( passwordSubject.AsObservable(), IsLoading, countryNameSubject.AsObservable(), (email, password, isLoading, countryName) => email.IsValid && password.IsValid && !isLoading && (countryName != Resources.SelectCountry)) .DistinctUntilChanged() .AsDriver(this.schedulerProvider); SuccessfulSignup = successfulSignupSubject .AsDriver(this.schedulerProvider); }
public LoginViewModel( IUserAccessManager userAccessManager, IAnalyticsService analyticsService, IOnboardingStorage onboardingStorage, INavigationService navigationService, IErrorHandlingService errorHandlingService, ILastTimeUsageStorage lastTimeUsageStorage, ITimeService timeService, ISchedulerProvider schedulerProvider, IRxActionFactory rxActionFactory, IInteractorFactory interactorFactory) : base(navigationService) { Ensure.Argument.IsNotNull(userAccessManager, nameof(userAccessManager)); Ensure.Argument.IsNotNull(analyticsService, nameof(analyticsService)); Ensure.Argument.IsNotNull(onboardingStorage, nameof(onboardingStorage)); Ensure.Argument.IsNotNull(errorHandlingService, nameof(errorHandlingService)); Ensure.Argument.IsNotNull(lastTimeUsageStorage, nameof(lastTimeUsageStorage)); Ensure.Argument.IsNotNull(timeService, nameof(timeService)); Ensure.Argument.IsNotNull(schedulerProvider, nameof(schedulerProvider)); Ensure.Argument.IsNotNull(rxActionFactory, nameof(rxActionFactory)); Ensure.Argument.IsNotNull(interactorFactory, nameof(interactorFactory)); this.timeService = timeService; this.userAccessManager = userAccessManager; this.analyticsService = analyticsService; this.onboardingStorage = onboardingStorage; this.errorHandlingService = errorHandlingService; this.lastTimeUsageStorage = lastTimeUsageStorage; this.schedulerProvider = schedulerProvider; this.interactorFactory = interactorFactory; var emailObservable = emailSubject.Select(email => email.TrimmedEnd()); Signup = rxActionFactory.FromAsync(signup); ForgotPassword = rxActionFactory.FromAsync(forgotPassword); Shake = shakeSubject.AsDriver(this.schedulerProvider); Email = emailObservable .Select(email => email.ToString()) .DistinctUntilChanged() .AsDriver(this.schedulerProvider); Password = passwordSubject .Select(password => password.ToString()) .DistinctUntilChanged() .AsDriver(this.schedulerProvider); IsLoading = isLoadingSubject .DistinctUntilChanged() .AsDriver(this.schedulerProvider); ErrorMessage = errorMessageSubject .DistinctUntilChanged() .AsDriver(this.schedulerProvider); IsPasswordMasked = isPasswordMaskedSubject .DistinctUntilChanged() .AsDriver(this.schedulerProvider); IsShowPasswordButtonVisible = Password .Select(password => password.Length > 1) .CombineLatest(isShowPasswordButtonVisibleSubject.AsObservable(), CommonFunctions.And) .DistinctUntilChanged() .AsDriver(this.schedulerProvider); HasError = ErrorMessage .Select(string.IsNullOrEmpty) .Select(CommonFunctions.Invert) .AsDriver(this.schedulerProvider); LoginEnabled = emailObservable .CombineLatest( passwordSubject.AsObservable(), IsLoading, (email, password, isLoading) => email.IsValid && password.IsValid && !isLoading) .DistinctUntilChanged() .AsDriver(this.schedulerProvider); }