Ejemplo n.º 1
0
        protected async Task Startup()
        {
            var accounts = (await _accountsService.GetAccounts()).ToList();

            if (!accounts.Any())
            {
                GoToLoginCommand.ExecuteNow();
                return;
            }

            var account = await _applicationService.GetDefaultAccount();

            if (account == null)
            {
                GoToAccountsCommand.ExecuteNow();
                return;
            }

            if (string.IsNullOrEmpty(account.Token) || string.IsNullOrEmpty(account.RefreshToken))
            {
                GoToLoginCommand.ExecuteNow();
                return;
            }

            try
            {
                IsLoggingIn = true;
                Status      = "Logging in as " + account.Username;

                var ret = await BitbucketClient.GetRefreshToken(
                    Secrets.ClientId, Secrets.ClientSecret, account.RefreshToken);

                if (ret == null)
                {
                    await _alertDialogService.Alert("Error!", "Unable to refresh OAuth token. Please login again.");

                    GoToLoginCommand.ExecuteNow();
                    return;
                }

                account.RefreshToken = ret.RefreshToken;
                account.Token        = ret.AccessToken;
                await _accountsService.Save(account);
                await AttemptLogin(account);

                GoToMenuCommand.ExecuteNow();
            }
            catch (Exception e)
            {
                _alertDialogService
                .Alert("Error!", "Unable to login successfully: " + e.Message)
                .ToObservable()
                .BindCommand(GoToAccountsCommand);
            }
            finally
            {
                IsLoggingIn = false;
            }
        }
Ejemplo n.º 2
0
        protected async Task Startup()
        {
            if (!_applicationService.Accounts.Any())
            {
                GoToLoginCommand.Execute(null);
                return;
            }

            var account = GetDefaultAccount();

            if (account == null)
            {
                GoToAccountsCommand.Execute(null);
                return;
            }

            if (string.IsNullOrEmpty(account.Token) || string.IsNullOrEmpty(account.RefreshToken))
            {
                await AlertService.Alert("Welcome!", "CodeBucket is now OAuth compliant!\n\nFor your security, " +
                                         "you will now be prompted to login to Bitbucket via their OAuth portal. This will swap out your credentials" +
                                         " for an OAuth token you may revoke at any time!");

                GoToLoginCommand.Execute(null);
                return;
            }

            try
            {
                IsLoggingIn = true;
                Status      = "Logging in as " + account.Username;

                var ret = await Task.Run(() => Client.RefreshToken(LoginViewModel.ClientId, LoginViewModel.ClientSecret, account.RefreshToken));

                if (ret == null)
                {
                    await DisplayAlert("Unable to refresh OAuth token. Please login again.");

                    GoToLoginCommand.Execute(null);
                    return;
                }

                account.RefreshToken = ret.RefreshToken;
                account.Token        = ret.AccessToken;
                _accountsService.Update(account);

                await AttemptLogin(account);

                GoToMenuCommand.Execute(null);
            }
            catch (Exception e)
            {
                DisplayAlert("Unable to login successfully: " + e.Message).FireAndForget();
                GoToAccountsCommand.Execute(null);
            }
            finally
            {
                IsLoggingIn = false;
            }
        }
Ejemplo n.º 3
0
 public MainViewModel()
 {
     userIdentityRepository = new UserIdentityRepository();
     userProfileRepository = new UserProfileRepository();
     userService = new UserService();
     GoToLoginCmd = new GoToLoginCommand(this);
     GoToRegisterCmd = new GoToRegisterCommand(this);
 }