From f4137752179711d588f1c072d15be7795b6e31ba Mon Sep 17 00:00:00 2001 From: Rory& Date: Tue, 9 Dec 2025 15:01:22 +0100 Subject: Support getting/setting room dir visibility --- LibMatrix/Homeservers/AuthenticatedHomeserverGeneric.cs | 5 +++++ LibMatrix/Homeservers/RemoteHomeServer.cs | 15 +++++++++++++++ 2 files changed, 20 insertions(+) (limited to 'LibMatrix') diff --git a/LibMatrix/Homeservers/AuthenticatedHomeserverGeneric.cs b/LibMatrix/Homeservers/AuthenticatedHomeserverGeneric.cs index 916780e..b453d87 100644 --- a/LibMatrix/Homeservers/AuthenticatedHomeserverGeneric.cs +++ b/LibMatrix/Homeservers/AuthenticatedHomeserverGeneric.cs @@ -669,5 +669,10 @@ public class AuthenticatedHomeserverGeneric : RemoteHomeserver { public required List Aliases { get; set; } } + public async Task SetRoomDirectoryVisibilityAsync(string roomId, RoomDirectoryVisibilityResponse.VisibilityValue visibility) + => await ClientHttpClient.PostAsJsonAsync($"/_matrix/client/v3/directory/list/room/{HttpUtility.UrlEncode(roomId)}", new RoomDirectoryVisibilityResponse { + Visibility = visibility + }); + #endregion } \ No newline at end of file diff --git a/LibMatrix/Homeservers/RemoteHomeServer.cs b/LibMatrix/Homeservers/RemoteHomeServer.cs index 7c55d57..a14e674 100644 --- a/LibMatrix/Homeservers/RemoteHomeServer.cs +++ b/LibMatrix/Homeservers/RemoteHomeServer.cs @@ -83,6 +83,10 @@ public class RemoteHomeserver { } while (limit > 0 && limit-- > 0); } + public async Task GetRoomDirectoryVisibilityAsync(string roomId) + => await (await ClientHttpClient.GetAsync($"/_matrix/client/v3/directory/list/room/{HttpUtility.UrlEncode(roomId)}")).Content + .ReadFromJsonAsync() ?? throw new InvalidOperationException(); + #region Authentication public async Task LoginAsync(string username, string password, string? deviceName = null) { @@ -120,6 +124,17 @@ public class RemoteHomeserver { public UserInteractiveAuthClient Auth; } +public class RoomDirectoryVisibilityResponse { + [JsonPropertyName("visibility")] + public VisibilityValue Visibility { get; set; } + + [JsonConverter(typeof(JsonStringEnumConverter))] + public enum VisibilityValue { + [JsonStringEnumMemberName("public")] Public, + [JsonStringEnumMemberName("private")] Private + } +} + public class PublicRoomDirectoryResult { [JsonPropertyName("chunk")] public List Chunk { get; set; } -- cgit 1.5.1