From c1b70e4515765dac38adf010c7bdff10bd5dfc09 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Sat, 8 Mar 2025 11:51:35 +0800 Subject: [PATCH] :art: Improve marketplace package loading https://github.com/siyuan-note/siyuan/issues/13950 --- kernel/bazaar/icon.go | 11 +++++++++++ kernel/bazaar/plugin.go | 10 ++++++++++ kernel/bazaar/template.go | 11 +++++++++++ kernel/bazaar/theme.go | 11 +++++++++++ kernel/bazaar/widget.go | 10 ++++++++++ 5 files changed, 53 insertions(+) diff --git a/kernel/bazaar/icon.go b/kernel/bazaar/icon.go index d0dda33eb..b35c68dd8 100644 --- a/kernel/bazaar/icon.go +++ b/kernel/bazaar/icon.go @@ -47,6 +47,11 @@ func Icons() (icons []*Icon) { return } bazaarIndex := getBazaarIndex() + if 1 > len(bazaarIndex) { + return + } + + requestFailed := false waitGroup := &sync.WaitGroup{} lock := &sync.Mutex{} p, _ := ants.NewPoolWithFunc(2, func(arg interface{}) { @@ -62,15 +67,21 @@ func Icons() (icons []*Icon) { return } + if requestFailed { + return + } + icon := &Icon{} innerU := util.BazaarOSSServer + "/package/" + repoURL + "/icon.json" innerResp, innerErr := httpclient.NewBrowserRequest().SetSuccessResult(icon).Get(innerU) if nil != innerErr { logging.LogErrorf("get bazaar package [%s] failed: %s", repoURL, innerErr) + requestFailed = true return } if 200 != innerResp.StatusCode { logging.LogErrorf("get bazaar package [%s] failed: %d", innerU, innerResp.StatusCode) + requestFailed = true return } diff --git a/kernel/bazaar/plugin.go b/kernel/bazaar/plugin.go index 1689ec6d4..e5ff0ea23 100644 --- a/kernel/bazaar/plugin.go +++ b/kernel/bazaar/plugin.go @@ -49,7 +49,11 @@ func Plugins(frontend string) (plugins []*Plugin) { return } bazaarIndex := getBazaarIndex() + if 1 > len(bazaarIndex) { + return + } + requestFailed := false waitGroup := &sync.WaitGroup{} lock := &sync.Mutex{} p, _ := ants.NewPoolWithFunc(8, func(arg interface{}) { @@ -65,15 +69,21 @@ func Plugins(frontend string) (plugins []*Plugin) { return } + if requestFailed { + return + } + plugin := &Plugin{} innerU := util.BazaarOSSServer + "/package/" + repoURL + "/plugin.json" innerResp, innerErr := httpclient.NewBrowserRequest().SetSuccessResult(plugin).Get(innerU) if nil != innerErr { logging.LogErrorf("get bazaar package [%s] failed: %s", repoURL, innerErr) + requestFailed = true return } if 200 != innerResp.StatusCode { logging.LogErrorf("get bazaar package [%s] failed: %d", innerU, innerResp.StatusCode) + requestFailed = true return } diff --git a/kernel/bazaar/template.go b/kernel/bazaar/template.go index 2b61a3224..68dd89a42 100644 --- a/kernel/bazaar/template.go +++ b/kernel/bazaar/template.go @@ -48,6 +48,11 @@ func Templates() (templates []*Template) { return } bazaarIndex := getBazaarIndex() + if 1 > len(bazaarIndex) { + return + } + + requestFailed := false waitGroup := &sync.WaitGroup{} lock := &sync.Mutex{} p, _ := ants.NewPoolWithFunc(2, func(arg interface{}) { @@ -63,15 +68,21 @@ func Templates() (templates []*Template) { return } + if requestFailed { + return + } + template := &Template{} innerU := util.BazaarOSSServer + "/package/" + repoURL + "/template.json" innerResp, innerErr := httpclient.NewBrowserRequest().SetSuccessResult(template).Get(innerU) if nil != innerErr { logging.LogErrorf("get community template [%s] failed: %s", repoURL, innerErr) + requestFailed = true return } if 200 != innerResp.StatusCode { logging.LogErrorf("get bazaar package [%s] failed: %d", innerU, innerResp.StatusCode) + requestFailed = true return } diff --git a/kernel/bazaar/theme.go b/kernel/bazaar/theme.go index 5d29ceebd..b60284bec 100644 --- a/kernel/bazaar/theme.go +++ b/kernel/bazaar/theme.go @@ -49,6 +49,11 @@ func Themes() (ret []*Theme) { return } bazaarIndex := getBazaarIndex() + if 1 > len(bazaarIndex) { + return + } + + requestFailed := false waitGroup := &sync.WaitGroup{} lock := &sync.Mutex{} p, _ := ants.NewPoolWithFunc(8, func(arg interface{}) { @@ -64,15 +69,21 @@ func Themes() (ret []*Theme) { return } + if requestFailed { + return + } + theme := &Theme{} innerU := util.BazaarOSSServer + "/package/" + repoURL + "/theme.json" innerResp, innerErr := httpclient.NewBrowserRequest().SetSuccessResult(theme).Get(innerU) if nil != innerErr { logging.LogErrorf("get bazaar package [%s] failed: %s", innerU, innerErr) + requestFailed = true return } if 200 != innerResp.StatusCode { logging.LogErrorf("get bazaar package [%s] failed: %d", innerU, innerResp.StatusCode) + requestFailed = true return } diff --git a/kernel/bazaar/widget.go b/kernel/bazaar/widget.go index 6a4c17459..178bbf1a7 100644 --- a/kernel/bazaar/widget.go +++ b/kernel/bazaar/widget.go @@ -47,7 +47,11 @@ func Widgets() (widgets []*Widget) { return } bazaarIndex := getBazaarIndex() + if 1 > len(bazaarIndex) { + return + } + requestFailed := false waitGroup := &sync.WaitGroup{} lock := &sync.Mutex{} p, _ := ants.NewPoolWithFunc(8, func(arg interface{}) { @@ -63,15 +67,21 @@ func Widgets() (widgets []*Widget) { return } + if requestFailed { + return + } + widget := &Widget{} innerU := util.BazaarOSSServer + "/package/" + repoURL + "/widget.json" innerResp, innerErr := httpclient.NewBrowserRequest().SetSuccessResult(widget).Get(innerU) if nil != innerErr { logging.LogErrorf("get bazaar package [%s] failed: %s", repoURL, innerErr) + requestFailed = true return } if 200 != innerResp.StatusCode { logging.LogErrorf("get bazaar package [%s] failed: %d", innerU, innerResp.StatusCode) + requestFailed = true return }