Feat: enter room: login with link

This commit is contained in:
Grail Finder
2025-05-21 09:22:29 +03:00
parent 59cccbbe8e
commit ad8f1aaee2
6 changed files with 125 additions and 85 deletions

View File

@ -60,6 +60,7 @@ func HandleFrontLogin(w http.ResponseWriter, r *http.Request) {
abortWithError(w, msg)
return
}
roomID := r.PostFormValue("room_id")
// make sure username does not exists
cleanName := utils.RemoveSpacesFromStr(username)
// login user
@ -75,19 +76,37 @@ func HandleFrontLogin(w http.ResponseWriter, r *http.Request) {
abortWithError(w, err.Error())
return
}
// state := models.MakeTestState(cleanName)
// state.State.Username = cleanName
userstate := models.InitState(cleanName)
fi := &models.FullInfo{
State: userstate,
}
fi.List = listPublicRooms()
// save state to cache
if err := saveState(cleanName, userstate); err != nil {
// if err := saveFullInfo(fi); err != nil {
log.Error("failed to save state", "error", err)
abortWithError(w, err.Error())
return
// check if room_id provided and exists
if roomID != "" {
log.Debug("got room_id in login", "room_id", roomID)
room, err := getRoomByID(roomID)
if err != nil {
abortWithError(w, err.Error())
return
}
room.PlayerList = append(room.PlayerList, fi.State.Username)
fi.State.RoomID = room.ID
fi.Room = room
fi.List = nil
// save full info instead
if err := saveFullInfo(fi); err != nil {
abortWithError(w, err.Error())
return
}
} else {
log.Debug("no room_id in login")
fi.List = listPublicRooms()
// save state to cache
if err := saveState(cleanName, userstate); err != nil {
// if err := saveFullInfo(fi); err != nil {
log.Error("failed to save state", "error", err)
abortWithError(w, err.Error())
return
}
}
tmpl.ExecuteTemplate(w, "base", fi)
}