private async Task <UserInfo> UserToUserInfo(User user) { var userInfo = new UserInfo { Email = user.Email, Name = user.FirstName + " " + user.LastName, Selected = false }; var friendResult = await FriendshipsApi.GetFriendship(_settings.Jwt, user.Email); if (friendResult.IsSuccessful && friendResult.Content != null) { userInfo.FriendStatus = friendResult.Content.IsConfirmed ? FriendStatus.IsConfirmed : FriendStatus.IsNotConfirmed; } else { userInfo.FriendStatus = FriendStatus.NotFriend; } userInfo.ProfilePhoto = (await ImagesApi.GetProfileImage(userInfo.Email, true)).Content; userInfo.IsSelectable = _context.MultiSelection && userInfo.FriendStatus == FriendStatus.IsConfirmed; return(userInfo); }
private async Task SetFriendshipStatus() { var friendResult = await FriendshipsApi.GetFriendship(_settings.Jwt, _email); if (friendResult.IsSuccessful) // Server OK { if (friendResult.Content == null) // Friendship DNE { _userContext.FriendLabel = ""; _userContext.ButtonStatus = UserPageFriendButtonStatus.AddAsFriend; ButtonAddAsFriend.Text = "Add as Friend"; } else // Friendship Exists { _userContext.FriendshipId = friendResult.Content.Id; if (!friendResult.Content.IsConfirmed) { if (_email == friendResult.Content.RequesterEmail) // If User is looking at requester's page { _userContext.FriendLabel = $"{_userContext.User.FirstName} wants to be Friends"; _userContext.ButtonStatus = UserPageFriendButtonStatus.RespondToFriendshipRequest; ButtonAddAsFriend.Text = "Respond"; } else // If User is looking at page AS requester { _userContext.FriendLabel = "Awaiting Friend Request"; _userContext.ButtonStatus = UserPageFriendButtonStatus.CancelFriendshipRequest; ButtonAddAsFriend.Text = "Cancel Friend Request"; } } else { _userContext.FriendLabel = $"{_userContext.User.FirstName} is your friend"; _userContext.ButtonStatus = UserPageFriendButtonStatus.RemoveFriend; ButtonAddAsFriend.Text = "Remove Friend"; ButtonAddAsFriend.TextColor = Color.DarkRed; } } } else // Server ERROR { LayoutAddAsFriend.IsVisible = false; } }
/// <summary> /// Loads the User's friends into the list. /// The default functionality of the page - other Users are /// only displayed when the search bar is used /// </summary> private async Task LoadFriends() { LayoutLoading.IsVisible = true; LayoutSearch.IsEnabled = false; ViewUsers.IsEnabled = false; // Get the User currently running the app var appUser = (await AccountsApi.GetUserByJwt(_settings.Jwt)).Content; // Retrieve the current User's friendships from the Friendships microservice var friendshipsResult = await FriendshipsApi.GetUserFriends(_settings.Jwt); if (friendshipsResult.IsSuccessful) { var friends = new List <UserInfo>(); // Cycle through each friend foreach (var friendship in friendshipsResult.Content) { // Retrieve the friend's Email. It is the email associated with the friendship that isn't the User's var friendEmail = friendship.ConfirmerEmail == appUser.Email ? friendship.RequesterEmail : friendship.ConfirmerEmail; // Retrieve the friends User data from the Accounts microservice var friendUser = (await AccountsApi.GetUserByEmail(_settings.Jwt, friendEmail)).Content; var userInfo = await UserToUserInfo(friendUser); if (_context.SelectedFriendEmails.Contains(userInfo.Email)) { userInfo.Selected = true; } // Finally, convert the friendUser to a UserInfo, and add to the context list friends.Add(userInfo); } _context.ClearAndSetUsersInfo(friends); } LayoutLoading.IsVisible = false; LayoutSearch.IsEnabled = true; ViewUsers.IsEnabled = true; }
async void OnAddAsFriendPressed(object sender, EventArgs args) { if (_userContext.ButtonStatus == UserPageFriendButtonStatus.AddAsFriend) { await FriendshipsApi.CreateFriendship(_settings.Jwt, _email); } else if (_userContext.ButtonStatus == UserPageFriendButtonStatus.CancelFriendshipRequest) { await FriendshipsApi.RemoveFriendship(_settings.Jwt, _userContext.FriendshipId.Value); } else if (_userContext.ButtonStatus == UserPageFriendButtonStatus.RemoveFriend) { var choice = await DisplayActionSheet("Remove Friend?", "Cancel", "Confirm"); if (choice == "Confirm") { await FriendshipsApi.RemoveFriendship(_settings.Jwt, _userContext.FriendshipId.Value); } } else if (_userContext.ButtonStatus == UserPageFriendButtonStatus.RespondToFriendshipRequest) { var choice = await DisplayActionSheet("Respond to Friend Request", null, null, "Confirm", "Ignore"); if (choice == "Confirm") { await FriendshipsApi.ConfirmFriendship(_settings.Jwt, _userContext.FriendshipId.Value); } else { await FriendshipsApi.RemoveFriendship(_settings.Jwt, _userContext.FriendshipId.Value); } } Navigation.InsertPageBefore(new UserPage(_settings, _email), this); await Navigation.PopAsync(); }