2025-05-29 11:49:16 +02:00

51 lines
1.4 KiB
Go

package manifest
import (
"net/http"
"github.com/pocketbase/pocketbase"
"github.com/pocketbase/pocketbase/core"
"github.com/pocketbase/pocketbase/tools/router"
)
type Manifest struct {
Name string `json:"name"`
ShortName string `json:"short_name"`
Description string `json:"description"`
Icons []Icon `json:"icons"`
StartURL string `json:"start_url"`
Display string `json:"display"`
BackgroundColor string `json:"background_color"`
ThemeColor string `json:"theme_color"`
Lang string `json:"lang"`
Author string `json:"author"`
OgHost string `json:"ogHost"`
Orientation string `json:"orientation"`
}
type Icon struct {
Src string `json:"src"`
Sizes string `json:"sizes"`
Type string `json:"type"`
}
func ServeManifst(app *pocketbase.PocketBase, se *core.ServeEvent) *router.Route[*core.RequestEvent] {
return se.Router.GET("/api/manifest.json", func(e *core.RequestEvent) error {
manifest, err := GetSettings(app)
if err != nil {
return err
}
e.Response.Header().Add("content-type", "application/json")
return e.String(http.StatusOK, manifest)
})
}
func GetSettings(app *pocketbase.PocketBase) (string, error) {
record, err := app.FindFirstRecordByFilter("settings", "key='manifest'", nil)
if err != nil {
return "", err
}
return record.GetString("value"), nil
}