feat: 同步配置逻辑优化

This commit is contained in:
xream 2025-02-09 20:58:27 +08:00
parent 421df8f0d4
commit 07d5a913f0
No known key found for this signature in database
GPG Key ID: 1D2C5225471789F9
3 changed files with 56 additions and 15 deletions

View File

@ -1,6 +1,6 @@
{ {
"name": "sub-store", "name": "sub-store",
"version": "2.16.30", "version": "2.16.31",
"description": "Advanced Subscription Manager for QX, Loon, Surge, Stash and ShadowRocket.", "description": "Advanced Subscription Manager for QX, Loon, Surge, Stash and ShadowRocket.",
"main": "src/main.js", "main": "src/main.js",
"scripts": { "scripts": {

View File

@ -84,6 +84,7 @@ async function doSync() {
const files = {}; const files = {};
try { try {
const valid = [];
const invalid = []; const invalid = [];
const allSubs = $.read(SUBS_KEY); const allSubs = $.read(SUBS_KEY);
const allCols = $.read(COLLECTIONS_KEY); const allCols = $.read(COLLECTIONS_KEY);
@ -156,19 +157,26 @@ async function doSync() {
files[encodeURIComponent(artifact.name)] = { files[encodeURIComponent(artifact.name)] = {
content: output, content: output,
}; };
valid.push(artifact.name);
} }
} catch (e) { } catch (e) {
$.error( $.error(
`同步配置 ${artifact.name} 发生错误: ${e.message ?? e}`, `生成同步配置 ${artifact.name} 发生错误: ${
e.message ?? e
}`,
); );
invalid.push(artifact.name); invalid.push(artifact.name);
} }
}), }),
); );
if (invalid.length > 0) { $.info(`${valid.length} 个同步配置生成成功: ${valid.join(', ')}`);
$.info(`${invalid.length} 个同步配置生成失败: ${invalid.join(', ')}`);
if (valid.length === 0) {
throw new Error( throw new Error(
`同步配置 ${invalid.join(', ')} 发生错误 详情请查看日志`, `同步配置 ${invalid.join(', ')} 生成失败 详情请查看日志`,
); );
} }
@ -184,7 +192,11 @@ async function doSync() {
$.info(JSON.stringify(body, null, 2)); $.info(JSON.stringify(body, null, 2));
for (const artifact of allArtifacts) { for (const artifact of allArtifacts) {
if (artifact.sync) { if (
artifact.sync &&
artifact.source &&
valid.includes(artifact.name)
) {
artifact.updated = new Date().getTime(); artifact.updated = new Date().getTime();
// extract real url from gist // extract real url from gist
let files = body.files; let files = body.files;
@ -212,9 +224,18 @@ async function doSync() {
} }
$.write(allArtifacts, ARTIFACTS_KEY); $.write(allArtifacts, ARTIFACTS_KEY);
$.notify('🌍 Sub-Store', '全部订阅同步成功!'); $.info('上传配置成功');
if (invalid.length > 0) {
$.notify(
'🌍 Sub-Store',
`同步配置成功 ${valid.length} 个, 失败 ${invalid.length} 个, 详情请查看日志`,
);
} else {
$.notify('🌍 Sub-Store', '同步配置完成');
}
} catch (e) { } catch (e) {
$.notify('🌍 Sub-Store', '同步订阅失败', `原因:${e.message ?? e}`); $.notify('🌍 Sub-Store', '同步配置失败', `原因:${e.message ?? e}`);
$.error(`无法同步订阅配置到 Gist原因${e}`); $.error(`无法同步配置到 Gist原因${e}`);
} }
} }

View File

@ -540,6 +540,7 @@ async function syncArtifacts() {
const files = {}; const files = {};
try { try {
const valid = [];
const invalid = []; const invalid = [];
const allSubs = $.read(SUBS_KEY); const allSubs = $.read(SUBS_KEY);
const allCols = $.read(COLLECTIONS_KEY); const allCols = $.read(COLLECTIONS_KEY);
@ -614,19 +615,26 @@ async function syncArtifacts() {
files[encodeURIComponent(artifact.name)] = { files[encodeURIComponent(artifact.name)] = {
content: output, content: output,
}; };
valid.push(artifact.name);
} }
} catch (e) { } catch (e) {
$.error( $.error(
`同步配置 ${artifact.name} 发生错误: ${e.message ?? e}`, `生成同步配置 ${artifact.name} 发生错误: ${
e.message ?? e
}`,
); );
invalid.push(artifact.name); invalid.push(artifact.name);
} }
}), }),
); );
if (invalid.length > 0) { $.info(`${valid.length} 个同步配置生成成功: ${valid.join(', ')}`);
$.info(`${invalid.length} 个同步配置生成失败: ${invalid.join(', ')}`);
if (valid.length === 0) {
throw new Error( throw new Error(
`同步配置 ${invalid.join(', ')} 发生错误 详情请查看日志`, `同步配置 ${invalid.join(', ')} 生成失败 详情请查看日志`,
); );
} }
@ -643,7 +651,11 @@ async function syncArtifacts() {
$.info(JSON.stringify(body, null, 2)); $.info(JSON.stringify(body, null, 2));
for (const artifact of allArtifacts) { for (const artifact of allArtifacts) {
if (artifact.sync) { if (
artifact.sync &&
artifact.source &&
valid.includes(artifact.name)
) {
artifact.updated = new Date().getTime(); artifact.updated = new Date().getTime();
// extract real url from gist // extract real url from gist
let files = body.files; let files = body.files;
@ -671,9 +683,17 @@ async function syncArtifacts() {
} }
$.write(allArtifacts, ARTIFACTS_KEY); $.write(allArtifacts, ARTIFACTS_KEY);
$.info('全部订阅同步成功!'); $.info('上传配置成功');
if (invalid.length > 0) {
throw new Error(
`同步配置成功 ${valid.length} 个, 失败 ${invalid.length} 个, 详情请查看日志`,
);
} else {
$.info(`同步配置成功 ${valid.length}`);
}
} catch (e) { } catch (e) {
$.error(`同步订阅失败,原因:${e.message ?? e}`); $.error(`同步配置失败,原因:${e.message ?? e}`);
throw e; throw e;
} }
} }
@ -683,7 +703,7 @@ async function syncAllArtifacts(_, res) {
await syncArtifacts(); await syncArtifacts();
success(res); success(res);
} catch (e) { } catch (e) {
$.error(`同步订阅失败,原因:${e.message ?? e}`); $.error(`同步配置失败,原因:${e.message ?? e}`);
failed( failed(
res, res,
new InternalServerError( new InternalServerError(