From cc5e22d1186395d10651e2d3a37bc44659cfd559 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E4=B8=80=E4=B9=8B?= Date: Wed, 16 Aug 2023 00:01:49 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20=E4=BC=98=E5=8C=96=E5=90=8C?= =?UTF-8?q?=E6=AD=A5=E9=94=99=E8=AF=AF=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 244 +++++---------------- package.json | 2 +- pkg/filesystem/auth.ts | 5 +- pkg/filesystem/error.ts | 24 ++ pkg/filesystem/webdav/webdav.ts | 12 +- src/app/service/synchronize/manager.ts | 11 +- src/pages/components/layout/Sider.tsx | 6 +- src/pages/components/layout/SiderGuide.tsx | 8 +- src/pages/options/routes/ScriptList.tsx | 2 +- src/pages/options/routes/Setting.tsx | 5 +- 10 files changed, 107 insertions(+), 212 deletions(-) create mode 100644 pkg/filesystem/error.ts diff --git a/package-lock.json b/package-lock.json index 5d1a3286..15a824be 100644 --- a/package-lock.json +++ b/package-lock.json @@ -36,7 +36,7 @@ "semver": "^7.3.8", "unocss": "^0.51.2", "uuid": "^8.3.2", - "webdav": "^5.2.3", + "webdav": "^4.11.0", "yaml": "^2.1.1" }, "devDependencies": { @@ -2060,14 +2060,6 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, - "node_modules/@buttercup/fetch": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@buttercup/fetch/-/fetch-0.1.2.tgz", - "integrity": "sha512-mDBtsysQ0Gnrp4FamlRJGpu7HUHwbyLC4uUav1I7QAqThFAa/4d1cdZCxrV5gKvh6zO1fu95bILNJi4Y2hALhQ==", - "optionalDependencies": { - "node-fetch": "^3.3.0" - } - }, "node_modules/@cspotcode/source-map-support": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", @@ -7305,15 +7297,6 @@ "dev": true, "peer": true }, - "node_modules/data-uri-to-buffer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", - "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", - "optional": true, - "engines": { - "node": ">= 12" - } - }, "node_modules/data-urls": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", @@ -8950,24 +8933,18 @@ "dev": true }, "node_modules/fast-xml-parser": { - "version": "4.2.7", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.7.tgz", - "integrity": "sha512-J8r6BriSLO1uj2miOk1NW0YVm8AGOOu3Si2HQp/cSmo6EA4m3fcwu2WKjJ4RK9wMLBtg69y1kS8baDiQBR41Ig==", - "funding": [ - { - "type": "paypal", - "url": "https://paypal.me/naturalintelligence" - }, - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - } - ], + "version": "3.21.1", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-3.21.1.tgz", + "integrity": "sha512-FTFVjYoBOZTJekiUsawGsSYV9QL0A+zDYCRj7y34IO6Jg+2IMYEtQa+bbictpdpV8dHxXywqU7C0gRDEOFtBFg==", "dependencies": { - "strnum": "^1.0.5" + "strnum": "^1.0.4" }, "bin": { - "fxparser": "src/cli/cli.js" + "xml2js": "cli.js" + }, + "funding": { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" } }, "node_modules/fastest-levenshtein": { @@ -8996,29 +8973,6 @@ "bser": "2.1.1" } }, - "node_modules/fetch-blob": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", - "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "paypal", - "url": "https://paypal.me/jimmywarting" - } - ], - "optional": true, - "dependencies": { - "node-domexception": "^1.0.0", - "web-streams-polyfill": "^3.0.3" - }, - "engines": { - "node": "^12.20 || >= 14.13" - } - }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -9172,18 +9126,6 @@ "node": ">= 6" } }, - "node_modules/formdata-polyfill": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", - "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", - "optional": true, - "dependencies": { - "fetch-blob": "^3.1.2" - }, - "engines": { - "node": ">=12.20.0" - } - }, "node_modules/fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", @@ -9560,9 +9502,9 @@ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, "node_modules/hot-patcher": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/hot-patcher/-/hot-patcher-2.0.1.tgz", - "integrity": "sha512-ECg1JFG0YzehicQaogenlcs2qg6WsXQsxtnbr1i696u5tLUjtJdQAh0u2g0Q5YV45f263Ta1GnUJsc8WIfJf4Q==" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hot-patcher/-/hot-patcher-1.0.0.tgz", + "integrity": "sha512-3H8VH0PreeNsKMZw16nTHbUp4YoHCnPlawpsPXGJUR4qENDynl79b6Xk9CIFvLcH1qungBsCuzKcWyzoPPalTw==" }, "node_modules/html-encoding-sniffer": { "version": "3.0.0", @@ -13823,43 +13765,6 @@ "tslib": "^2.0.3" } }, - "node_modules/node-domexception": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", - "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "github", - "url": "https://paypal.me/jimmywarting" - } - ], - "optional": true, - "engines": { - "node": ">=10.5.0" - } - }, - "node_modules/node-fetch": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", - "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", - "optional": true, - "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" - } - }, "node_modules/node-fetch-native": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.1.0.tgz", @@ -17118,26 +17023,17 @@ "node": ">=10.13.0" } }, - "node_modules/web-streams-polyfill": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", - "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", - "optional": true, - "engines": { - "node": ">= 8" - } - }, "node_modules/webdav": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/webdav/-/webdav-5.2.3.tgz", - "integrity": "sha512-u5wqJULZhB7IwO3qVD9r0ikt6SMHZ4P4YYtLJ6JrCmSoZuW6KvanXWJAA4LZDm548lK7aCNUsy0VxbBKBXAGrg==", + "version": "4.11.2", + "resolved": "https://registry.npmjs.org/webdav/-/webdav-4.11.2.tgz", + "integrity": "sha512-Ht9TPD5EB7gYW0YmhRcE5NW0/dn/HQfyLSPQY1Rw1coQ5MQTUooAQ9Bpqt4EU7QLw0b95tX4cU59R+SIojs9KQ==", "dependencies": { - "@buttercup/fetch": "^0.1.1", + "axios": "^0.27.2", "base-64": "^1.0.0", "byte-length": "^1.0.2", - "fast-xml-parser": "^4.2.4", + "fast-xml-parser": "^3.19.0", "he": "^1.2.0", - "hot-patcher": "^2.0.0", + "hot-patcher": "^1.0.0", "layerr": "^0.1.2", "md5": "^2.3.0", "minimatch": "^5.1.0", @@ -17147,7 +17043,16 @@ "url-parse": "^1.5.10" }, "engines": { - "node": ">=14" + "node": ">=10" + } + }, + "node_modules/webdav/node_modules/axios": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "dependencies": { + "follow-redirects": "^1.14.9", + "form-data": "^4.0.0" } }, "node_modules/webdav/node_modules/brace-expansion": { @@ -19166,14 +19071,6 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, - "@buttercup/fetch": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@buttercup/fetch/-/fetch-0.1.2.tgz", - "integrity": "sha512-mDBtsysQ0Gnrp4FamlRJGpu7HUHwbyLC4uUav1I7QAqThFAa/4d1cdZCxrV5gKvh6zO1fu95bILNJi4Y2hALhQ==", - "requires": { - "node-fetch": "^3.3.0" - } - }, "@cspotcode/source-map-support": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", @@ -23160,12 +23057,6 @@ "dev": true, "peer": true }, - "data-uri-to-buffer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", - "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", - "optional": true - }, "data-urls": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", @@ -24419,11 +24310,11 @@ "dev": true }, "fast-xml-parser": { - "version": "4.2.7", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.7.tgz", - "integrity": "sha512-J8r6BriSLO1uj2miOk1NW0YVm8AGOOu3Si2HQp/cSmo6EA4m3fcwu2WKjJ4RK9wMLBtg69y1kS8baDiQBR41Ig==", + "version": "3.21.1", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-3.21.1.tgz", + "integrity": "sha512-FTFVjYoBOZTJekiUsawGsSYV9QL0A+zDYCRj7y34IO6Jg+2IMYEtQa+bbictpdpV8dHxXywqU7C0gRDEOFtBFg==", "requires": { - "strnum": "^1.0.5" + "strnum": "^1.0.4" } }, "fastest-levenshtein": { @@ -24449,16 +24340,6 @@ "bser": "2.1.1" } }, - "fetch-blob": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", - "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", - "optional": true, - "requires": { - "node-domexception": "^1.0.0", - "web-streams-polyfill": "^3.0.3" - } - }, "file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -24567,15 +24448,6 @@ "mime-types": "^2.1.12" } }, - "formdata-polyfill": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", - "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", - "optional": true, - "requires": { - "fetch-blob": "^3.1.2" - } - }, "fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", @@ -24845,9 +24717,9 @@ } }, "hot-patcher": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/hot-patcher/-/hot-patcher-2.0.1.tgz", - "integrity": "sha512-ECg1JFG0YzehicQaogenlcs2qg6WsXQsxtnbr1i696u5tLUjtJdQAh0u2g0Q5YV45f263Ta1GnUJsc8WIfJf4Q==" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hot-patcher/-/hot-patcher-1.0.0.tgz", + "integrity": "sha512-3H8VH0PreeNsKMZw16nTHbUp4YoHCnPlawpsPXGJUR4qENDynl79b6Xk9CIFvLcH1qungBsCuzKcWyzoPPalTw==" }, "html-encoding-sniffer": { "version": "3.0.0", @@ -28036,23 +27908,6 @@ "tslib": "^2.0.3" } }, - "node-domexception": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", - "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", - "optional": true - }, - "node-fetch": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", - "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", - "optional": true, - "requires": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - } - }, "node-fetch-native": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.1.0.tgz", @@ -30445,23 +30300,17 @@ "graceful-fs": "^4.1.2" } }, - "web-streams-polyfill": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", - "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", - "optional": true - }, "webdav": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/webdav/-/webdav-5.2.3.tgz", - "integrity": "sha512-u5wqJULZhB7IwO3qVD9r0ikt6SMHZ4P4YYtLJ6JrCmSoZuW6KvanXWJAA4LZDm548lK7aCNUsy0VxbBKBXAGrg==", + "version": "4.11.2", + "resolved": "https://registry.npmjs.org/webdav/-/webdav-4.11.2.tgz", + "integrity": "sha512-Ht9TPD5EB7gYW0YmhRcE5NW0/dn/HQfyLSPQY1Rw1coQ5MQTUooAQ9Bpqt4EU7QLw0b95tX4cU59R+SIojs9KQ==", "requires": { - "@buttercup/fetch": "^0.1.1", + "axios": "^0.27.2", "base-64": "^1.0.0", "byte-length": "^1.0.2", - "fast-xml-parser": "^4.2.4", + "fast-xml-parser": "^3.19.0", "he": "^1.2.0", - "hot-patcher": "^2.0.0", + "hot-patcher": "^1.0.0", "layerr": "^0.1.2", "md5": "^2.3.0", "minimatch": "^5.1.0", @@ -30471,6 +30320,15 @@ "url-parse": "^1.5.10" }, "dependencies": { + "axios": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "requires": { + "follow-redirects": "^1.14.9", + "form-data": "^4.0.0" + } + }, "brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz", diff --git a/package.json b/package.json index 9f995f05..d56100b1 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "semver": "^7.3.8", "unocss": "^0.51.2", "uuid": "^8.3.2", - "webdav": "^5.2.3", + "webdav": "^4.11.0", "yaml": "^2.1.1" }, "devDependencies": { diff --git a/pkg/filesystem/auth.ts b/pkg/filesystem/auth.ts index 422c423e..945b96e8 100644 --- a/pkg/filesystem/auth.ts +++ b/pkg/filesystem/auth.ts @@ -2,6 +2,7 @@ /* eslint-disable import/prefer-default-export */ import { ExtServer } from "@App/app/const"; import { api } from "@App/pkg/axios"; +import { WarpTokenError } from "./error"; type NetDiskType = "baidu" | "onedrive"; @@ -73,7 +74,7 @@ export async function AuthVerify(netDiskType: NetDiskType, invalid?: boolean) { await NetDisk(netDiskType); const resp = await GetNetDiskToken(netDiskType); if (resp.code !== 0) { - return Promise.reject(new Error(resp.msg)); + return Promise.reject(new WarpTokenError(new Error(resp.msg))); } token = { accessToken: resp.data.token.access_token, @@ -94,7 +95,7 @@ export async function AuthVerify(netDiskType: NetDiskType, invalid?: boolean) { if (invalid) { return AuthVerify(netDiskType); } - return Promise.reject(new Error(resp.msg)); + return Promise.reject(new WarpTokenError(new Error(resp.msg))); } token = { accessToken: resp.data.token.access_token, diff --git a/pkg/filesystem/error.ts b/pkg/filesystem/error.ts new file mode 100644 index 00000000..5cf23ae5 --- /dev/null +++ b/pkg/filesystem/error.ts @@ -0,0 +1,24 @@ +// eslint-disable-next-line import/prefer-default-export, max-classes-per-file +export class WarpTokenError { + error: Error; + + constructor(error: Error) { + this.error = error; + } +} + +export function isWarpTokenError(error: any): error is WarpTokenError { + return error instanceof WarpTokenError; +} + +export class WarpNetworkError { + error: Error; + + constructor(error: Error) { + this.error = error; + } +} + +export function isNetworkError(error: any): error is WarpNetworkError { + return error instanceof WarpNetworkError; +} diff --git a/pkg/filesystem/webdav/webdav.ts b/pkg/filesystem/webdav/webdav.ts index f44c63c0..29b69009 100644 --- a/pkg/filesystem/webdav/webdav.ts +++ b/pkg/filesystem/webdav/webdav.ts @@ -1,7 +1,8 @@ -import { AuthType, createClient, FileStat, WebDAVClient } from "webdav"; +import { AuthType, createClient, FileStat, WebDAVClient } from "webdav/web"; import FileSystem, { File, FileReader, FileWriter } from "../filesystem"; import { joinPath } from "../utils"; import { WebDAVFileReader, WebDAVFileWriter } from "./rw"; +import { WarpTokenError } from "../error"; export default class WebDAVFileSystem implements FileSystem { client: WebDAVClient; @@ -31,7 +32,14 @@ export default class WebDAVFileSystem implements FileSystem { } async verify(): Promise { - await this.client.getQuota(); + try { + await this.client.getQuota(); + } catch (e: any) { + if (e.response && e.response.status === 401) { + throw new WarpTokenError(e); + } + throw new Error("verify failed"); + } return Promise.resolve(); } diff --git a/src/app/service/synchronize/manager.ts b/src/app/service/synchronize/manager.ts index 12a60177..16985264 100644 --- a/src/app/service/synchronize/manager.ts +++ b/src/app/service/synchronize/manager.ts @@ -19,6 +19,7 @@ import { errorMsg, InfoNotification } from "@App/pkg/utils/utils"; import FileSystemFactory from "@Pkg/filesystem/factory"; import FileSystem, { File } from "@Pkg/filesystem/filesystem"; import { t } from "i18next"; +import { isWarpTokenError } from "@Pkg/filesystem/error"; import Manager from "../manager"; import ResourceManager from "../resource/manager"; import ScriptManager from "../script/manager"; @@ -98,7 +99,7 @@ export default class SynchronizeManager extends Manager { if (value.enable) { // 每次开启前进行一次全量同步,删除文件摘要 await this.storage.set("file_digest", {}); - freeSync = await this.enableCloudSync(value, true); + freeSync = await this.enableCloudSync(value); } } } @@ -106,7 +107,7 @@ export default class SynchronizeManager extends Manager { } // 开启云同步 - async enableCloudSync(config: CloudSyncConfig, autoDisable: boolean = false) { + async enableCloudSync(config: CloudSyncConfig) { const logger = this.logger.with({ syncDelete: config.syncDelete }); logger.info("start cloud sync"); @@ -123,7 +124,9 @@ export default class SynchronizeManager extends Manager { logger.error("create filesystem error", Logger.E(e), { type: config.filesystem, }); - if (autoDisable) { + // 判断错误是不是网络类型的错误, 网络类型的错误不做任何处理 + // 如果是token失效之类的错误,通知用户并关闭云同步 + if (isWarpTokenError(e)) { InfoNotification( `${t("sync_system_connect_failed")}, ${t("sync_system_closed")}`, `${t("sync_system_closed_description")}\n${errorMsg(e)}` @@ -132,8 +135,6 @@ export default class SynchronizeManager extends Manager { ...this.systemConfig.cloudSync, enable: false, }; - } else { - InfoNotification(t("sync_system_connect_failed"), errorMsg(e)); } throw e; } diff --git a/src/pages/components/layout/Sider.tsx b/src/pages/components/layout/Sider.tsx index d698832d..5ab91f70 100644 --- a/src/pages/components/layout/Sider.tsx +++ b/src/pages/components/layout/Sider.tsx @@ -52,7 +52,7 @@ const Sider: React.FC = () => { }} > - + {t("installed_scripts")} @@ -66,12 +66,12 @@ const Sider: React.FC = () => { {t("logs")} - + {t("tools")} - + {t("settings")} diff --git a/src/pages/components/layout/SiderGuide.tsx b/src/pages/components/layout/SiderGuide.tsx index eaf5c402..0eb859e8 100644 --- a/src/pages/components/layout/SiderGuide.tsx +++ b/src/pages/components/layout/SiderGuide.tsx @@ -35,7 +35,7 @@ const SiderGuide: React.ForwardRefRenderFunction<{ open: () => void }, {}> = ( { title: t("installed_scripts"), content: t("guide_installed_scripts"), - target: ".guide-script", + target: ".menu-script", }, { content: , @@ -54,12 +54,12 @@ const SiderGuide: React.ForwardRefRenderFunction<{ open: () => void }, {}> = ( title: t("guide_script_list_apply_to_run_status_title"), }, { - target: ".script_sort", + target: ".script-sort", title: t("guide_script_list_sort_title"), content: , }, { - target: ".tools", + target: ".menu-tools", title: t("guide_tools_title"), content: t("guide_tools_content"), placement: "auto", @@ -70,7 +70,7 @@ const SiderGuide: React.ForwardRefRenderFunction<{ open: () => void }, {}> = ( content: t("guide_tools_backup_content"), }, { - target: ".setting", + target: ".menu-setting", title: t("guide_setting_title"), content: t("guide_setting_content"), placement: "auto", diff --git a/src/pages/options/routes/ScriptList.tsx b/src/pages/options/routes/ScriptList.tsx index 50043325..f2895b13 100644 --- a/src/pages/options/routes/ScriptList.tsx +++ b/src/pages/options/routes/ScriptList.tsx @@ -387,7 +387,7 @@ function ScriptList() { }, { title: t("sorting"), - className: "script_sort", + className: "script-sort", key: "id", width: 80, align: "center", diff --git a/src/pages/options/routes/Setting.tsx b/src/pages/options/routes/Setting.tsx index f3b25a25..95796cb1 100644 --- a/src/pages/options/routes/Setting.tsx +++ b/src/pages/options/routes/Setting.tsx @@ -22,6 +22,7 @@ import GMApiSetting from "@App/pages/components/GMApiSetting"; import i18n from "@App/locales/locales"; import { useTranslation } from "react-i18next"; import dayjs from "dayjs"; +import Logger from "@App/app/logger/logger"; function Setting() { const systemConfig = IoC.instance(SystemConfig) as SystemConfig; @@ -124,7 +125,9 @@ function Setting() { ); } catch (e) { Message.error( - `${t("cloud_sync_verification_failed")}: ${e}` + `${t( + "cloud_sync_verification_failed" + )}: ${JSON.stringify(Logger.E(e))}` ); return; }