refactor: toggling state by same button

This commit is contained in:
efim
2023-11-24 05:13:39 +00:00
parent 4680d96a97
commit 1b91b9f083
3 changed files with 39 additions and 67 deletions

View File

@@ -107,22 +107,20 @@ func raiseGestureHandRoute(
) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
gestureInd, err := strconv.Atoi(r.URL.Path)
gesture, found := rooms.GestureFromInt(gestureInd)
selectedGesture, found := rooms.GestureFromInt(gestureInd)
if err != nil || !found {
log.Printf("/rooms/raiseGesture error %s gettin hand symbol index from path %s\n", err, r.URL.Path)
return
}
log.Printf("/rooms/raiseGesture successfully got gesture %d : %s", gesture, gesture.String())
log.Printf("/rooms/raiseGesture successfully got gesture %d : %s", selectedGesture, selectedGesture.String())
session, found := getContextSession(r.Context())
if !found {
log.Printf("/rooms/raiseGesture session not found, should be impossible")
// TODO return error i guess
return
}
var outerClosureRoom rooms.Room
err = roomsM.Update(r.Context(), session.RoomId, func(fromRoom rooms.Room) (toRoom rooms.Room) {
toRoom = fromRoom.RaiseHand(session.PersonId, gesture)
outerClosureRoom = toRoom
toRoom = fromRoom.RaiseHand(session.PersonId, selectedGesture)
return toRoom
})
if err != nil {
@@ -130,16 +128,19 @@ func raiseGestureHandRoute(
return
// TODO return error i guess
}
log.Printf(">> i attempt to get room with closure: %+v\n", outerClosureRoom)
tableTemplates := "templates/room.gohtml"
tmpl := template.Must(
template.New("").ParseFS(templateFs, tableTemplates))
gestureData := GestureData{
Url: fmt.Sprintf("%s%d", raiseHandPath, gesture),
Gesture: gesture,
IsSelected: true,
var gesturesData []GestureData
for _, gesture := range rooms.GesturesHighToLow {
gesturesData = append(gesturesData, GestureData{
Url: fmt.Sprintf("%s%d", raiseHandPath, gesture),
Gesture: gesture,
IsSelected: selectedGesture == gesture,
})
}
err = tmpl.ExecuteTemplate(w, "activeButton", &gestureData)
err = tmpl.ExecuteTemplate(w, "controls", &gesturesData)
if err != nil {
log.Printf("/rooms/releaseHand error saving hand: %s\n", err)
return
@@ -171,38 +172,22 @@ func releaseHandRoute(
// TODO return error i guess
}
r.ParseForm() // to return either 'inactive button" or 'no need to change html'
gestureString := r.FormValue("gesture")
if gestureString != "" {
gestureIndex, err := strconv.Atoi(gestureString)
if err != nil {
log.Printf("/rooms/releaseHand error getting gesture index: %s %s", gestureString, err)
return
// TODO return error i guess
}
gesture, ok := rooms.GestureFromInt(gestureIndex)
if !ok {
log.Printf("/rooms/releaseHand error getting gesture: %s %s", gestureString, err)
return
// TODO return error i guess
}
tableTemplates := "templates/room.gohtml"
tmpl := template.Must(
template.New("").ParseFS(templateFs, tableTemplates))
gestureData := GestureData{
tableTemplates := "templates/room.gohtml"
tmpl := template.Must(
template.New("").ParseFS(templateFs, tableTemplates))
var gesturesData []GestureData
for _, gesture := range rooms.GesturesHighToLow {
gesturesData = append(gesturesData, GestureData{
Url: fmt.Sprintf("%s%d", raiseHandPath, gesture),
Gesture: gesture,
IsSelected: false,
}
err = tmpl.ExecuteTemplate(w, "inactiveButton", &gestureData)
if err != nil {
log.Printf("/rooms/releaseHand error saving hand: %s\n", err)
return
// TODO return error i guess
}
} else {
w.WriteHeader(http.StatusNoContent)
})
}
err = tmpl.ExecuteTemplate(w, "controls", &gesturesData)
if err != nil {
log.Printf("/rooms/releaseHand error saving hand: %s\n", err)
return
// TODO return error i guess
}
}
}