internal Mappings WithFailed(Mapping mapping) { var created = Created.Contains(mapping) ? Array.AsReadOnly(Created.Where(t => t != mapping).ToArray()) : Created; var failed = !Failed.Contains(mapping) ? Array.AsReadOnly(Failed.Concat(new[] { mapping }).ToArray()) : Failed; var pending = Pending.Contains(mapping) ? Array.AsReadOnly(Pending.Where(t => t != mapping).ToArray()) : Pending; return(new Mappings(created, pending, failed)); }
internal Mappings Remove(Mapping mapping, out bool wasCreated) { wasCreated = Created.Contains(mapping); var created = Created.Contains(mapping) ? Created.Except(new[] { mapping }).ToArray() : Created; var pending = Pending.Contains(mapping) ? Pending.Except(new[] { mapping }).ToArray() : Pending; var failed = Failed.Contains(mapping) ? Failed.Except(new[] { mapping }).ToArray() : Failed; return(new Mappings(created, pending, failed)); }
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 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); } }
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 bool PendingContains(T obj) { return(Pending.Contains(obj)); }