From 58a29ec5704a72f342b242efc79d1f0b16da2c64 Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Wed, 4 Jan 2023 14:07:19 +0800 Subject: [PATCH 1/3] =?UTF-8?q?:sparkles:=20=E5=88=86=E4=BA=AB=E6=96=87?= =?UTF-8?q?=E6=A1=A3=E5=88=B0=E9=93=BE=E6=BB=B4=20https://github.com/siyua?= =?UTF-8?q?n-note/siyuan/issues/2004?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kernel/model/assets.go | 56 ++++++++++++++++++++++-------------------- 1 file changed, 29 insertions(+), 27 deletions(-) diff --git a/kernel/model/assets.go b/kernel/model/assets.go index 78914d245..c483503fb 100644 --- a/kernel/model/assets.go +++ b/kernel/model/assets.go @@ -292,37 +292,39 @@ const ( // uploadAssets2Cloud 将资源文件上传到云端图床。 func uploadAssets2Cloud(sqlAssets []*sql.Asset, bizType string) (err error) { - syncedAssets := readWorkspaceAssets() - var unSyncAssets []string - for _, sqlAsset := range sqlAssets { - if !gulu.Str.Contains(sqlAsset.Path, syncedAssets) && strings.Contains(sqlAsset.Path, "assets/") { - unSyncAssets = append(unSyncAssets, sqlAsset.Path) - } - } - - if 1 > len(unSyncAssets) { - return - } - var uploadAbsAssets []string - for _, asset := range unSyncAssets { - var absPath string - absPath, err = GetAssetAbsPath(asset) - if nil != err { - logging.LogWarnf("get asset [%s] abs path failed: %s", asset, err) - return + if bizTypeUploadAssets == bizType { // 只有上传资源文件到图床时才需要判断是否已经上传过 + syncedAssets := readWorkspaceAssets() + var unSyncAssets []string + for _, sqlAsset := range sqlAssets { + if !gulu.Str.Contains(sqlAsset.Path, syncedAssets) && strings.Contains(sqlAsset.Path, "assets/") { + unSyncAssets = append(unSyncAssets, sqlAsset.Path) + } } - if "" == absPath { - logging.LogErrorf("not found asset [%s]", asset) - err = errors.New(fmt.Sprintf(Conf.Language(12), asset)) + + if 1 > len(unSyncAssets) { return } - uploadAbsAssets = append(uploadAbsAssets, absPath) - } + for _, asset := range unSyncAssets { + var absPath string + absPath, err = GetAssetAbsPath(asset) + if nil != err { + logging.LogWarnf("get asset [%s] abs path failed: %s", asset, err) + return + } + if "" == absPath { + logging.LogErrorf("not found asset [%s]", asset) + err = errors.New(fmt.Sprintf(Conf.Language(12), asset)) + return + } - if 1 > len(uploadAbsAssets) { - return + uploadAbsAssets = append(uploadAbsAssets, absPath) + } + + if 1 > len(uploadAbsAssets) { + return + } } uploadAbsAssets = gulu.Str.RemoveDuplicatedElem(uploadAbsAssets) @@ -399,8 +401,8 @@ func uploadAssets2Cloud(sqlAssets []*sql.Asset, bizType string) (err error) { } util.PushClearMsg(msgId) - if 0 < len(completedUploadAssets) { - syncedAssets = readWorkspaceAssets() + if bizTypeUploadAssets == bizType && 0 < len(completedUploadAssets) { + syncedAssets := readWorkspaceAssets() logging.LogInfof("uploaded [%d] assets", len(completedUploadAssets)) for _, completedSyncAsset := range completedUploadAssets { syncedAssets = append(syncedAssets, completedSyncAsset) From 489f50a9b2f367d6c326e4233019375d8ec1c4ca Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Wed, 4 Jan 2023 14:20:02 +0800 Subject: [PATCH 2/3] =?UTF-8?q?:art:=20`=E4=B8=8A=E4=BC=A0=E8=B5=84?= =?UTF-8?q?=E6=BA=90=E6=96=87=E4=BB=B6=E5=88=B0=E5=9B=BE=E5=BA=8A`=20?= =?UTF-8?q?=E6=AF=8F=E6=AC=A1=E9=83=BD=E5=85=A8=E9=87=8F=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?=E5=88=B7=E6=96=B0=20CDN=20https://github.com/siyuan-note/siyua?= =?UTF-8?q?n/issues/6985?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kernel/model/assets.go | 92 ++++++------------------------------------ 1 file changed, 13 insertions(+), 79 deletions(-) diff --git a/kernel/model/assets.go b/kernel/model/assets.go index c483503fb..61e363621 100644 --- a/kernel/model/assets.go +++ b/kernel/model/assets.go @@ -293,41 +293,25 @@ const ( // uploadAssets2Cloud 将资源文件上传到云端图床。 func uploadAssets2Cloud(sqlAssets []*sql.Asset, bizType string) (err error) { var uploadAbsAssets []string - if bizTypeUploadAssets == bizType { // 只有上传资源文件到图床时才需要判断是否已经上传过 - syncedAssets := readWorkspaceAssets() - var unSyncAssets []string - for _, sqlAsset := range sqlAssets { - if !gulu.Str.Contains(sqlAsset.Path, syncedAssets) && strings.Contains(sqlAsset.Path, "assets/") { - unSyncAssets = append(unSyncAssets, sqlAsset.Path) - } - } - - if 1 > len(unSyncAssets) { + for _, asset := range sqlAssets { + var absPath string + absPath, err = GetAssetAbsPath(asset.Path) + if nil != err { + logging.LogWarnf("get asset [%s] abs path failed: %s", asset, err) return } - - for _, asset := range unSyncAssets { - var absPath string - absPath, err = GetAssetAbsPath(asset) - if nil != err { - logging.LogWarnf("get asset [%s] abs path failed: %s", asset, err) - return - } - if "" == absPath { - logging.LogErrorf("not found asset [%s]", asset) - err = errors.New(fmt.Sprintf(Conf.Language(12), asset)) - return - } - - uploadAbsAssets = append(uploadAbsAssets, absPath) + if "" == absPath { + logging.LogErrorf("not found asset [%s]", asset) + continue } - if 1 > len(uploadAbsAssets) { - return - } + uploadAbsAssets = append(uploadAbsAssets, absPath) } uploadAbsAssets = gulu.Str.RemoveDuplicatedElem(uploadAbsAssets) + if 1 > len(uploadAbsAssets) { + return + } logging.LogInfof("uploading [%d] assets", len(uploadAbsAssets)) msgId := util.PushMsg(fmt.Sprintf(Conf.Language(27), len(uploadAbsAssets)), 3000) @@ -401,62 +385,12 @@ func uploadAssets2Cloud(sqlAssets []*sql.Asset, bizType string) (err error) { } util.PushClearMsg(msgId) - if bizTypeUploadAssets == bizType && 0 < len(completedUploadAssets) { - syncedAssets := readWorkspaceAssets() + if 0 < len(completedUploadAssets) { logging.LogInfof("uploaded [%d] assets", len(completedUploadAssets)) - for _, completedSyncAsset := range completedUploadAssets { - syncedAssets = append(syncedAssets, completedSyncAsset) - } - saveWorkspaceAssets(syncedAssets) } return } -func readWorkspaceAssets() (ret []string) { - ret = []string{} - confDir := filepath.Join(util.DataDir, "assets", ".siyuan") - if err := os.MkdirAll(confDir, 0755); nil != err { - logging.LogErrorf("create assets conf dir [%s] failed: %s", confDir, err) - return - } - confPath := filepath.Join(confDir, "assets.json") - if !gulu.File.IsExist(confPath) { - return - } - - data, err := os.ReadFile(confPath) - if nil != err { - logging.LogErrorf("read assets conf failed: %s", err) - return - } - if err = gulu.JSON.UnmarshalJSON(data, &ret); nil != err { - logging.LogErrorf("parse assets conf failed: %s, re-init it", err) - return - } - return -} - -func saveWorkspaceAssets(assets []string) { - confDir := filepath.Join(util.DataDir, "assets", ".siyuan") - if err := os.MkdirAll(confDir, 0755); nil != err { - logging.LogErrorf("create assets conf dir [%s] failed: %s", confDir, err) - return - } - confPath := filepath.Join(confDir, "assets.json") - - assets = gulu.Str.RemoveDuplicatedElem(assets) - sort.Strings(assets) - data, err := gulu.JSON.MarshalIndentJSON(assets, "", " ") - if nil != err { - logging.LogErrorf("create assets conf failed: %s", err) - return - } - if err = filelock.WriteFile(confPath, data); nil != err { - logging.LogErrorf("write assets conf failed: %s", err) - return - } -} - func RemoveUnusedAssets() (ret []string) { msgId := util.PushMsg(Conf.Language(100), 30*1000) defer func() { From 542c43d4b5b0e22672cc7ae1dcf6b127d68c2f0e Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Wed, 4 Jan 2023 14:27:43 +0800 Subject: [PATCH 3/3] =?UTF-8?q?:art:=20`=E4=B8=8A=E4=BC=A0=E8=B5=84?= =?UTF-8?q?=E6=BA=90=E6=96=87=E4=BB=B6=E5=88=B0=E5=9B=BE=E5=BA=8A`=20?= =?UTF-8?q?=E6=AF=8F=E6=AC=A1=E9=83=BD=E5=85=A8=E9=87=8F=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?=E5=88=B7=E6=96=B0=20CDN=20https://github.com/siyuan-note/siyua?= =?UTF-8?q?n/issues/6985?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kernel/model/conf.go | 1 + 1 file changed, 1 insertion(+) diff --git a/kernel/model/conf.go b/kernel/model/conf.go index ad8c22090..00c9a09dc 100644 --- a/kernel/model/conf.go +++ b/kernel/model/conf.go @@ -675,6 +675,7 @@ func clearWorkspaceTemp() { os.RemoveAll(filepath.Join(util.TempDir, "import")) os.RemoveAll(filepath.Join(util.TempDir, "repo")) os.RemoveAll(filepath.Join(util.TempDir, "os")) + os.RemoveAll(filepath.Join(util.DataDir, "assets", ".siyuan", "assets.json")) // 退出时自动删除超过 7 天的安装包 https://github.com/siyuan-note/siyuan/issues/6128 install := filepath.Join(util.TempDir, "install")