From 13a85f42183b7373296fa85319d33f1359feaea9 Mon Sep 17 00:00:00 2001 From: Steven Le Rouzic Date: Tue, 16 Apr 2024 23:08:59 +0200 Subject: Timer token show & reset --- timer.db | Bin 28672 -> 28672 bytes timer.go | 58 +++++++++++++++ view/error_404.templ | 1 + view/error_404_templ.go | 2 +- view/timer.templ | 18 +++++ view/timer_templ.go | 176 ++++++++++++++++++++++++++++++---------------- view/timers_list.templ | 1 + view/timers_list_templ.go | 43 +++++++---- 8 files changed, 224 insertions(+), 75 deletions(-) diff --git a/timer.db b/timer.db index bbcc582..0e5cf42 100644 Binary files a/timer.db and b/timer.db differ diff --git a/timer.go b/timer.go index 5209e73..97dc964 100644 --- a/timer.go +++ b/timer.go @@ -6,6 +6,7 @@ import ( "database/sql" "encoding/base64" "errors" + "fmt" "log" "net/http" "strconv" @@ -231,6 +232,16 @@ func updateTimerEndTime(db *sql.DB, id model.UUID, endTime model.Time, userId mo return err == nil && affected == 1 } +func updateTimerToken(db *sql.DB, id model.UUID, token string, userId model.UUID) bool { + res, err := db.Exec("UPDATE Timer SET Token=$1 WHERE Id=$2 AND Owner=$3", token, id, userId) + if err != nil { + return false + } + + affected, err := res.RowsAffected() + return err == nil && affected == 1 +} + type Session struct { UserId model.UUID } @@ -369,6 +380,51 @@ func (server *MyServer) handleTimerAddTime(w http.ResponseWriter, r *http.Reques view.TimerView(*timer).Render(context.Background(), w) } +func (server *MyServer) handleGetTimerToken(w http.ResponseWriter, r *http.Request) { + currentUser := server.findCurrentUser(w, r) + if currentUser == nil { + w.WriteHeader(http.StatusUnauthorized) + return + } + + timer := queryTimer(server.db, r.PathValue("timerId"), currentUser.Id) + if timer == nil { + server.handleNotFound(w, r) + return + } + + w.Write([]byte(fmt.Sprint("", timer.Token, ""))) +} + +func (server *MyServer) handleResetTimerToken(w http.ResponseWriter, r *http.Request) { + currentUser := server.findCurrentUser(w, r) + if currentUser == nil { + w.WriteHeader(http.StatusUnauthorized) + return + } + + timer := queryTimer(server.db, r.PathValue("timerId"), currentUser.Id) + if timer == nil { + server.handleNotFound(w, r) + return + } + + newToken, err := generateTimerToken() + if err != nil { + w.WriteHeader(http.StatusInternalServerError) + return + } + + timer.Token = newToken + res := updateTimerToken(server.db, timer.Id, newToken, currentUser.Id) + if !res { + w.WriteHeader(http.StatusInternalServerError) + return + } + + view.TimerTokenForm(*timer).Render(context.Background(), w) +} + func (server *MyServer) handleDeleteTimer(w http.ResponseWriter, r *http.Request) { user := server.findCurrentUser(w, r) if user == nil { @@ -505,6 +561,8 @@ func main() { http.HandleFunc("GET /timer/{timerId}", myServer.handleTimer) http.HandleFunc("POST /timer/{timerId}/addTime/{timeToAdd}", myServer.handleTimerAddTime) http.HandleFunc("DELETE /timer/{timerId}", myServer.handleDeleteTimer) + http.HandleFunc("POST /timer/{timerId}/resetToken", myServer.handleResetTimerToken) + http.HandleFunc("GET /timer/{timerId}/token", myServer.handleGetTimerToken) http.HandleFunc("PUT /timer", myServer.handlePutTimer) http.HandleFunc("GET /", myServer.handleMain) diff --git a/view/error_404.templ b/view/error_404.templ index c97cd49..b262e21 100644 --- a/view/error_404.templ +++ b/view/error_404.templ @@ -2,5 +2,6 @@ package view templ Error404() {

Not found

+

Back to index

} diff --git a/view/error_404_templ.go b/view/error_404_templ.go index 486a7cd..3791569 100644 --- a/view/error_404_templ.go +++ b/view/error_404_templ.go @@ -23,7 +23,7 @@ func Error404() templ.Component { templ_7745c5c3_Var1 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

Not found

") + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

Not found

Back to index

") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } diff --git a/view/timer.templ b/view/timer.templ index 7e9ab7f..76bd7ba 100644 --- a/view/timer.templ +++ b/view/timer.templ @@ -5,6 +5,22 @@ import ( "stevenlr.com/timer/model" ) +templ TimerTokenForm(timer model.Timer) { +

+ + +

+} + templ TimerView(timer model.Timer) {

Timer "{ timer.Name }"

@@ -38,6 +54,8 @@ templ TimerView(timer model.Timer) {

} +

API token

+ @TimerTokenForm(timer)
} diff --git a/view/timer_templ.go b/view/timer_templ.go index 1dbf58c..35ca724 100644 --- a/view/timer_templ.go +++ b/view/timer_templ.go @@ -15,7 +15,7 @@ import ( "stevenlr.com/timer/model" ) -func TimerView(timer model.Timer) templ.Component { +func TimerTokenForm(timer model.Timer) templ.Component { return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) { templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer) if !templ_7745c5c3_IsBuffer { @@ -28,84 +28,134 @@ func TimerView(timer model.Timer) templ.Component { templ_7745c5c3_Var1 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

Timer \"") + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var4 string - templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(timer.EndTime.AsUTCString()) - if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `view\timer.templ`, Line: 13, Col: 56} + if !templ_7745c5c3_IsBuffer { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W) } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4)) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err + return templ_7745c5c3_Err + }) +} + +func TimerView(timer model.Timer) templ.Component { + return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) { + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer) + if !templ_7745c5c3_IsBuffer { + templ_7745c5c3_Buffer = templ.GetBuffer() + defer templ.ReleaseBuffer(templ_7745c5c3_Buffer) } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

