Feat: roomlist update
This commit is contained in:
@ -46,6 +46,11 @@ func getRoomByID(roomID string) (*models.Room, error) {
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
func removeRoom(roomID string) {
|
||||
key := models.CacheRoomPrefix + roomID
|
||||
memcache.RemoveKey(key)
|
||||
}
|
||||
|
||||
// context
|
||||
func getRoomIDFromCtx(ctx context.Context) string {
|
||||
id, _ := ctx.Value(models.CtxRoomIDKey).(string)
|
||||
|
@ -8,16 +8,6 @@ import (
|
||||
"net/http"
|
||||
)
|
||||
|
||||
// func HandleRoomList(w http.ResponseWriter, r *http.Request) {
|
||||
// pubRooms := listPublicRooms()
|
||||
// tmpl, err := template.ParseGlob("components/*.html")
|
||||
// if err != nil {
|
||||
// abortWithError(w, err.Error())
|
||||
// return
|
||||
// }
|
||||
// tmpl.ExecuteTemplate(w, "base", pubRooms)
|
||||
// }
|
||||
|
||||
func HandleCreateRoom(w http.ResponseWriter, r *http.Request) {
|
||||
// parse payload
|
||||
payload := &models.RoomReq{
|
||||
@ -49,6 +39,7 @@ func HandleCreateRoom(w http.ResponseWriter, r *http.Request) {
|
||||
abortWithError(w, msg)
|
||||
return
|
||||
}
|
||||
notify(models.NotifyRoomListUpdate, "")
|
||||
// send msg of created room
|
||||
// h.Broker.Notifier <- broker.NotificationEvent{
|
||||
// EventName: models.MsgRoomListUpdate,
|
||||
|
@ -3,6 +3,7 @@ package handlers
|
||||
import (
|
||||
"golias/broker"
|
||||
"golias/config"
|
||||
"golias/models"
|
||||
"golias/pkg/cache"
|
||||
"html/template"
|
||||
"log/slog"
|
||||
@ -93,11 +94,20 @@ func HandleExit(w http.ResponseWriter, r *http.Request) {
|
||||
abortWithError(w, err.Error())
|
||||
return
|
||||
}
|
||||
var creatorLeft bool
|
||||
if fi.Room.CreatorName == fi.State.Username {
|
||||
creatorLeft = true
|
||||
}
|
||||
exitedRoom := fi.ExitRoom()
|
||||
if err := saveRoom(exitedRoom); err != nil {
|
||||
abortWithError(w, err.Error())
|
||||
return
|
||||
}
|
||||
if len(exitedRoom.PlayerList) == 0 || creatorLeft {
|
||||
removeRoom(exitedRoom.ID)
|
||||
// TODO: notify users if creator left
|
||||
notify(models.NotifyRoomListUpdate, "")
|
||||
}
|
||||
if err := saveState(fi.State.Username, fi.State); err != nil {
|
||||
abortWithError(w, err.Error())
|
||||
return
|
||||
|
Reference in New Issue
Block a user