/// <summary> /// Adds or removes a user from a blacklist or a whitelist in the specified guild. /// </summary> /// <param name="guild">Guild</param> /// <param name="action">Add or rem action</param> /// <param name="userId">User's Id</param> /// <param name="userName">User's name#discrim</param> /// <returns>Whether the operation was successful</returns> public async Task <bool> ApplyListAction(StreamRoleListType listType, IGuild guild, AddRemove action, ulong userId, string userName) { userName.ThrowIfNull(nameof(userName)); bool success; using (var uow = _db.UnitOfWork) { var streamRoleSettings = uow.GuildConfigs.GetStreamRoleSettings(guild.Id); if (listType == StreamRoleListType.Whitelist) { var userObj = new StreamRoleWhitelistedUser() { UserId = userId, Username = userName, }; if (action == AddRemove.Rem) { success = streamRoleSettings.Whitelist.Remove(userObj); } else { success = streamRoleSettings.Whitelist.Add(userObj); } } else { var userObj = new StreamRoleBlacklistedUser() { UserId = userId, Username = userName, }; if (action == AddRemove.Rem) { success = streamRoleSettings.Blacklist.Remove(userObj); } else { success = streamRoleSettings.Blacklist.Add(userObj); } } await uow.CompleteAsync().ConfigureAwait(false); UpdateCache(guild.Id, streamRoleSettings); } if (success) { await RescanUsers(guild).ConfigureAwait(false); } return(success); }
/// <summary> /// Adds or removes a user from a blacklist or a whitelist in the specified guild. /// </summary> /// <param name="guild">Guild</param> /// <param name="action">Add or rem action</param> /// <param name="userId">User's Id</param> /// <param name="userName">User's name#discrim</param> /// <returns>Whether the operation was successful</returns> public async Task <bool> ApplyListAction(StreamRoleListType listType, IGuild guild, AddRemove action, ulong userId, string userName) { userName.ThrowIfNull(nameof(userName)); bool success = false; using (var uow = _db.GetDbContext()) { var streamRoleSettings = uow.GuildConfigs.GetStreamRoleSettings(guild.Id); if (listType == StreamRoleListType.Whitelist) { var userObj = new StreamRoleWhitelistedUser() { UserId = userId, Username = userName, }; if (action == AddRemove.Rem) { var toDelete = streamRoleSettings.Whitelist.FirstOrDefault(x => x.Equals(userObj)); if (toDelete != null) { uow._context.Remove(toDelete); success = true; } } else { success = streamRoleSettings.Whitelist.Add(userObj); } } else { var userObj = new StreamRoleBlacklistedUser() { UserId = userId, Username = userName, }; if (action == AddRemove.Rem) { var toRemove = streamRoleSettings.Blacklist.FirstOrDefault(x => x.Equals(userObj)); if (toRemove != null) { success = true; success = streamRoleSettings.Blacklist.Remove(toRemove); } } else { success = streamRoleSettings.Blacklist.Add(userObj); } } await uow.SaveChangesAsync(); UpdateCache(guild.Id, streamRoleSettings); } if (success) { await RescanUsers(guild).ConfigureAwait(false); } return(success); }