feat: release hand endpoint & button

This commit is contained in:
efim
2023-11-12 18:24:32 +00:00
parent b90fcc3f20
commit b1f2e896b9
5 changed files with 51 additions and 10 deletions

View File

@@ -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,