diff options
Diffstat (limited to 'LibMatrix/Homeservers/AuthenticatedHomeserverGeneric.cs')
-rw-r--r-- | LibMatrix/Homeservers/AuthenticatedHomeserverGeneric.cs | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/LibMatrix/Homeservers/AuthenticatedHomeserverGeneric.cs b/LibMatrix/Homeservers/AuthenticatedHomeserverGeneric.cs index 02f3e3a..1c93235 100644 --- a/LibMatrix/Homeservers/AuthenticatedHomeserverGeneric.cs +++ b/LibMatrix/Homeservers/AuthenticatedHomeserverGeneric.cs @@ -295,6 +295,27 @@ public class AuthenticatedHomeserverGeneric(string serverName, string accessToke } public async Task<FilterIdResponse> UploadFilterAsync(SyncFilter filter) { + List<List<string>?> senderLists = [ + filter.AccountData?.Senders, + filter.AccountData?.NotSenders, + filter.Presence?.Senders, + filter.Presence?.NotSenders, + filter.Room?.AccountData?.Senders, + filter.Room?.AccountData?.NotSenders, + filter.Room?.Ephemeral?.Senders, + filter.Room?.Ephemeral?.NotSenders, + filter.Room?.State?.Senders, + filter.Room?.State?.NotSenders, + filter.Room?.Timeline?.Senders, + filter.Room?.Timeline?.NotSenders + ]; + + foreach (var list in senderLists) + if (list is { Count: > 0 } && list.Contains("@me")) { + list.Remove("@me"); + list.Add(UserId); + } + var resp = await ClientHttpClient.PostAsJsonAsync("/_matrix/client/v3/user/" + UserId + "/filter", filter); return await resp.Content.ReadFromJsonAsync<FilterIdResponse>() ?? throw new Exception("Failed to upload filter?"); } @@ -327,8 +348,7 @@ public class AuthenticatedHomeserverGeneric(string serverName, string accessToke /// <returns>Filter ID response</returns> /// <exception cref="Exception"></exception> public async Task<FilterIdResponse> UploadNamedFilterAsync(string filterName, SyncFilter filter) { - var resp = await ClientHttpClient.PostAsJsonAsync("/_matrix/client/v3/user/" + UserId + "/filter", filter); - var idResp = await resp.Content.ReadFromJsonAsync<FilterIdResponse>() ?? throw new Exception("Failed to upload filter?"); + var idResp = await UploadFilterAsync(filter); var filterList = await GetNamedFilterListOrNullAsync() ?? new Dictionary<string, string>(); filterList[filterName] = idResp.FilterId; |