Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
Vanessa 2025-09-04 10:30:18 +08:00
commit 868c9d980a
4 changed files with 29 additions and 24 deletions

View file

@ -35,9 +35,9 @@ func loadPetals(c *gin.Context) {
}
frontend := arg["frontend"].(string)
isPublish := model.IsReadOnlyRole(model.GetGinContextRole(c))
petals := model.LoadPetals(frontend)
ret.Data = petals
ret.Data = model.LoadPetals(frontend, isPublish)
}
func setPetalEnabled(c *gin.Context) {

View file

@ -99,17 +99,18 @@ type Funding struct {
}
type Package struct {
Author string `json:"author"`
URL string `json:"url"`
Version string `json:"version"`
MinAppVersion string `json:"minAppVersion"`
Backends []string `json:"backends"`
Frontends []string `json:"frontends"`
DisplayName *DisplayName `json:"displayName"`
Description *Description `json:"description"`
Readme *Readme `json:"readme"`
Funding *Funding `json:"funding"`
Keywords []string `json:"keywords"`
Author string `json:"author"`
URL string `json:"url"`
Version string `json:"version"`
MinAppVersion string `json:"minAppVersion"`
DisabledInPublish bool `json:"disabledInPublish"`
Backends []string `json:"backends"`
Frontends []string `json:"frontends"`
DisplayName *DisplayName `json:"displayName"`
Description *Description `json:"description"`
Readme *Readme `json:"readme"`
Funding *Funding `json:"funding"`
Keywords []string `json:"keywords"`
PreferredFunding string `json:"preferredFunding"`
PreferredName string `json:"preferredName"`
@ -875,9 +876,10 @@ func getBazaarIndex() map[string]*bazaarPackage {
const defaultMinAppVersion = "2.9.0"
func disallowDisplayBazaarPackage(pkg *Package) bool {
if "" == pkg.MinAppVersion { // TODO: 目前暂时放过所有不带 minAppVersion 的集市包,后续版本会使用 defaultMinAppVersion
return false
if "" == pkg.MinAppVersion {
pkg.MinAppVersion = defaultMinAppVersion
}
if 0 < semver.Compare("v"+pkg.MinAppVersion, "v"+util.Ver) {
return true
}

View file

@ -134,7 +134,7 @@ func Plugins(frontend string) (plugins []*Plugin) {
return
}
func ParseInstalledPlugin(name, frontend string) (found bool, displayName string, incompatible bool) {
func ParseInstalledPlugin(name, frontend string) (found bool, displayName string, incompatible, disabledInPublish bool) {
pluginsPath := filepath.Join(util.DataDir, "plugins")
if !util.IsPathRegularDirOrSymlinkDir(pluginsPath) {
return
@ -163,6 +163,7 @@ func ParseInstalledPlugin(name, frontend string) (found bool, displayName string
found = true
displayName = GetPreferredName(plugin.Package)
incompatible = isIncompatiblePlugin(plugin, frontend)
disabledInPublish = plugin.DisabledInPublish
}
return
}

View file

@ -31,10 +31,11 @@ import (
// Petal represents a plugin's management status.
type Petal struct {
Name string `json:"name"` // Plugin name
DisplayName string `json:"displayName"` // Plugin display name
Enabled bool `json:"enabled"` // Whether enabled
Incompatible bool `json:"incompatible"` // Whether incompatible
Name string `json:"name"` // Plugin name
DisplayName string `json:"displayName"` // Plugin display name
Enabled bool `json:"enabled"` // Whether enabled
Incompatible bool `json:"incompatible"` // Whether incompatible
DisabledInPublish bool `json:"disabledInPublish"` // Whether disabled in publish mode
JS string `json:"js"` // JS code
CSS string `json:"css"` // CSS code
@ -44,7 +45,7 @@ type Petal struct {
func SetPetalEnabled(name string, enabled bool, frontend string) (ret *Petal, err error) {
petals := getPetals()
found, displayName, incompatible := bazaar.ParseInstalledPlugin(name, frontend)
found, displayName, incompatible, disabledInPublish := bazaar.ParseInstalledPlugin(name, frontend)
if !found {
logging.LogErrorf("plugin [%s] not found", name)
return
@ -60,6 +61,7 @@ func SetPetalEnabled(name string, enabled bool, frontend string) (ret *Petal, er
ret.DisplayName = displayName
ret.Enabled = enabled
ret.Incompatible = incompatible
ret.DisabledInPublish = disabledInPublish
if incompatible {
err = fmt.Errorf(Conf.Language(205))
@ -72,7 +74,7 @@ func SetPetalEnabled(name string, enabled bool, frontend string) (ret *Petal, er
return
}
func LoadPetals(frontend string) (ret []*Petal) {
func LoadPetals(frontend string, isPublish bool) (ret []*Petal) {
ret = []*Petal{}
if Conf.Bazaar.PetalDisabled {
@ -93,8 +95,8 @@ func LoadPetals(frontend string) (ret []*Petal) {
continue
}
_, petal.DisplayName, petal.Incompatible = bazaar.ParseInstalledPlugin(petal.Name, frontend)
if !petal.Enabled || petal.Incompatible {
_, petal.DisplayName, petal.Incompatible, petal.DisabledInPublish = bazaar.ParseInstalledPlugin(petal.Name, frontend)
if !petal.Enabled || petal.Incompatible || (isPublish && petal.DisabledInPublish) {
continue
}