From 990b29b3c8c5a0ccc4d188ab62b43f59b505e68d Mon Sep 17 00:00:00 2001 From: "Gustavo \"Guz\" L de Mello" Date: Fri, 11 Apr 2025 22:04:44 -0300 Subject: [PATCH] feat: dynamic last updated date in privacy policy --- app.go | 34 +++++++++++++++++++++++++++++++--- go.mod | 1 + go.sum | 2 ++ templates/privacy.html | 9 +++++++++ 4 files changed, 43 insertions(+), 3 deletions(-) diff --git a/app.go b/app.go index fc48fa2..4fa1cd0 100644 --- a/app.go +++ b/app.go @@ -12,6 +12,7 @@ import ( "slices" "sort" "strings" + "time" "capytal.cc/assets" "capytal.cc/internals/natsort" @@ -25,6 +26,7 @@ import ( "forge.capytal.company/loreddev/x/smalltrip/exception" "forge.capytal.company/loreddev/x/smalltrip/middleware" links "github.com/fundipper/goldmark-links" + "github.com/goodsign/monday" "github.com/yuin/goldmark" highlighting "github.com/yuin/goldmark-highlighting/v2" meta "github.com/yuin/goldmark-meta" @@ -196,6 +198,20 @@ func (app *app) setup() { } } + changeDate, err := time.Parse(time.DateOnly, "2025-04-11") + app.assert.Nil(err, "This date should always be valid") + + if d, ok := meta["modified"]; ok { + if s, ok := d.(string); ok { + t, err := time.Parse(time.RFC3339, s) + if err != nil { + exception.InternalServerError(err).ServeHTTP(w, r) + return + } + changeDate = t + } + } + f := new(strings.Builder) err = md.Renderer().Render(f, c, doc) if err != nil { @@ -203,10 +219,22 @@ func (app *app) setup() { return } + locale := r.URL.Query().Get("lang") + if locale == "" { + locale = "en-US" + } + locale = strings.Replace(locale, "-", "_", 1) + + format, ok := monday.LongFormatsByLocale[monday.Locale(locale)] + if !ok { + format = time.DateTime + } + err = app.templates.ExecuteTemplate(w, "privacy-policy", map[string]any{ - "Title": title, - "Lang": r.URL.Query().Get("lang"), - "Content": template.HTML(f.String()), + "Title": title, + "Lang": r.URL.Query().Get("lang"), + "Content": template.HTML(f.String()), + "ChangeDate": monday.Format(changeDate, format, monday.Locale(locale)), }) if err != nil { exception.InternalServerError(err).ServeHTTP(w, r) diff --git a/go.mod b/go.mod index 573f95c..0adb4a1 100644 --- a/go.mod +++ b/go.mod @@ -5,6 +5,7 @@ go 1.24.1 require ( forge.capytal.company/loreddev/x v0.0.0-20250311222825-ceda7536f16e github.com/fundipper/goldmark-links v0.1.0 + github.com/goodsign/monday v1.0.2 github.com/yuin/goldmark-highlighting/v2 v2.0.0-20230729083705-37449abec8cc gitlab.com/staticnoise/goldmark-callout v0.0.0-20240609120641-6366b799e4ab go.abhg.dev/goldmark/anchor v0.2.0 diff --git a/go.sum b/go.sum index e299e03..3f2ae95 100644 --- a/go.sum +++ b/go.sum @@ -14,6 +14,8 @@ github.com/dlclark/regexp2 v1.7.0 h1:7lJfhqlPssTb1WQx4yvTHN0uElPEv52sbaECrAQxjAo github.com/dlclark/regexp2 v1.7.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= github.com/fundipper/goldmark-links v0.1.0 h1:T8k1+Utk/zirAgasOInXAaIEnOjtGkZQAWe69qYuhag= github.com/fundipper/goldmark-links v0.1.0/go.mod h1:e+zrEj9H4lRpN96WDuT6Uk3CjFDRJJi4isKMYbUzvBI= +github.com/goodsign/monday v1.0.2 h1:k8kRMkCRVfCTWOU4dRfRgneQsWlB1+mJd3MxG0lGLzQ= +github.com/goodsign/monday v1.0.2/go.mod h1:r4T4breXpoFwspQNM+u2sLxJb2zyTaxVGqUfTBjWOu8= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= diff --git a/templates/privacy.html b/templates/privacy.html index d1de9f6..ed4a220 100644 --- a/templates/privacy.html +++ b/templates/privacy.html @@ -8,6 +8,15 @@
{{.Content}} +
+

+ {{if (eq .Lang "pt-BR")}} + Última atualização: + {{else}} + Latest update: + {{end}} + {{.ChangeDate}} +

{{template "nav-bar" (args "Lang" .Lang)}} {{template "footer" (args "Lang" .Lang)}}