- Add home_content setting for custom homepage (HTML or iframe URL) - Inject public settings into index.html to eliminate page flash - Support ETag caching with automatic invalidation on settings update - Add Vite plugin for dev mode settings injection - Refactor HomeView to use appStore instead of local API calls
49 lines
1.3 KiB
Go
49 lines
1.3 KiB
Go
//go:build !embed
|
|
|
|
// Package web provides embedded web assets for the application.
|
|
package web
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"net/http"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
// PublicSettingsProvider is an interface to fetch public settings
|
|
// This stub is needed for compilation when frontend is not embedded
|
|
type PublicSettingsProvider interface {
|
|
GetPublicSettingsForInjection(ctx context.Context) (interface{}, error)
|
|
}
|
|
|
|
// FrontendServer is a stub for non-embed builds
|
|
type FrontendServer struct{}
|
|
|
|
// NewFrontendServer returns an error when frontend is not embedded
|
|
func NewFrontendServer(settingsProvider PublicSettingsProvider) (*FrontendServer, error) {
|
|
return nil, errors.New("frontend not embedded")
|
|
}
|
|
|
|
// InvalidateCache is a no-op for non-embed builds
|
|
func (s *FrontendServer) InvalidateCache() {}
|
|
|
|
// Middleware returns a handler that returns 404 for non-embed builds
|
|
func (s *FrontendServer) Middleware() gin.HandlerFunc {
|
|
return func(c *gin.Context) {
|
|
c.String(http.StatusNotFound, "Frontend not embedded. Build with -tags embed to include frontend.")
|
|
c.Abort()
|
|
}
|
|
}
|
|
|
|
func ServeEmbeddedFrontend() gin.HandlerFunc {
|
|
return func(c *gin.Context) {
|
|
c.String(http.StatusNotFound, "Frontend not embedded. Build with -tags embed to include frontend.")
|
|
c.Abort()
|
|
}
|
|
}
|
|
|
|
func HasEmbeddedFrontend() bool {
|
|
return false
|
|
}
|