Total time:\r

Timer \"") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } var templ_7745c5c3_Var5 string - templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(timer.StartTime.AsUTCString()) + templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(timer.Name) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `view\timer.templ`, Line: 17, Col: 41} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `view\timer.templ`, Line: 26, Col: 25} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var5)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" end=\"") + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\"

Back to list

Start time: ") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } var templ_7745c5c3_Var6 string - templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinStringErrs(timer.EndTime.AsUTCString()) + templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinStringErrs(timer.StartTime.AsUTCString()) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `view\timer.templ`, Line: 18, Col: 37} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `view\timer.templ`, Line: 28, Col: 60} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var6)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\">

Remaining time:\r

End time: ") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } var templ_7745c5c3_Var7 string templ_7745c5c3_Var7, templ_7745c5c3_Err = templ.JoinStringErrs(timer.EndTime.AsUTCString()) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `view\timer.templ`, Line: 24, Col: 37} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `view\timer.templ`, Line: 29, Col: 56} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var7)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

Total time:\r

Remaining time:\r

") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err @@ -115,12 +165,12 @@ func TimerView(timer model.Timer) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var8 string - templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprint("/timer/", timer.Id, "/addTime/15m")) + var templ_7745c5c3_Var11 string + templ_7745c5c3_Var11, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprint("/timer/", timer.Id, "/addTime/15m")) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `view\timer.templ`, Line: 30, Col: 96} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `view\timer.templ`, Line: 46, Col: 96} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var8)) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var11)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -128,12 +178,12 @@ func TimerView(timer model.Timer) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var9 string - templ_7745c5c3_Var9, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprint("/timer/", timer.Id, "/addTime/30m")) + var templ_7745c5c3_Var12 string + templ_7745c5c3_Var12, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprint("/timer/", timer.Id, "/addTime/30m")) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `view\timer.templ`, Line: 31, Col: 96} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `view\timer.templ`, Line: 47, Col: 96} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var9)) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var12)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -141,12 +191,12 @@ func TimerView(timer model.Timer) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var10 string - templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprint("/timer/", timer.Id, "/addTime/1h")) + var templ_7745c5c3_Var13 string + templ_7745c5c3_Var13, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprint("/timer/", timer.Id, "/addTime/1h")) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `view\timer.templ`, Line: 32, Col: 95} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `view\timer.templ`, Line: 48, Col: 95} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var10)) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var13)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -154,12 +204,12 @@ func TimerView(timer model.Timer) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var11 string - templ_7745c5c3_Var11, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprint("/timer/", timer.Id, "/addTime/2h")) + var templ_7745c5c3_Var14 string + templ_7745c5c3_Var14, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprint("/timer/", timer.Id, "/addTime/2h")) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `view\timer.templ`, Line: 33, Col: 95} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `view\timer.templ`, Line: 49, Col: 95} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var11)) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var14)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -167,12 +217,12 @@ func TimerView(timer model.Timer) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var12 string - templ_7745c5c3_Var12, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprint("/timer/", timer.Id, "/addTime/6h")) + var templ_7745c5c3_Var15 string + templ_7745c5c3_Var15, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprint("/timer/", timer.Id, "/addTime/6h")) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `view\timer.templ`, Line: 34, Col: 95} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `view\timer.templ`, Line: 50, Col: 95} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var12)) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var15)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -180,12 +230,12 @@ func TimerView(timer model.Timer) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var13 string - templ_7745c5c3_Var13, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprint("/timer/", timer.Id, "/addTime/12h")) + var templ_7745c5c3_Var16 string + templ_7745c5c3_Var16, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprint("/timer/", timer.Id, "/addTime/12h")) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `view\timer.templ`, Line: 35, Col: 96} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `view\timer.templ`, Line: 51, Col: 96} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var13)) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var16)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -193,12 +243,12 @@ func TimerView(timer model.Timer) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var14 string - templ_7745c5c3_Var14, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprint("/timer/", timer.Id, "/addTime/1d")) + var templ_7745c5c3_Var17 string + templ_7745c5c3_Var17, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprint("/timer/", timer.Id, "/addTime/1d")) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `view\timer.templ`, Line: 36, Col: 95} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `view\timer.templ`, Line: 52, Col: 95} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var14)) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var17)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -206,12 +256,12 @@ func TimerView(timer model.Timer) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var15 string - templ_7745c5c3_Var15, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprint("/timer/", timer.Id, "/addTime/1w")) + var templ_7745c5c3_Var18 string + templ_7745c5c3_Var18, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprint("/timer/", timer.Id, "/addTime/1w")) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `view\timer.templ`, Line: 37, Col: 95} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `view\timer.templ`, Line: 53, Col: 95} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var15)) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var18)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -219,12 +269,12 @@ func TimerView(timer model.Timer) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var16 string - templ_7745c5c3_Var16, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprint("/timer/", timer.Id, "/addTime/4w")) + var templ_7745c5c3_Var19 string + templ_7745c5c3_Var19, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprint("/timer/", timer.Id, "/addTime/4w")) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `view\timer.templ`, Line: 38, Col: 95} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `view\timer.templ`, Line: 54, Col: 95} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var16)) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var19)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -233,6 +283,14 @@ func TimerView(timer model.Timer) templ.Component { return templ_7745c5c3_Err } } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

