feat: serve assets from root
3 files changed, 15 insertions(+), 8 deletions(-)
M frontend/assets.go → frontend/assets.go
@@ -12,9 +12,10 @@ "github.com/Southclaws/fault/fmsg" ) type Asset struct { - URL string - ETag string - Filename string + StaticURL string + URL string + ETag string + Filename string } type AssetCollection struct {@@ -50,10 +51,16 @@ if _, err := io.Copy(hash, file); err != nil { return nil, fault.Wrap(err, fmsg.Withf("could not hash file %s", filename)) } + rel, err := filepath.Rel("static", filename) + if err != nil { + return nil, fault.Wrap(err, fmsg.Withf("could not get relative path for %s", filename)) + } + return &Asset{ - URL: "/" + filename, - ETag: fmt.Sprintf(`W/"%x"`, hash.Sum(nil)), - Filename: filename, + StaticURL: "/" + filename, + URL: "/" + rel, + ETag: fmt.Sprintf(`W/"%x"`, hash.Sum(nil)), + Filename: filename, }, nil }@@ -78,6 +85,7 @@ case ".css": a.Stylesheets = append(a.Stylesheets, asset) } a.ByPath[asset.URL] = asset + a.ByPath[asset.StaticURL] = asset } return nil
M internal/components/page.go → internal/components/page.go
@@ -21,7 +21,6 @@ Meta(Name("viewport"), Content("width=device-width, initial-scale=1")), TitleEl(g.Text("Searchix"), g.If(config.DevMode, g.Text(" (Dev)"))), g.Map(tdata.Assets.Stylesheets, css), g.Raw(tdata.ExtraHeadHTML), - Link(Rel("icon"), Href("/static/favicon.ico")), g.If(len(tdata.Sources) > 0, Link( Rel("search"),
M internal/server/mux.go → internal/server/mux.go
@@ -366,7 +366,7 @@ ) } }) - mux.HandleFunc("/static/", func(w http.ResponseWriter, r *http.Request) { + mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { asset, found := assets.ByPath[r.URL.Path] if !found { http.Error(w, http.StatusText(http.StatusNotFound), http.StatusNotFound)