diff --git a/pkg/hicli/json-commands.go b/pkg/hicli/json-commands.go index 197e7a4..0f92914 100644 --- a/pkg/hicli/json-commands.go +++ b/pkg/hicli/json-commands.go @@ -79,6 +79,10 @@ func (h *HiClient) handleJSONCommand(ctx context.Context, req *JSONCommand) (any return unmarshalAndCall(req.Data, func(params *ensureGroupSessionSharedParams) (bool, error) { return true, h.EnsureGroupSessionShared(ctx, params.RoomID) }) + case "resolve_alias": + return unmarshalAndCall(req.Data, func(params *resolveAliasParams) (*mautrix.RespAliasResolve, error) { + return h.Client.ResolveAlias(ctx, params.Alias) + }) case "login": return unmarshalAndCall(req.Data, func(params *loginParams) (bool, error) { return true, h.LoginPassword(ctx, params.HomeserverURL, params.Username, params.Password) @@ -158,6 +162,10 @@ type ensureGroupSessionSharedParams struct { RoomID id.RoomID `json:"room_id"` } +type resolveAliasParams struct { + Alias id.RoomAlias `json:"alias"` +} + type loginParams struct { HomeserverURL string `json:"homeserver_url"` Username string `json:"username"` diff --git a/web/src/api/rpc.ts b/web/src/api/rpc.ts index 193e227..9d41eb8 100644 --- a/web/src/api/rpc.ts +++ b/web/src/api/rpc.ts @@ -27,6 +27,8 @@ import type { RPCEvent, RawDBEvent, ReceiptType, + ResolveAliasResponse, + RoomAlias, RoomID, TimelineRowID, UserID, @@ -161,6 +163,10 @@ export default abstract class RPCClient { return this.request("paginate_server", { room_id, limit }) } + resolveAlias(alias: RoomAlias): Promise { + return this.request("resolve_alias", { alias }) + } + discoverHomeserver(user_id: UserID): Promise { return this.request("discover_homeserver", { user_id }) } diff --git a/web/src/api/types/hitypes.ts b/web/src/api/types/hitypes.ts index 41ea4a5..8e51a75 100644 --- a/web/src/api/types/hitypes.ts +++ b/web/src/api/types/hitypes.ts @@ -139,6 +139,11 @@ export interface PaginationResponse { has_more: boolean } +export interface ResolveAliasResponse { + room_id: RoomID + servers: string[] +} + export interface EventUnsigned { prev_content?: unknown prev_sender?: UserID