From 089d16812c8a94b39592d42d7c15edc2d6746f1d Mon Sep 17 00:00:00 2001 From: Neil Alexander Date: Wed, 9 Mar 2022 10:42:24 +0000 Subject: [PATCH] Fix `GET /directory/list/room/{roomID}` (#2262) * Let's try to work out why this endpoint lies * Try that again * Fix `QueryPublishedRooms` * Remove logging * Remove unnecessary change * Remove unnecessary change --- roomserver/internal/query/query.go | 8 ++++++++ roomserver/storage/interface.go | 2 ++ roomserver/storage/shared/storage.go | 4 ++++ 3 files changed, 14 insertions(+) diff --git a/roomserver/internal/query/query.go b/roomserver/internal/query/query.go index 70cc5d62..471c6fb4 100644 --- a/roomserver/internal/query/query.go +++ b/roomserver/internal/query/query.go @@ -610,6 +610,14 @@ func (r *Queryer) QueryPublishedRooms( req *api.QueryPublishedRoomsRequest, res *api.QueryPublishedRoomsResponse, ) error { + if req.RoomID != "" { + visible, err := r.DB.GetPublishedRoom(ctx, req.RoomID) + if err == nil && visible { + res.RoomIDs = []string{req.RoomID} + return nil + } + return err + } rooms, err := r.DB.GetPublishedRooms(ctx) if err != nil { return err diff --git a/roomserver/storage/interface.go b/roomserver/storage/interface.go index a2b22b40..a98fda07 100644 --- a/roomserver/storage/interface.go +++ b/roomserver/storage/interface.go @@ -139,6 +139,8 @@ type Database interface { PublishRoom(ctx context.Context, roomID string, publish bool) error // Returns a list of room IDs for rooms which are published. GetPublishedRooms(ctx context.Context) ([]string, error) + // Returns whether a given room is published or not. + GetPublishedRoom(ctx context.Context, roomID string) (bool, error) // TODO: factor out - from currentstateserver diff --git a/roomserver/storage/shared/storage.go b/roomserver/storage/shared/storage.go index dd49f35c..68fd3867 100644 --- a/roomserver/storage/shared/storage.go +++ b/roomserver/storage/shared/storage.go @@ -669,6 +669,10 @@ func (d *Database) PublishRoom(ctx context.Context, roomID string, publish bool) }) } +func (d *Database) GetPublishedRoom(ctx context.Context, roomID string) (bool, error) { + return d.PublishedTable.SelectPublishedFromRoomID(ctx, nil, roomID) +} + func (d *Database) GetPublishedRooms(ctx context.Context) ([]string, error) { return d.PublishedTable.SelectAllPublishedRooms(ctx, nil, true) }