API token

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = TimerTokenForm(timer).Render(ctx, templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err diff --git a/view/timers_list.templ b/view/timers_list.templ index 3deb7e3..69a8e53 100644 --- a/view/timers_list.templ +++ b/view/timers_list.templ @@ -13,6 +13,7 @@ templ timer(t model.Timer) { href="javascript:void(0);" hx-delete={ fmt.Sprint("/timer/", t.Id) } hx-target="closest .timer-row" + hx-confirm={ fmt.Sprint("Are you sure you want to delete timer \"", t.Name , "\"?") } >Delete

} diff --git a/view/timers_list_templ.go b/view/timers_list_templ.go index 60ce8ac..b2dd78b 100644 --- a/view/timers_list_templ.go +++ b/view/timers_list_templ.go @@ -63,7 +63,20 @@ func timer(t model.Timer) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-target=\"closest .timer-row\">Delete

") + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" hx-target=\"closest .timer-row\" hx-confirm=\"") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var5 string + templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprint("Are you sure you want to delete timer \"", t.Name, "\"?")) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `view\timers_list.templ`, Line: 16, Col: 86} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var5)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\">Delete

") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -82,21 +95,21 @@ func TimerCreateForm(timerName string, err string) templ.Component { defer templ.ReleaseBuffer(templ_7745c5c3_Buffer) } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var5 := templ.GetChildren(ctx) - if templ_7745c5c3_Var5 == nil { - templ_7745c5c3_Var5 = templ.NopComponent + templ_7745c5c3_Var6 := templ.GetChildren(ctx) + if templ_7745c5c3_Var6 == nil { + templ_7745c5c3_Var6 = templ.NopComponent } ctx = templ.ClearChildren(ctx) _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

") -- cgit