public SettingWindow(SettingViewModel viewModel)
 {
     InitializeComponent();
     MouseLeftButtonUp       += (a, e) => Keyboard.ClearFocus();
     ThemeButton.Click       += (a, e) => Messanger.ThemeWrite();
     TwitterAuthButton.Click += (a, e) => AuthWindow.ShowDialog();
     PostData.Click          += async(a, e) =>
     {
         if (File.Exists(Messanger.FILEPATH))
         {
             var json = File.ReadAllBytes(Messanger.FILEPATH);
             var data = MessagePackSerializer.Deserialize <MainWindowViewModel>(json);
             var mp   = MessagePackSerializer.Serialize(data);
             await Messanger.PostDataAsync(mp);
         }
     };
     this.Closing    += (a, e) => AuthWindow.Close();
     this.DataContext = viewModel;
     buffer           = new SettingViewModel()
     {
         GitHubName = viewModel.GitHubName, UserName = viewModel.UserName
     };
 }
Exemple #2
0
        private async Task SetAuthAsync()
        {
            this.Label.Content    = "認証中...";
            CodeTextBox.IsEnabled = false;
            bool isSuc = false;

            try
            {
                var tokens = await Session?.GetTokensAsync(CodeTextBox.Text);

                var authToken = await ConnectAzureAsync(tokens);

                Messanger.HttpClient.DefaultRequestHeaders.Clear();
                Messanger.HttpClient.DefaultRequestHeaders.Add("X-ZUMO-AUTH", authToken);

                var(model, IsSuccess) = await Messanger.GetDataAsync();

                isSuc = IsSuccess;
                if (IsSuccess && model != null)
                {
                    MainWindow.MainViewModel.UpdateViewModel(model);
                    Messanger.Wrote += async bytes => await Messanger.PostDataAsync(bytes);

                    using (var fs = new FileStream(Messanger.KEY_FILEPATH, FileMode.Create, FileAccess.Write))
                    {
                        await MessagePackSerializer.SerializeAsync(fs, authToken);
                    }
                }
                else if (IsSuccess)
                {
                    var m = MessagePackSerializer.Serialize(MainWindow.MainViewModel);
                    await Messanger.PostDataAsync(m);

                    using (var fs = new FileStream(Messanger.KEY_FILEPATH, FileMode.Create, FileAccess.Write))
                    {
                        await MessagePackSerializer.SerializeAsync(fs, authToken);
                    }
                }
                else
                {
                    Messanger.HttpClient.DefaultRequestHeaders.Clear();
                }
            }
            catch
            {
                this.Label.Content    = "認証失敗";
                CodeTextBox.IsEnabled = true;
                return;
            }
            CodeTextBox.IsEnabled = true;
            if (isSuc)
            {
                this.Label.Content = "認証成功";
                MainWindow.SettingWindow.TwitterAuthButton.IsEnabled = false;
                MainWindow.SettingWindow.TwitterAuthButton.Content   = "認証済み";
            }
            else
            {
                this.Label.Content = "認証失敗";
            }
            await Task.Delay(1500);

            this.Label.Content = "Webブラウザでログイン後、表示されるコードを入力して下さい。";
            this.Hide();
        }