diff --git a/internal/web/server/renderer.go b/internal/web/server/renderer.go index 2a6b840..65eaa25 100644 --- a/internal/web/server/renderer.go +++ b/internal/web/server/renderer.go @@ -15,6 +15,7 @@ import ( "strings" "time" + "github.com/dustin/go-humanize" "github.com/labstack/echo/v4" "github.com/rs/zerolog/log" "github.com/thomiceli/opengist/internal/config" @@ -175,6 +176,16 @@ func (s *Server) setFuncMap() { h, _ := strconv.ParseUint(strings.TrimPrefix(hex, "#"), 16, 32) return fmt.Sprintf("%d, %d, %d,", (h>>16)&0xFF, (h>>8)&0xFF, h&0xFF) }, + "humanTimeDiff": func(t int64) string { + return humanize.Time(time.Unix(t, 0)) + }, + "humanTimeDiffStr": func(timestamp string) string { + t, _ := strconv.ParseInt(timestamp, 10, 64) + return humanize.Time(time.Unix(t, 0)) + }, + "humanDate": func(t int64) string { + return time.Unix(t, 0).Format("02/01/2006 15:04") + }, } t := template.Must(template.New("t").Funcs(fm).ParseFS(templates.Files, "*/*.html")) diff --git a/package-lock.json b/package-lock.json index 546d71b..46d9cc8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,6 @@ "autoprefixer": "^10.4.14", "codemirror": "^6.0.1", "cssnano": "^5.1.15", - "dayjs": "^1.11.9", "github-markdown-css": "^5.5.0", "highlight.js": "^11.11.1", "jdenticon": "^3.3.0", @@ -1872,13 +1871,6 @@ "node": ">=8.0.0" } }, - "node_modules/dayjs": { - "version": "1.11.11", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.11.tgz", - "integrity": "sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==", - "dev": true, - "license": "MIT" - }, "node_modules/debug": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", diff --git a/package.json b/package.json index 8692362..d4cad62 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,6 @@ "autoprefixer": "^10.4.14", "codemirror": "^6.0.1", "cssnano": "^5.1.15", - "dayjs": "^1.11.9", "github-markdown-css": "^5.5.0", "highlight.js": "^11.11.1", "jdenticon": "^3.3.0", diff --git a/public/main.ts b/public/main.ts index 7fc2167..6dd8163 100644 --- a/public/main.ts +++ b/public/main.ts @@ -1,23 +1,8 @@ import './style.scss'; import './favicon-32.png'; import './opengist.svg'; -import dayjs from 'dayjs'; -import relativeTime from 'dayjs/plugin/relativeTime'; -import 'dayjs/locale/cs'; -import 'dayjs/locale/de'; -import 'dayjs/locale/es'; -import 'dayjs/locale/fr'; -import 'dayjs/locale/hu'; -import 'dayjs/locale/pt'; -import 'dayjs/locale/ru'; -import 'dayjs/locale/zh'; -import localizedFormat from 'dayjs/plugin/localizedFormat'; import jdenticon from 'jdenticon/standalone'; -dayjs.extend(relativeTime); -dayjs.extend(localizedFormat); -dayjs.locale(window.opengist_locale || 'en'); - jdenticon.update("[data-jdenticon-value]") document.addEventListener('DOMContentLoaded', () => { @@ -55,23 +40,13 @@ document.addEventListener('DOMContentLoaded', () => { document.getElementById('user-menu').classList.toggle('hidden'); }) - document.querySelectorAll('.moment-timestamp').forEach((e: HTMLElement) => { - e.title = dayjs.unix(parseInt(e.innerHTML)).format('LLLL'); - e.innerHTML = dayjs.unix(parseInt(e.innerHTML)).fromNow(); - }); - - document.querySelectorAll('.moment-timestamp-date').forEach((e: HTMLElement) => { - e.innerHTML = dayjs.unix(parseInt(e.innerHTML)).format('DD/MM/YYYY HH:mm'); - }); - document.querySelectorAll('form').forEach((form: HTMLFormElement) => { form.onsubmit = () => { form.querySelectorAll('input[type=datetime-local]').forEach((input: HTMLInputElement) => { - console.log(dayjs(input.value).unix()); const hiddenInput = document.createElement('input'); hiddenInput.type = 'hidden'; hiddenInput.name = 'expiredAtUnix' - hiddenInput.value = dayjs(input.value).unix().toString(); + hiddenInput.value = Math.floor(new Date(input.value).getTime() / 1000).toString(); form.appendChild(hiddenInput); }); return true; diff --git a/templates/base/gist_header.html b/templates/base/gist_header.html index 898260b..42d0d95 100644 --- a/templates/base/gist_header.html +++ b/templates/base/gist_header.html @@ -91,7 +91,7 @@ {{ if .gist.Forked }}

{{ .locale.Tr "gist.header.forked-from" }} {{ .gist.Forked.User.Username }}/{{ .gist.Forked.Title }}

{{ end }} -

{{ .locale.Tr "gist.header.last-active" }} {{ .gist.UpdatedAt }} +

{{ .locale.Tr "gist.header.last-active" }} {{ .gist.UpdatedAt | humanTimeDiff }} {{ if .gist.Private }} • {{ visibilityStr .gist.Private false }} {{ end }}

{{ .gist.Description }}

diff --git a/templates/pages/admin_gists.html b/templates/pages/admin_gists.html index 945d028..01c6923 100644 --- a/templates/pages/admin_gists.html +++ b/templates/pages/admin_gists.html @@ -26,7 +26,7 @@ {{ $gist.Private }} {{ $gist.NbFiles }} {{ $gist.NbLikes }} - {{ $gist.CreatedAt }} + {{ $gist.CreatedAt | humanDate }}
{{ $.csrfHtml }} diff --git a/templates/pages/admin_invitations.html b/templates/pages/admin_invitations.html index 7b43220..2c6bbe7 100644 --- a/templates/pages/admin_invitations.html +++ b/templates/pages/admin_invitations.html @@ -51,7 +51,7 @@ {{ end }} {{ $invitation.NbUsed }}/{{ $invitation.NbMax }} - {{ $invitation.ExpiresAt }} + {{ $invitation.ExpiresAt | humanDate }} {{ $.csrfHtml }} diff --git a/templates/pages/admin_users.html b/templates/pages/admin_users.html index a6b31af..0e5e95d 100644 --- a/templates/pages/admin_users.html +++ b/templates/pages/admin_users.html @@ -18,7 +18,7 @@ {{ $user.ID }} {{ $user.Username }} - {{ $user.CreatedAt }} + {{ $user.CreatedAt | humanDate }} {{ $.csrfHtml }} diff --git a/templates/pages/all.html b/templates/pages/all.html index b9c7be5..0714762 100644 --- a/templates/pages/all.html +++ b/templates/pages/all.html @@ -18,7 +18,7 @@

{{.fromUser.Username}}

-

{{ .locale.Tr "gist.list.joined" }} {{.fromUser.CreatedAt}}

+

{{ .locale.Tr "gist.list.joined" }} {{.fromUser.CreatedAt | humanTimeDiff}}

{{ else }} diff --git a/templates/pages/forks.html b/templates/pages/forks.html index 09f0ff3..94c2299 100644 --- a/templates/pages/forks.html +++ b/templates/pages/forks.html @@ -16,7 +16,7 @@
{{ $gist.User.Username }} -

{{ $.locale.Tr "gist.list.forked" }} {{ $gist.CreatedAt }}

+

{{ $.locale.Tr "gist.list.forked" }} {{ $gist.CreatedAt | humanTimeDiff }}

diff --git a/templates/pages/revisions.html b/templates/pages/revisions.html index de321c4..3dcb779 100644 --- a/templates/pages/revisions.html +++ b/templates/pages/revisions.html @@ -16,7 +16,7 @@ {{ else }} {{ end }} - {{if $user}}{{ $commit.AuthorName }}{{else}}{{ $commit.AuthorName }}{{end}} {{ $.locale.Tr "gist.revision.revised" }} {{ $commit.Timestamp }}. {{ $.locale.Tr "gist.revision.go-to-revision" }} + {{if $user}}{{ $commit.AuthorName }}{{else}}{{ $commit.AuthorName }}{{end}} {{ $.locale.Tr "gist.revision.revised" }} {{ $commit.Timestamp | humanTimeDiffStr }}. {{ $.locale.Tr "gist.revision.go-to-revision" }} {{ if ne $commit.Changed "" }}

diff --git a/templates/pages/settings_mfa.html b/templates/pages/settings_mfa.html index 16ec2c1..13db82e 100644 --- a/templates/pages/settings_mfa.html +++ b/templates/pages/settings_mfa.html @@ -63,11 +63,11 @@

{{ .Name }}

-

{{ $.locale.Tr "auth.mfa.passkey-added-at" }} {{ .CreatedAt }}

+

{{ $.locale.Tr "auth.mfa.passkey-added-at" }} {{ .CreatedAt | humanDate }}

{{ if eq .LastUsedAt 0 }}

{{ $.locale.Tr "auth.mfa.passkey-never-used" }}

{{ else }} -

{{ $.locale.Tr "auth.mfa.passkey-last-used" }} {{ .LastUsedAt }}

+

{{ $.locale.Tr "auth.mfa.passkey-last-used" }} {{ .LastUsedAt | humanTimeDiff }}

{{ end }}
diff --git a/templates/pages/settings_ssh.html b/templates/pages/settings_ssh.html index 18cf773..582f8e0 100644 --- a/templates/pages/settings_ssh.html +++ b/templates/pages/settings_ssh.html @@ -42,11 +42,11 @@

{{ .Title }}

SHA256:{{.SHA}}

-

{{ $.locale.Tr "settings.ssh-key-added-at" }} {{ .CreatedAt }}

+

{{ $.locale.Tr "settings.ssh-key-added-at" }} {{ .CreatedAt | humanDate }}

{{ if eq .LastUsedAt 0 }}

{{ $.locale.Tr "settings.ssh-key-never-used" }}

{{ else }} -

{{ $.locale.Tr "settings.ssh-key-last-used" }} {{ .LastUsedAt }}

+

{{ $.locale.Tr "settings.ssh-key-last-used" }} {{ .LastUsedAt | humanTimeDiff }}

{{ end }}
diff --git a/templates/partials/_gist_preview.html b/templates/partials/_gist_preview.html index 36e8dee..2d88b05 100644 --- a/templates/partials/_gist_preview.html +++ b/templates/partials/_gist_preview.html @@ -39,7 +39,7 @@
-
{{ .locale.Tr "gist.list.last-active" }} {{ .gist.UpdatedAt }} +
{{ .locale.Tr "gist.list.last-active" }} {{ .gist.UpdatedAt | humanTimeDiff }} {{ if .gist.Forked }} • {{ .locale.Tr "gist.list.forked-from" }} {{ .gist.Forked.User.Username }}/{{ .gist.Forked.Title }} {{ end }} {{ if .gist.Private }} • {{ visibilityStr .gist.Private false }} {{ end }}