about summary refs log tree commit diff
path: root/MiniUtils/Services
diff options
context:
space:
mode:
Diffstat (limited to 'MiniUtils/Services')
-rw-r--r--MiniUtils/Services/IgnoreListManager.cs20
1 files changed, 19 insertions, 1 deletions
diff --git a/MiniUtils/Services/IgnoreListManager.cs b/MiniUtils/Services/IgnoreListManager.cs

index 3b6dc96..cb863a8 100644 --- a/MiniUtils/Services/IgnoreListManager.cs +++ b/MiniUtils/Services/IgnoreListManager.cs
@@ -65,7 +65,7 @@ public class IgnoreListManager(AuthenticatedHomeserverGeneric homeserver) { return moved; } - public async Task<int> AddList(string[] itemsToAdd) { + public async Task<int> AddList(IEnumerable<string> itemsToAdd) { int added = 0; await Lock.WaitAsync(); var ignoreList = await homeserver.GetAccountDataOrNullAsync<IgnoredUserListEventContentWithDisabled>(IgnoredUserListEventContent.EventId) ?? new(); @@ -76,12 +76,30 @@ public class IgnoreListManager(AuthenticatedHomeserverGeneric homeserver) { added++; continue; } + ignoreList.IgnoredUsers.Add(item, new()); added++; } + if (added > 0) await homeserver.SetAccountDataAsync(IgnoredUserListEventContent.EventId, ignoreList); Lock.Release(); return added; } + + public async Task<int> RemoveList(IEnumerable<string> itemsToRemove) { + int removed = 0; + await Lock.WaitAsync(); + var ignoreList = await homeserver.GetAccountDataOrNullAsync<IgnoredUserListEventContentWithDisabled>(IgnoredUserListEventContent.EventId) ?? new(); + foreach (var item in itemsToRemove) { + if (ignoreList.IgnoredUsers.Remove(item)) removed++; + if (ignoreList.DisabledIgnoredUsers.Remove(item)) removed++; + removed++; + } + + if (removed > 0) + await homeserver.SetAccountDataAsync(IgnoredUserListEventContent.EventId, ignoreList); + Lock.Release(); + return removed; + } } \ No newline at end of file