Exemplo n.º 1
0
        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;
        }
Exemplo n.º 2
0
        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;
        }