private async void Window_Loaded(object sender, RoutedEventArgs e) { async Task <IClient> CreateClient() { var exists = File.Exists(SettingsPath); var settingsFile = exists ? Some(SettingsPath) : None <string>(); var storage = new SqliteStorage($"{nameof(Chatter)}.db"); var dispatcher = new SynchronizationDispatcher(TaskScheduler.FromCurrentSynchronizationContext(), Application.Current.Dispatcher); var result = await TryAsync(() => LinkFactory.CreateClientAsync(dispatcher, storage, settingsFile)).NoticeOnErrorAsync(); var client = result.UnwrapOrDefault(); if (exists == false && client != null) { client.Profile.Name = $"{Environment.UserName}@{Environment.MachineName}"; } if (result.IsError()) { Application.Current.Shutdown(); } return(client); } this.IsEnabled = false; using var _0 = Disposable.Create(() => this.IsEnabled = true); this.client = App.CurrentClient ?? await CreateClient(); this.DataContext = this.client?.Profile; }
private async void Window_Opened(object sender, EventArgs e) { this.AddHandler(Button.ClickEvent, Button_Click); async Task <IClient> CreateClient() { var exists = File.Exists(SettingsPath); var settingsFile = exists ? Some(SettingsPath) : None <string>(); var storage = new SqliteStorage($"{nameof(Chatter)}.db"); var dispatcher = new SynchronizationDispatcher(Dispatcher.UIThread); var result = await TryAsync(() => LinkFactory.CreateClientAsync(dispatcher, storage, settingsFile)).NoticeOnErrorAsync(); var client = result.UnwrapOrDefault(); if (exists == false && client != null) { client.Profile.Name = $"{Environment.UserName}@{Environment.MachineName}"; } if (result.IsError()) { this.Close(); } return(client); } this.IsEnabled = false; using var _0 = Disposable.Create(() => this.IsEnabled = true); client = App.CurrentClient ?? await CreateClient(); DataContext = client?.Profile; }