diff --git a/internal/web/server/renderer.go b/internal/web/server/renderer.go index 27d3fe2..8cd4905 100644 --- a/internal/web/server/renderer.go +++ b/internal/web/server/renderer.go @@ -92,10 +92,13 @@ func (s *Server) setFuncMap() { return "https://www.gravatar.com/avatar/" + user.MD5Hash + "?d=identicon&s=200" } - if s.dev { - return "http://localhost:16157/default.png" + return "" + }, + "shouldGenerateAvatar": func(user *db.User, noGravatar bool) bool { + if user == nil { + return true } - return config.C.ExternalUrl + "/" + context.ManifestEntries["default.png"].File + return user.AvatarURL == "" && (user.MD5Hash == "" || noGravatar) }, "asset": func(file string) string { if s.dev { @@ -113,12 +116,6 @@ func (s *Server) setFuncMap() { "dev": func() bool { return s.dev }, - "defaultAvatar": func() string { - if s.dev { - return "http://localhost:16157/default.png" - } - return config.C.ExternalUrl + "/" + context.ManifestEntries["default.png"].File - }, "visibilityStr": func(visibility db.Visibility, lowercase bool) string { s := "Public" switch visibility { diff --git a/package-lock.json b/package-lock.json index 263b9ca..95ad9ef 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,6 +19,7 @@ "cssnano": "^5.1.15", "dayjs": "^1.11.9", "github-markdown-css": "^5.5.0", + "jdenticon": "^3.3.0", "nodemon": "^2.0.22", "postcss": "^8.4.32", "postcss-cli": "^11.0.0", @@ -841,7 +842,6 @@ "integrity": "sha512-5cHBxFGJx6L4s56Bubp4fglrEpmyJypsqI6RgzMfBHWUJQGWAAi8cWcgetEbZXHYXo9C2Fa4EEds/uSyS4cxmA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "undici-types": "~5.26.4" } @@ -1348,6 +1348,16 @@ ], "license": "CC-BY-4.0" }, + "node_modules/canvas-renderer": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/canvas-renderer/-/canvas-renderer-2.2.1.tgz", + "integrity": "sha512-RrBgVL5qCEDIXpJ6NrzyRNoTnXxYarqm/cS/W6ERhUJts5UQtt/XPEosGN3rqUkZ4fjBArlnCbsISJ+KCFnIAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -2577,6 +2587,22 @@ "@pkgjs/parseargs": "^0.11.0" } }, + "node_modules/jdenticon": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/jdenticon/-/jdenticon-3.3.0.tgz", + "integrity": "sha512-DhuBRNRIybGPeAjMjdHbkIfiwZCCmf8ggu7C49jhp6aJ7DYsZfudnvnTY5/1vgUhrGA7JaDAx1WevnpjCPvaGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "canvas-renderer": "~2.2.0" + }, + "bin": { + "jdenticon": "bin/jdenticon.js" + }, + "engines": { + "node": ">=6.4.0" + } + }, "node_modules/jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", @@ -5904,8 +5930,7 @@ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/unicorn-magic": { "version": "0.1.0", diff --git a/package.json b/package.json index 92f05e2..51d6b55 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,7 @@ "cssnano": "^5.1.15", "dayjs": "^1.11.9", "github-markdown-css": "^5.5.0", + "jdenticon": "^3.3.0", "nodemon": "^2.0.22", "postcss": "^8.4.32", "postcss-cli": "^11.0.0", diff --git a/public/default.png b/public/default.png deleted file mode 100644 index af51e5d..0000000 Binary files a/public/default.png and /dev/null differ diff --git a/public/main.ts b/public/main.ts index e9934aa..0d54a2c 100644 --- a/public/main.ts +++ b/public/main.ts @@ -1,7 +1,6 @@ import './style.scss'; import './favicon-32.png'; import './opengist.svg'; -import './default.png'; import dayjs from 'dayjs'; import relativeTime from 'dayjs/plugin/relativeTime'; import 'dayjs/locale/cs'; @@ -13,11 +12,14 @@ 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', () => { const themeMenu = document.getElementById('theme-menu')!; diff --git a/templates/pages/all.html b/templates/pages/all.html index 2589340..7ad4bb7 100644 --- a/templates/pages/all.html +++ b/templates/pages/all.html @@ -6,7 +6,15 @@ {{if .fromUser}}
- {{ .fromuser.Username }}'s Avatar + {{ if not (shouldGenerateAvatar .fromUser .DisableGravatar) }} + {{ .fromuser.Username }}'s Avatar + {{ else }} + + + {{ end }}

{{.fromUser.Username}}

diff --git a/templates/pages/forks.html b/templates/pages/forks.html index 8978113..09f0ff3 100644 --- a/templates/pages/forks.html +++ b/templates/pages/forks.html @@ -8,7 +8,11 @@ {{ range $gist := .forks }}
  • + {{ if not (shouldGenerateAvatar $gist.User $.DisableGravatar) }} {{ $gist.User.Username }}'s Avatar + {{ else }} + + {{ end }}
    {{ $gist.User.Username }} diff --git a/templates/pages/likes.html b/templates/pages/likes.html index 3e16f4d..861d38d 100644 --- a/templates/pages/likes.html +++ b/templates/pages/likes.html @@ -6,7 +6,11 @@ {{ range $user := .likers }}
    - {{ $user.Username }}'s Avatar + {{ if not (shouldGenerateAvatar .fromUser $.DisableGravatar) }} + {{ $user.Username }}'s Avatar + {{ else }} + + {{ end }}

    {{ $user.Username }}

    diff --git a/templates/pages/revisions.html b/templates/pages/revisions.html index 5c30edf..9846c8f 100644 --- a/templates/pages/revisions.html +++ b/templates/pages/revisions.html @@ -11,7 +11,11 @@ {{ $user := (index $.emails $commit.AuthorEmail) }} - + {{ if not (shouldGenerateAvatar $user $.DisableGravatar) }} + + {{ 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 ne $commit.Changed "" }}

    diff --git a/templates/partials/_gist_preview.html b/templates/partials/_gist_preview.html index c68e21f..dc57511 100644 --- a/templates/partials/_gist_preview.html +++ b/templates/partials/_gist_preview.html @@ -5,7 +5,11 @@