Hello
+This is index
+Your session is {{ .SessionStringToken }}
+Some string is {{ .SomeString }}
+ You've logged into a room {{ .SessionToken.RoomId }} +diff --git a/routes/base_page.go b/routes/base_page.go new file mode 100644 index 0000000..0b763fb --- /dev/null +++ b/routes/base_page.go @@ -0,0 +1,10 @@ +package routes + +type baseData struct { + Title string +} + +type pageData struct { + Base baseData + Content interface {} +} diff --git a/routes/index_page.go b/routes/index_page.go index a3a4a6b..0698862 100644 --- a/routes/index_page.go +++ b/routes/index_page.go @@ -17,23 +17,31 @@ func indexPageRoute( roomsM rooms.RoomManager, ) http.HandlerFunc { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + var baseFile = "templates/base.gohtml" var templFile = "templates/index.gohtml" session, found := getContextSession(r.Context()) if !found { log.Printf("/ session not found, should be impossible") // TODO return error i guess } - data := struct { + type MainData struct { SessionStringToken string SomeString string SessionToken sessions.SessionData - }{ + } + + data := pageData { + Base: baseData{ + Title: "hello base template title", + }, + Content: MainData{ fmt.Sprintf("%+v", session), "hello!", session, + }, } - tmpl := template.Must(template.ParseFS(templateFs, templFile)) - err := tmpl.Execute(w, data) + tmpl := template.Must(template.ParseFS(templateFs, templFile, baseFile)) + err := tmpl.ExecuteTemplate(w, "full-page", data) if err != nil { log.Printf("my error in executing template, huh\n %s", err) } diff --git a/routes/login_page.go b/routes/login_page.go index 6ac7fae..3b2ff5f 100644 --- a/routes/login_page.go +++ b/routes/login_page.go @@ -13,6 +13,10 @@ import ( "sunshine.industries/some-automoderation/sessions" ) +type MainData struct { + IsRoomExisting bool +} + // function to register all http routes for servicing auth pages and logic func registerLoginRoutes( templateFs *embed.FS, @@ -82,9 +86,19 @@ func authedPageMiddleware( } func renderLoginPage(w http.ResponseWriter) { + baseFile := "templates/base.gohtml" templFile := "templates/login.gohtml" - tmpl := template.Must(template.ParseFS(templateFs, templFile)) - err := tmpl.Execute(w, nil) + tmpl := template.Must(template.ParseFS(templateFs, templFile, baseFile)) + data := pageData { + Base: baseData{ + Title: "login", + }, + Content: MainData{ + IsRoomExisting: false, + }, + } + + err := tmpl.ExecuteTemplate(w, "full-page", data) if err != nil { log.Printf("my error in executing template, huh\n %s", err) } @@ -113,10 +127,10 @@ func createRoomHandler(templateFs *embed.FS, PasswordHash: r.PostFormValue("personalPassword"), // TODO hash the password, not to store } newRoom := rooms.Room{ - Name: roomName, - PasswordHash: r.PostFormValue("roomPassword"), // TODO hash the password, not to store - AdminIds: []rooms.PersonId{person.Id}, - Paricipants: []rooms.PersonId{person.Id}, + Name: roomName, + PasswordHash: r.PostFormValue("roomPassword"), // TODO hash the password, not to store + AdminIds: []rooms.PersonId{person.Id}, + Paricipants: []rooms.PersonId{person.Id}, AllKnownPeople: []rooms.Person{person}, } err = roomsM.Save(newRoom) @@ -226,7 +240,7 @@ func joinRoomHandler(templateFs *embed.FS, PasswordHash: personPass, Id: rooms.RandomPersonId(), } - err := roomsM.Update(context.TODO(), room.Name, func(fromRoom rooms.Room) (toRoom rooms.Room) { + err := roomsM.Update(r.Context(), room.Name, func(fromRoom rooms.Room) (toRoom rooms.Room) { log.Printf("/login/join about to modify room %+v", fromRoom) toRoom = fromRoom toRoom.AllKnownPeople = append(toRoom.AllKnownPeople, person) @@ -245,7 +259,7 @@ func joinRoomHandler(templateFs *embed.FS, // now we have room and person, can create a session // and we've checked password - err = roomsM.Update(context.TODO(), room.Name, func(fromRoom rooms.Room) (toRoom rooms.Room) { + err = roomsM.Update(r.Context(), room.Name, func(fromRoom rooms.Room) (toRoom rooms.Room) { toRoom = fromRoom toRoom.Paricipants = append(toRoom.Paricipants, person.Id) return toRoom diff --git a/routes/room_page.go b/routes/room_page.go index 935c5c0..55fb1b9 100644 --- a/routes/room_page.go +++ b/routes/room_page.go @@ -196,7 +196,8 @@ func roomPageRoute( fmt.Printf("all checks for room %s passed with %+v", roomName, session) templFile := "templates/room.gohtml" - tmpl := template.Must(template.ParseFS(templateFs, templFile)) + baseFile := "templates/base.gohtml" + tmpl := template.Must(template.ParseFS(templateFs, templFile, baseFile)) type GestureData struct { Name string @@ -210,15 +211,21 @@ func roomPageRoute( }) } - pageData := struct { + contentData := struct { Room rooms.Room Gestures []GestureData }{ Room: room, Gestures: gesturesData, } + data := pageData{ + Base: baseData{ + Title: "room-lala-from-base", + }, + Content: contentData, + } - err = tmpl.Execute(w, pageData) + err = tmpl.ExecuteTemplate(w, "full-page", data) if err != nil { log.Printf("/room/%s my error in executing template, huh\n %s", roomName, err) } diff --git a/routes/templates/base.gohtml b/routes/templates/base.gohtml new file mode 100644 index 0000000..baa1a3f --- /dev/null +++ b/routes/templates/base.gohtml @@ -0,0 +1,36 @@ +{{ define "full-page" }} + + +
+ + +This is index
-Your session is {{ .SessionStringToken }}
-Some string is {{ .SomeString }}
- You've logged into a room {{ .SessionToken.RoomId }} + {{ define "main-content" }} +This is index
+Your session is {{ .SessionStringToken }}
+Some string is {{ .SomeString }}
+ You've logged into a room {{ .SessionToken.RoomId }} +