feat: release hand endpoint & button
This commit is contained in:
@@ -2,7 +2,6 @@ package routes
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"embed"
|
||||
"fmt"
|
||||
"html/template"
|
||||
@@ -33,7 +32,10 @@ func registerPageRoutes(
|
||||
http.Handle(raiseHandPath, // ending in / captures all following path sections, i.e gesture num
|
||||
authedPageMiddleware(
|
||||
sessionSM,
|
||||
http.StripPrefix(raiseHandPath, raiseGestureHandRoute(templateFs, roomsM))))
|
||||
http.StripPrefix(raiseHandPath, raiseGestureHandRoute(roomsM))))
|
||||
|
||||
http.Handle("/rooms/releaseHand",
|
||||
authedPageMiddleware(sessionSM, releaseHandRoute(roomsM)))
|
||||
|
||||
http.Handle(subscribeRoomPath,
|
||||
authedPageMiddleware(
|
||||
@@ -94,7 +96,6 @@ func streamingRoomStates(
|
||||
|
||||
// if currently speaking? i guess first lower the hand and then raise new
|
||||
func raiseGestureHandRoute(
|
||||
templateFs *embed.FS,
|
||||
roomsM rooms.RoomManager,
|
||||
) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
@@ -112,7 +113,7 @@ func raiseGestureHandRoute(
|
||||
return
|
||||
}
|
||||
var outerClosureRoom rooms.Room
|
||||
err = roomsM.Update(context.TODO(), session.RoomId, func(fromRoom rooms.Room) (toRoom rooms.Room) {
|
||||
err = roomsM.Update(r.Context(), session.RoomId, func(fromRoom rooms.Room) (toRoom rooms.Room) {
|
||||
toRoom = fromRoom.RaiseHand(session.PersonId, gesture)
|
||||
outerClosureRoom = toRoom
|
||||
return toRoom
|
||||
@@ -130,6 +131,30 @@ func raiseGestureHandRoute(
|
||||
}
|
||||
}
|
||||
|
||||
func releaseHandRoute(
|
||||
roomsM rooms.RoomManager,
|
||||
) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
session, found := getContextSession(r.Context())
|
||||
if !found {
|
||||
log.Printf("/rooms/releaseHand session not found, should be impossible")
|
||||
// TODO return error i guess
|
||||
return
|
||||
}
|
||||
err := roomsM.Update(r.Context(), session.RoomId, func(fromRoom rooms.Room) (toRoom rooms.Room) {
|
||||
toRoom = fromRoom
|
||||
toRoom.ReleaseHand(session.PersonId)
|
||||
return toRoom
|
||||
})
|
||||
if err != nil {
|
||||
log.Printf("/rooms/releaseHand error saving hand: %s\n", err)
|
||||
return
|
||||
// TODO return error i guess
|
||||
}
|
||||
w.WriteHeader(http.StatusNoContent)
|
||||
}
|
||||
}
|
||||
|
||||
func roomPageRoute(
|
||||
templateFs *embed.FS,
|
||||
roomsM rooms.RoomManager,
|
||||
|
||||
Reference in New Issue
Block a user