diff --git a/public/assets/js/kiosk.js b/public/assets/js/kiosk.js index 69de1df..de74362 100644 --- a/public/assets/js/kiosk.js +++ b/public/assets/js/kiosk.js @@ -1,4 +1,6 @@ -{ +"use strict"; + +(() => { const kioskData = JSON.parse( document.getElementById("kiosk-data").textContent, ); @@ -100,4 +102,4 @@ startPolling(); } }); -} +})(); diff --git a/routes/clock.go b/routes/clock.go index 14f78b9..08c1038 100644 --- a/routes/clock.go +++ b/routes/clock.go @@ -19,11 +19,18 @@ func Clock(baseConfig *config.Config) echo.HandlerFunc { fmt.Println() } + kioskVersionHeader := c.Request().Header.Get("kiosk-version") requestId := utils.ColorizeRequestId(c.Response().Header().Get(echo.HeaderXRequestID)) // create a copy of the global config to use with this request requestConfig := *baseConfig + // If kiosk version on client and server do not match refresh client. + if kioskVersionHeader != "" && KioskVersion != kioskVersionHeader { + c.Response().Header().Set("HX-Refresh", "true") + return c.String(http.StatusTemporaryRedirect, "") + } + err := requestConfig.ConfigWithOverrides(c) if err != nil { log.Error("err overriding config", "err", err) diff --git a/views/home.templ b/views/home.templ index fa3c74d..b8ba75b 100644 --- a/views/home.templ +++ b/views/home.templ @@ -154,7 +154,7 @@ templ paramForm(queries url.Values) { } -templ clock(queries url.Values) { +templ clock(queries url.Values, kioskVersion string) {
} @@ -191,7 +192,7 @@ templ Home(data PageData) { - + Immich Kiosk @@ -235,7 +236,7 @@ templ Home(data PageData) { @progressBar(data.Config.Refresh) } if !data.Config.DisableUi && data.Config.ShowTime { - @clock(data.Queries) + @clock(data.Queries, data.KioskVersion) } @menu() @paramForm(data.Queries) diff --git a/views/home_templ.go b/views/home_templ.go index 69a657e..a3fe32f 100644 --- a/views/home_templ.go +++ b/views/home_templ.go @@ -428,7 +428,7 @@ func paramForm(queries url.Values) templ.Component { }) } -func clock(queries url.Values) templ.Component { +func clock(queries url.Values, kioskVersion string) templ.Component { return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) @@ -456,7 +456,20 @@ func clock(queries url.Values) templ.Component { return templ_7745c5c3_Err } } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" hx-trigger=\"load, every 13s\" hx-swap=\"innerHTML\">") + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" hx-trigger=\"load, every 13s\" hx-swap=\"innerHTML\" hx-headers=\"") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var15 string + templ_7745c5c3_Var15, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf(`{"kiosk-version": "%s"}`, kioskVersion)) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views/home.templ`, Line: 166, Col: 67} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var15)) + 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 } @@ -477,17 +490,17 @@ func progressBar(refresh int) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var15 := templ.GetChildren(ctx) - if templ_7745c5c3_Var15 == nil { - templ_7745c5c3_Var15 = templ.NopComponent + templ_7745c5c3_Var16 := templ.GetChildren(ctx) + if templ_7745c5c3_Var16 == nil { + templ_7745c5c3_Var16 = templ.NopComponent } ctx = templ.ClearChildren(ctx) _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var16 = []any{"progress--bar", animationDuration(refresh)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var16...) + var templ_7745c5c3_Var17 = []any{"progress--bar", animationDuration(refresh)} + templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var17...) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -495,12 +508,12 @@ func progressBar(refresh int) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var17 string - templ_7745c5c3_Var17, templ_7745c5c3_Err = templ.JoinStringErrs(templ.CSSClasses(templ_7745c5c3_Var16).String()) + var templ_7745c5c3_Var18 string + templ_7745c5c3_Var18, templ_7745c5c3_Err = templ.JoinStringErrs(templ.CSSClasses(templ_7745c5c3_Var17).String()) if templ_7745c5c3_Err != nil { return templ.Error{Err: templ_7745c5c3_Err, FileName: `views/home.templ`, Line: 1, Col: 0} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var17)) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var18)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -525,21 +538,21 @@ func Home(data PageData) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var18 := templ.GetChildren(ctx) - if templ_7745c5c3_Var18 == nil { - templ_7745c5c3_Var18 = templ.NopComponent + templ_7745c5c3_Var19 := templ.GetChildren(ctx) + if templ_7745c5c3_Var19 == nil { + templ_7745c5c3_Var19 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("