private void InitStatus(FriendModel friend) { if (statusImage != null) { statusImage.gameObject.SetActive(true); switch (friend.Status) { case UserOnlineStatus.Online: statusImage.color = new Color(0.043F, 0.043F, 0, 1.0F); break; case UserOnlineStatus.Offline: statusImage.color = new Color(0.517F, 0.557F, 0.694F, 0.5F); break; case UserOnlineStatus.Unknown: statusImage.color = new Color(0.5F, 0.5F, 0.5F, 0.5F); break; default: statusImage.color = new Color(0.8F, 0F, 0F, 0.3F); break; } } }
private FriendModel ConvertFriendEntity(UserSocialFriend friend) { var result = new FriendModel { Id = friend.xl_uid, Nickname = friend.name, AvatarUrl = friend.avatar }; if (!string.IsNullOrEmpty(friend.xl_uid)) //Xsolla ID not null - this is a registered Xsolla user with linked social account { var existingFriend = UserFriends.Instance.GetUserById(friend.xl_uid); result.Status = existingFriend?.Status ?? UserOnlineStatus.Unknown; result.Relationship = existingFriend?.Relationship ?? UserRelationship.Unknown; } else { result.Status = UserOnlineStatus.Unknown; result.Relationship = UserRelationship.SocialNonXsolla; } if (Enum.TryParse <SocialProvider>(friend.platform, ignoreCase: true, out SocialProvider provider)) { result.SocialProvider = provider; } return(result); }
private void InitNickname(FriendModel friend) { var text = string.IsNullOrEmpty(friend.Nickname) ? string.Empty : friend.Nickname; if (!string.IsNullOrEmpty(text)) { gameObject.name = text; } nicknameText.text = text; tagText.text = string.IsNullOrEmpty(friend.Tag) ? string.Empty : $"#{friend.Tag}"; tagText.gameObject.SetActive(!string.IsNullOrEmpty(friend.Tag)); }
public void Initialize(FriendModel friend) { if (friend == null) { return; } FriendModel = friend; InitAvatar(FriendModel); InitStatus(FriendModel); InitNickname(FriendModel); SetUserState(FriendModel.Relationship); SetSocialFriendship(FriendModel.SocialProvider); }
public void DeclineFriendship(FriendModel user, [CanBeNull] Action <FriendModel> onSuccess = null, [CanBeNull] Action <Error> onError = null) { if (!Pending.Contains(user)) { RaiseOnError($"Can not accept friendship from the user = {user.Nickname}. They are not a pending user.", onError); } else { SdkFriendsLogic.Instance.DeclineFriendship(user, u => { RemoveUserFromMemory(user); onSuccess?.Invoke(u); }, onError); } }
public void CancelFriendshipRequest(FriendModel user, [CanBeNull] Action <FriendModel> onSuccess = null, [CanBeNull] Action <Error> onError = null) { if (!Requested.Contains(user)) { RaiseOnError($"Can not cancel friendship request to = {user.Nickname}. This user doesn't have a friend request.", onError); } else { SdkFriendsLogic.Instance.CancelFriendshipRequest(user, u => { RemoveUserFromMemory(user); onSuccess?.Invoke(u); }, onError); } }
public void RemoveFriend(FriendModel user, [CanBeNull] Action <FriendModel> onSuccess = null, [CanBeNull] Action <Error> onError = null) { if (!Friends.Contains(user)) { RaiseOnError($"Can not remove friend with this nickname = {user.Nickname}. This user is not in the friend list.", onError); } else { SdkFriendsLogic.Instance.RemoveFriend(user, u => { RemoveUserFromMemory(user); onSuccess?.Invoke(u); }, onError); } }
public void UnblockUser(FriendModel user, [CanBeNull] Action <FriendModel> onSuccess = null, [CanBeNull] Action <Error> onError = null) { if (!Blocked.Contains(user)) { RaiseOnError($"Can not unblock user with this nickname = {user.Nickname}. This user is not in the list of blocked friends.", onError); } else { SdkFriendsLogic.Instance.UnblockUser(user, u => { RemoveUserFromMemory(user); onSuccess?.Invoke(u); }, onError); } }
public void AddFriend(FriendModel user, [CanBeNull] Action <FriendModel> onSuccess = null, [CanBeNull] Action <Error> onError = null) { if (Friends.Contains(user) || Blocked.Contains(user) || Pending.Contains(user) || Requested.Contains(user)) { RaiseOnError($"Can not add friend with this nickname = {user.Nickname}. This friend is not in the 'initial' state.", onError); } else { SdkFriendsLogic.Instance.SendFriendshipInvite(user, u => { RemoveUserFromMemory(user); UpdateRequestedUsers(onError: onError); onSuccess?.Invoke(u); }, onError); } }
public void BlockUser(FriendModel user, [CanBeNull] Action <FriendModel> onSuccess = null, [CanBeNull] Action <Error> onError = null) { if (Blocked.Contains(user)) { RaiseOnError($"Can not block user with this nickname = {user.Nickname}. They are already blocked.", onError); } else { SdkFriendsLogic.Instance.BlockUser(user, blockedUser => { RemoveUserFromMemory(user); UpdateBlockedUsers(onError: onError); onSuccess?.Invoke(blockedUser); }, onError); } }
private void InitAvatar(FriendModel friend) { if (!string.IsNullOrEmpty(friend.AvatarUrl)) { ImageLoader.Instance.GetImageAsync(friend.AvatarUrl, (url, sprite) => { if (avatarImage) { avatarImage.gameObject.SetActive(true); avatarImage.sprite = sprite; } }); } else { avatarImage.gameObject.SetActive(true); } }
private void RemoveUserFromMemory(FriendModel user) { if (Friends.Contains(user)) { Friends.Remove(user); UserFriendsUpdatedEvent?.Invoke(); } if (Pending.Contains(user)) { Pending.Remove(user); PendingUsersUpdatedEvent?.Invoke(); } if (Requested.Contains(user)) { Requested.Remove(user); RequestedUsersUpdatedEvent?.Invoke(); } if (Blocked.Contains(user)) { Blocked.Remove(user); BlockedUsersUpdatedEvent?.Invoke(); } }
public void SearchUsersByNickname(string nickname, Action <List <FriendModel> > onSuccess = null, Action <Error> onError = null) { nickname = Uri.EscapeDataString(nickname); XsollaLogin.Instance.SearchUsers(Token.Instance, nickname, 0, 20, onSuccess: users => { onSuccess?.Invoke(users.users.Where(u => !u.is_me).Select(u => { var result = new FriendModel { Id = u.user_id, AvatarUrl = u.avatar, Nickname = u.nickname, Tag = u.tag }; var user = UserFriends.Instance.GetUserById(result.Id); result.Status = user?.Status ?? UserOnlineStatus.Unknown; result.Relationship = user?.Relationship ?? UserRelationship.Unknown; return(result); }).ToList()); }, onError: onError); }
public void CancelFriendshipRequest(FriendModel user, Action <FriendModel> onSuccess = null, Action <Error> onError = null) { XsollaLogin.Instance.UpdateUserFriends(Token.Instance, FriendAction.CancelRequest, user.Id, () => onSuccess?.Invoke(user), onError); }
public void DeclineFriendship(FriendModel user, Action <FriendModel> onSuccess = null, Action <Error> onError = null) { XsollaLogin.Instance.UpdateUserFriends(Token.Instance, FriendAction.DenyInvite, user.Id, () => onSuccess?.Invoke(user), onError); }
public void RemoveFriend(FriendModel user, Action <FriendModel> onSuccess = null, Action <Error> onError = null) { XsollaLogin.Instance.UpdateUserFriends(Token.Instance, FriendAction.RemoveFriend, user.Id, () => onSuccess?.Invoke(user), onError); }