Feat: add exit room
This commit is contained in:
		| @@ -79,8 +79,7 @@ func saveFullInfo(fi *models.FullInfo) error { | ||||
| 	if err := saveState(fi.State.Username, fi.State); err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	// can room be nil? | ||||
| 	// if fi.Room == nil { | ||||
| 	// if fi.Room == nil { // can be null on exit | ||||
| 	// 	return nil | ||||
| 	// } | ||||
| 	if err := saveRoom(fi.Room); err != nil { | ||||
|   | ||||
| @@ -81,3 +81,29 @@ func HandleHome(w http.ResponseWriter, r *http.Request) { | ||||
| 		log.Error("failed to exec templ;", "error", err, "templ", "base") | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func HandleExit(w http.ResponseWriter, r *http.Request) { | ||||
| 	tmpl, err := template.ParseGlob("components/*.html") | ||||
| 	if err != nil { | ||||
| 		abortWithError(w, err.Error()) | ||||
| 		return | ||||
| 	} | ||||
| 	fi, err := getFullInfoByCtx(r.Context()) | ||||
| 	if err != nil { | ||||
| 		abortWithError(w, err.Error()) | ||||
| 		return | ||||
| 	} | ||||
| 	exitedRoom := fi.ExitRoom() | ||||
| 	if err := saveRoom(exitedRoom); err != nil { | ||||
| 		abortWithError(w, err.Error()) | ||||
| 		return | ||||
| 	} | ||||
| 	if err := saveState(fi.State.Username, fi.State); err != nil { | ||||
| 		abortWithError(w, err.Error()) | ||||
| 		return | ||||
| 	} | ||||
| 	fi.List = listPublicRooms() | ||||
| 	if err := tmpl.ExecuteTemplate(w, "base", fi); err != nil { | ||||
| 		log.Error("failed to exec templ;", "error", err, "templ", "base") | ||||
| 	} | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Grail Finder
					Grail Finder