From 2d559a943d382b3730edc65a123fea3fceb0fa17 Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Fri, 5 May 2023 23:28:50 +0800 Subject: [PATCH] :art: Brand new marketplace UI https://github.com/siyuan-note/siyuan/issues/8181 --- app/src/config/bazaar.ts | 1 + kernel/api/bazaar.go | 3 ++- kernel/bazaar/package.go | 47 +++++++++++++++++++++++++++++++++++++--- kernel/model/bazzar.go | 4 ++-- 4 files changed, 49 insertions(+), 6 deletions(-) diff --git a/app/src/config/bazaar.ts b/app/src/config/bazaar.ts index 56ce31509..3e7529e1f 100644 --- a/app/src/config/bazaar.ts +++ b/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; diff --git a/kernel/api/bazaar.go b/kernel/api/bazaar.go index 62087f010..38bf7febe 100644 --- a/kernel/api/bazaar.go +++ b/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), } } diff --git a/kernel/bazaar/package.go b/kernel/bazaar/package.go index 3f988b514..1d721bccc 100644 --- a/kernel/bazaar/package.go +++ b/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 } diff --git a/kernel/model/bazzar.go b/kernel/model/bazzar.go index 9eae7ef3f..3647a6c07 100644 --- a/kernel/model/bazzar.go +++ b/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 }