public LoginPresenter(ILoginView view, IServerCommunicator serverCommunicator, IMobileConfigurationReader mobileConfigurationReader, INavigationManager navigationManager, IFileSystem fileSystem, IVaultRepositoryFactory vaultRepositoryFactory, ISynchronizer synchronizer, IAlertDisplayer alertDisplayer, ISecureStringConverter secureStringConverter, IApplicationContext applicationContext) { this.View = view; this.MobileConfigurationReader = mobileConfigurationReader; this.NavigationManager = navigationManager; this.FileSystem = fileSystem; this.Synchronizer = synchronizer; this.VaultRepositoryFactory = vaultRepositoryFactory; this.AlertDisplayer = alertDisplayer; this.SecureStringConverter = secureStringConverter; this.ApplicationContext = applicationContext; var config = MobileConfigurationReader.GetConfiguration(); this.View.SyncButtonVisible = config.ApplicationMode == ApplicationMode.Client; var repository = VaultRepositoryFactory.CreateInstance(); var vaults = repository.GetAllVaultNames(); this.View.VaultNames = vaults; this.View.SelectedVaultName = vaults.FirstOrDefault(); this.View.Login += OnLogin; this.View.NavigateToConfiguration += OnNavigateToConfiguration; this.View.Sync += OnSync; this.Synchronizer.StatusUpdate += (message) => this.View.ActivityIndicatorText = message; this.View.Initialize += OnInitialize; }
public void OnInitialize() { var repository = VaultRepositoryFactory.CreateInstance(); var vaults = repository.GetAllVaultNames(); var config = MobileConfigurationReader.GetConfiguration(); if (vaults.Count() == 0 && config.ApplicationMode == ApplicationMode.Client && config.AlreadyInitialized) { OnSync(); } }
public ConfigurationPresenter(IConfigurationView view, IUrlValidator urlValidator, IMobileConfigurationReader configurationReader, IMobileConfigurationWriter configurationWriter, INavigationManager navigationManager, IAlertDisplayer alertDisplayer, ISynchronizationServiceManager synchronizationServiceManager) { this.View = view; this.UrlValidator = urlValidator; this.ConfigurationReader = configurationReader; this.ConfigurationWriter = configurationWriter; this.NavigationManager = navigationManager; this.AlertDisplayer = alertDisplayer; this.SynchronizationServiceManager = synchronizationServiceManager; this.View.ApplicationModes = Enum.GetValues(typeof(ApplicationMode)).Cast <ApplicationMode>(); var configuration = ConfigurationReader.GetConfiguration(); this.View.SelectedApplicationMode = configuration.ApplicationMode; this.View.ServerUrlInputEnabled = configuration.ApplicationMode == ApplicationMode.Client; this.View.ServerUrlInputText = configuration.ServerUrl ?? "https://"; this.View.Save += OnSave; this.View.ApplicationModeChange += OnSelectedApplicationModeChange; }
public async void OnSave() { bool goToLogin = !ConfigurationReader.GetConfiguration().AlreadyInitialized; var configuration = new MobileConfiguration(); configuration.ApplicationMode = this.View.SelectedApplicationMode; configuration.Language = "en"; //TODO make an option configuration.AlreadyInitialized = true; if (configuration.ApplicationMode == ApplicationMode.Client) { configuration.ServerUrl = this.View.ServerUrlInputText; bool isValid = this.UrlValidator.IsUrlValid(configuration.ServerUrl); if (!isValid) { this.AlertDisplayer.DisplayAlert(StringResources.InvalidUrl, StringResources.InvalidUrlMessage); return; } this.SynchronizationServiceManager.StartSynchronizationService(); } else { this.SynchronizationServiceManager.StopSynchronizationService(); } this.ConfigurationWriter.SaveConfiguration(configuration); if (goToLogin) { await this.NavigationManager.NavigateAsNewStack <ILoginPresenter>(); } else { await this.NavigationManager.PopCurrent(); } }