diff --git a/internal/api/room/control.go b/internal/api/room/control.go index 94217aa2..7539ae26 100644 --- a/internal/api/room/control.go +++ b/internal/api/room/control.go @@ -9,10 +9,30 @@ import ( "demodesk/neko/internal/http/auth" ) +type ControlStatusPayload struct { + HasHost bool `json:"has_host"` + HostId string `json:"host_id,omitempty"` +} + type ControlTargetPayload struct { ID string `json:"id"` } +func (h *RoomHandler) controlStatus(w http.ResponseWriter, r *http.Request) { + host := h.sessions.GetHost() + + if host == nil { + utils.HttpSuccess(w, ControlStatusPayload{ + HasHost: false, + }) + } else { + utils.HttpSuccess(w, ControlStatusPayload{ + HasHost: true, + HostId: host.ID(), + }) + } +} + func (h *RoomHandler) controlRequest(w http.ResponseWriter, r *http.Request) { host := h.sessions.GetHost() if host != nil { diff --git a/internal/api/room/handler.go b/internal/api/room/handler.go index e2cc2a0f..cca2b044 100644 --- a/internal/api/room/handler.go +++ b/internal/api/room/handler.go @@ -52,6 +52,7 @@ func (h *RoomHandler) Route(r chi.Router) { }) r.Route("/control", func(r chi.Router) { + r.Get("/", h.controlStatus) r.Post("/request", h.controlRequest) r.Post("/release", h.controlRelease)