Auto detect favicon type and add fallback

This commit is contained in:
Svilen Markov 2025-05-05 11:03:30 +01:00
parent 176f14df70
commit 26ab9c7b05
3 changed files with 14 additions and 6 deletions

View File

@ -50,6 +50,7 @@ type config struct {
LogoText string `yaml:"logo-text"`
LogoURL string `yaml:"logo-url"`
FaviconURL string `yaml:"favicon-url"`
FaviconType string `yaml:"-"`
AppName string `yaml:"app-name"`
AppIconURL string `yaml:"app-icon-url"`
AppBackgroundColor string `yaml:"app-background-color"`

View File

@ -127,11 +127,17 @@ func newApplication(c *config) (*application, error) {
config.Theme.CustomCSSFile = app.resolveUserDefinedAssetPath(config.Theme.CustomCSSFile)
config.Branding.LogoURL = app.resolveUserDefinedAssetPath(config.Branding.LogoURL)
if config.Branding.FaviconURL == "" {
config.Branding.FaviconURL = app.StaticAssetPath("favicon.png")
} else {
config.Branding.FaviconURL = app.resolveUserDefinedAssetPath(config.Branding.FaviconURL)
}
config.Branding.FaviconURL = ternary(
config.Branding.FaviconURL == "",
app.StaticAssetPath("favicon.svg"),
app.resolveUserDefinedAssetPath(config.Branding.FaviconURL),
)
config.Branding.FaviconType = ternary(
strings.HasSuffix(config.Branding.FaviconURL, ".svg"),
"image/svg+xml",
"image/png",
)
if config.Branding.AppName == "" {
config.Branding.AppName = "Glance"

View File

@ -21,7 +21,8 @@
<meta name="theme-color" content="{{ .Request.Theme.BackgroundColorAsHex }}">
<link rel="apple-touch-icon" sizes="512x512" href='{{ .App.Config.Branding.AppIconURL }}'>
<link rel="manifest" href='{{ .App.VersionedAssetPath "manifest.json" }}'>
<link rel="icon" type="image/png" href="{{ .App.Config.Branding.FaviconURL }}" />
<link rel="icon" type="image/png" href='{{ .App.StaticAssetPath "favicon.png" }}' />
<link rel="icon" type="{{ .App.Config.Branding.FaviconType }}" href="{{ .App.Config.Branding.FaviconURL }}" />
<link rel="stylesheet" href='{{ .App.StaticAssetPath "css/bundle.css" }}'>
<script type="module" src='{{ .App.StaticAssetPath "js/main.js" }}'></script>
<style id="theme-style">