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;
                }
            }
        }
Exemple #2
0
        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);
        }
Exemple #5
0
 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);
     }
 }
Exemple #6
0
 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);
     }
 }
Exemple #7
0
 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);
     }
 }
Exemple #8
0
 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);
     }
 }
Exemple #9
0
 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);
     }
 }
Exemple #10
0
 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);
     }
 }
Exemple #12
0
 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);
        }
Exemple #14
0
 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);
 }
Exemple #15
0
 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);
 }
Exemple #16
0
 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);
 }