1
0
Fork 0
forked from jriou/coller

feat: add expiration time in the note web view

Fixes #35.

Signed-off-by: Julien Riou <julien@riou.xyz>
This commit is contained in:
Julien Riou 2025-09-22 17:11:54 +02:00
commit 634326190c
Signed by: jriou
GPG key ID: 9A099EDA51316854
3 changed files with 17 additions and 1 deletions

View file

@ -9,6 +9,7 @@ import (
"path/filepath" "path/filepath"
"regexp" "regexp"
"strings" "strings"
"time"
) )
func ReadConfig(file string, config interface{}) error { func ReadConfig(file string, config interface{}) error {
@ -102,6 +103,15 @@ func HumanDuration(i int) string {
return fmt.Sprintf("%d %s", i, w) return fmt.Sprintf("%d %s", i, w)
} }
// TimeDiff to return the number of seconds between this time and now
func TimeDiff(ts time.Time) int {
diff := int(time.Since(ts).Seconds())
if diff < 0 {
return diff * -1
}
return diff
}
func ReturnError(logger *slog.Logger, message string, err error) int { func ReturnError(logger *slog.Logger, message string, err error) int {
if err != nil { if err != nil {
logger.Error(message, slog.Any("error", err)) logger.Error(message, slog.Any("error", err))

View file

@ -106,6 +106,7 @@ func (s *Server) Start() error {
// Web pages // Web pages
funcs := template.FuncMap{ funcs := template.FuncMap{
"HumanDuration": internal.HumanDuration, "HumanDuration": internal.HumanDuration,
"TimeDiff": internal.TimeDiff,
"lower": strings.ToLower, "lower": strings.ToLower,
"string": func(b []byte) string { return string(b) }, "string": func(b []byte) string { return string(b) },
} }

View file

@ -19,13 +19,18 @@
<div class="d-flex flex-wrap py-2"> <div class="d-flex flex-wrap py-2">
<span class="fs-4 d-flex mb-3 mb-md-0 me-md-auto text-decoration-none">Note {{.Note.ID}}</span> <span class="fs-4 d-flex mb-3 mb-md-0 me-md-auto text-decoration-none">Note {{.Note.ID}}</span>
<ul class="nav nav-pills align-items-center"> <ul class="nav nav-pills align-items-center">
<li class="nav-item"> <li class="nav-item px-2">
<a href="" id="rawURL">raw</a> <a href="" id="rawURL">raw</a>
<script>document.getElementById("rawURL").href = window.location.href.replace(".html", "");</script> <script>document.getElementById("rawURL").href = window.location.href.replace(".html", "");</script>
</li> </li>
<li class="nav-item px-2"> <li class="nav-item px-2">
{{.Note.Language}} {{.Note.Language}}
</li> </li>
{{if eq .Note.DeleteAfterRead false}}
<li class="nav-item px-2">
expires in {{HumanDuration (TimeDiff .Note.ExpiresAt)}}
</li>
{{end}}
</ul> </ul>
</div> </div>
<div class="row"> <div class="row">