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("