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

            if (!accounts.Any())
            {
                GoToNewAccount.Execute(null);
                return;
            }

            var account = await _accountsService.GetActiveAccount();

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

            var isEnterprise = account.IsEnterprise || !string.IsNullOrEmpty(account.Password);

            //Lets login!
            try
            {
                ImageUrl    = null;
                Status      = null;
                IsLoggingIn = true;

                Uri accountAvatarUri = null;
                Uri.TryCreate(account.AvatarUrl, UriKind.Absolute, out accountAvatarUri);
                ImageUrl = accountAvatarUri;
                Status   = "Logging in as " + account.Username;

                var client = await _loginFactory.LoginAccount(account);

                _applicationService.ActivateUser(account, client);

                if (!isEnterprise)
                {
                    StarOrWatch();
                }

                GoToMenu.Execute(typeof(MenuViewModel));
            }
            catch (GitHubSharp.UnauthorizedException e)
            {
                DisplayAlertAsync("The credentials for the selected account are incorrect. " + e.Message)
                .ToObservable()
                .BindCommand(GoToAccounts);
            }
            catch (Exception e)
            {
                DisplayAlert(e.Message);
                GoToAccounts.Execute(null);
            }
            finally
            {
                IsLoggingIn = false;
            }
        }
Exemplo n.º 2
0
        protected async Task Startup()
        {
            if (!_applicationService.Accounts.Any())
            {
                GoToNewAccount.Execute(null);
                return;
            }

            var accounts = GetService <IAccountsService>();
            var account  = accounts.GetDefault();

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

            var isEnterprise = account.IsEnterprise || !string.IsNullOrEmpty(account.Password);

            if (account.DontRemember)
            {
                GoToAccounts.Execute(null);
                return;
            }

            //Lets login!
            try
            {
                ImageUrl    = null;
                Status      = null;
                IsLoggingIn = true;

                Uri accountAvatarUri = null;
                Uri.TryCreate(account.AvatarUrl, UriKind.Absolute, out accountAvatarUri);
                ImageUrl = accountAvatarUri;
                Status   = "Logging in as " + account.Username;

                var client = await _loginFactory.LoginAccount(account);

                _applicationService.ActivateUser(account, client);

                if (!isEnterprise)
                {
                    StarOrWatch();
                }

                GoToMenu.Execute(typeof(MenuViewModel));
            }
            catch (GitHubSharp.UnauthorizedException e)
            {
                DisplayAlert("The credentials for the selected account are incorrect. " + e.Message);

                if (isEnterprise)
                {
                    GoToUrlCommand.Execute(new AddAccountViewModel.NavObject {
                        AttemptedAccountId = account.Id
                    });
                }
                else
                {
                    GoToUrlCommand.Execute(LoginViewModel.NavObject.CreateDontRemember(account));
                }

                StarOrWatch();
            }
            catch (Exception e)
            {
                DisplayAlert(e.Message);
                GoToAccounts.Execute(null);
            }
            finally
            {
                IsLoggingIn = false;
            }
        }