Преглед на файлове

:art: Brand new marketplace UI https://github.com/siyuan-note/siyuan/issues/8181

Liang Ding преди 2 години
родител
ревизия
2d559a943d
променени са 4 файла, в които са добавени 49 реда и са изтрити 6 реда
  1. 1 0
      app/src/config/bazaar.ts
  2. 2 1
      kernel/api/bazaar.go
  3. 44 3
      kernel/bazaar/package.go
  4. 2 2
      kernel/model/bazzar.go

+ 1 - 0
app/src/config/bazaar.ts

@@ -376,6 +376,7 @@ export const bazaar = {
             fetchPost("/api/bazaar/getBazaarPackageREAME", {
                 repoURL: data.repoURL,
                 repoHash: data.repoHash,
+                packageType: bazaarType
             }, response => {
                 const mdElement = readmeElement.querySelector(".item__readme");
                 mdElement.innerHTML = response.data.html;

+ 2 - 1
kernel/api/bazaar.go

@@ -36,8 +36,9 @@ func getBazaarPackageREAME(c *gin.Context) {
 
 	repoURL := arg["repoURL"].(string)
 	repoHash := arg["repoHash"].(string)
+	packageType := arg["packageType"].(string)
 	ret.Data = map[string]interface{}{
-		"html": model.GetPackageREADME(repoURL, repoHash),
+		"html": model.GetPackageREADME(repoURL, repoHash, packageType),
 	}
 }
 

+ 44 - 3
kernel/bazaar/package.go

@@ -117,6 +117,29 @@ type StageIndex struct {
 	Repos []*StageRepo `json:"repos"`
 }
 
+func getPreferredReadme(readme *Readme) string {
+	if nil == readme {
+		return "README.md"
+	}
+
+	ret := readme.Default
+	switch util.Lang {
+	case "zh_CN":
+		if "" != readme.ZhCN {
+			ret = readme.ZhCN
+		}
+	case "en_US":
+		if "" != readme.EnUS {
+			ret = readme.EnUS
+		}
+	default:
+		if "" != readme.EnUS {
+			ret = readme.EnUS
+		}
+	}
+	return ret
+}
+
 func getPreferredDesc(desc *Description) string {
 	if nil == desc {
 		return ""
@@ -400,10 +423,28 @@ func isOutdatedTemplate(template *Template, bazaarTemplates []*Template) bool {
 	return false
 }
 
-func GetPackageREADME(repoURL, repoHash string, systemID string) (ret string) {
+func GetPackageREADME(repoURL, repoHash, packageType string) (ret string) {
 	repoURLHash := repoURL + "@" + repoHash
 
-	data, err := downloadPackage(repoURLHash+"/README.md", false, systemID)
+	stageIndex := cachedStageIndex[packageType]
+	if nil == stageIndex {
+		return
+	}
+
+	var repo *StageRepo
+	for _, r := range stageIndex.Repos {
+		if r.URL == repoURLHash {
+			repo = r
+			break
+		}
+	}
+	if nil == repo {
+		return
+	}
+
+	readme := getPreferredReadme(repo.Package.Readme)
+
+	data, err := downloadPackage(repoURLHash+"/"+readme, false, "")
 	if nil != err {
 		ret = "Load bazaar package's README.md failed: " + err.Error()
 		return
@@ -472,7 +513,7 @@ func downloadPackage(repoURLHash string, pushProgress bool, systemID string) (da
 }
 
 func incPackageDownloads(repoURLHash, systemID string) {
-	if strings.Contains(repoURLHash, ".md") {
+	if strings.Contains(repoURLHash, ".md") || "" == systemID {
 		return
 	}
 

+ 2 - 2
kernel/model/bazzar.go

@@ -27,8 +27,8 @@ import (
 	"github.com/siyuan-note/siyuan/kernel/bazaar"
 )
 
-func GetPackageREADME(repoURL, repoHash string) (ret string) {
-	ret = bazaar.GetPackageREADME(repoURL, repoHash, Conf.System.ID)
+func GetPackageREADME(repoURL, repoHash, packageType string) (ret string) {
+	ret = bazaar.GetPackageREADME(repoURL, repoHash, packageType)
 	return
 }