public async void Login(string code) { try { IsLoggingIn = true; var ret = await Task.Run(() => Client.GetAuthorizationCode(ClientId, ClientSecret, code)); var data = await Task.Run(() => { UsersModel u; var c = Client.BearerLogin(ret.AccessToken, out u); return(Tuple.Create(c, u)); }); var bitbucketClient = data.Item1; var usersModel = data.Item2; var account = _accountsService.Find(usersModel.User.Username); if (account == null) { account = new BitbucketAccount() { Username = usersModel.User.Username, AvatarUrl = usersModel.User.Avatar, RefreshToken = ret.RefreshToken, Token = ret.AccessToken }; _accountsService.Insert(account); } else { account.RefreshToken = ret.RefreshToken; account.Token = ret.AccessToken; account.AvatarUrl = usersModel.User.Avatar; _accountsService.Update(account); } this.GetApplication().ActivateUser(account, bitbucketClient); ShowViewModel <StartupViewModel>(); } catch (Exception e) { DisplayAlert("Unable to login: " + e.Message); } finally { IsLoggingIn = false; } }
private async Task Login() { try { IsLoggingIn = true; var ret = await Task.Run(() => Client.GetAuthorizationCode(ClientId, ClientSecret, Code)); var data = await Task.Run(() => { UsersModel u; var c = Client.BearerLogin(ret.AccessToken, out u); return(Tuple.Create(c, u)); }); var bitbucketClient = data.Item1; var usersModel = data.Item2; var account = _accountsService.Find(usersModel.User.Username); if (account == null) { account = new BitbucketAccount { Username = usersModel.User.Username, AvatarUrl = usersModel.User.Avatar, RefreshToken = ret.RefreshToken, Token = ret.AccessToken }; _accountsService.Insert(account); } else { account.RefreshToken = ret.RefreshToken; account.Token = ret.AccessToken; account.AvatarUrl = usersModel.User.Avatar; _accountsService.Update(account); } _applicationService.ActivateUser(account, bitbucketClient); } finally { IsLoggingIn = false; } }