fix(extension): 同步失败时真实原因被吞成「失败: undefined」

background 的「未配置站点」分支只返回 {ok:false, reason:'not configured'},
而 options.js 只读 result.error || result.status —— 两个字段都没有,
于是模板插值出 undefined,用户看到「失败: undefined」,真实原因看不到。
实测服务端日志里没有任何 /api/history/sync 请求,确认请求根本没发出。

修:两版 options.js 改为 error || reason || status || '未知错误',
两版 background.js 的 reason 换成中文可操作提示
「未配置站点地址,请先填写并保存」。
firefox 版本升到 1.1.4(已签名的 1.1.3 内容已冻结,须重签)。
This commit is contained in:
JianFeeeee
2026-10-03 08:28:26 +08:00
parent 1d86e81d42
commit 63c588145b
6 changed files with 11 additions and 5 deletions

View File

@ -246,7 +246,7 @@ async function syncNow() {
);
});
const { serverUrl, syncToken, deviceName } = stored;
if (!serverUrl) return { ok: false, reason: 'not configured' };
if (!serverUrl) return { ok: false, reason: '未配置站点地址,请先填写并保存' };
// 每次从持久化存储恢复游标和失败队列,兼容 MV3 service worker 休眠重启。
pendingItems = Array.isArray(stored.pending) ? stored.pending : [];

View File

@ -33,6 +33,8 @@ document.getElementById('sync').addEventListener('click', () => {
? '无待同步'
: result.ok
? `同步 ${result.count} 条,共 ${result.total}`
: `失败: ${result.error || result.status}`;
// 后台各条失败路径给的字段不一致(reason / error / status),
// 只读 error 和 status 会让「未配置站点」显示成「失败: undefined」。
: `失败: ${result.error || result.reason || result.status || '未知错误'}`;
});
});

View File

@ -0,0 +1 @@
{"uploadUuid":"fb05e275eefe472399d38c15fb248870","channel":"unlisted","xpiCrcHash":"e49706a0c09801097e98c94bb18b76353480053afc23f75e3590920384d8faee"}

View File

@ -164,7 +164,7 @@ async function syncNow() {
);
});
const { serverUrl, syncToken, deviceName } = stored;
if (!serverUrl) return { ok: false, reason: 'not configured' };
if (!serverUrl) return { ok: false, reason: '未配置站点地址,请先填写并保存' };
pendingItems = Array.isArray(stored.pending) ? stored.pending : [];
lastSyncTime = Number(stored.lastSyncTime) || 0;

View File

@ -1,7 +1,7 @@
{
"manifest_version": 2,
"name": "JianF Nav Sync",
"version": "1.1.3",
"version": "1.1.4",
"description": "同步浏览历史到自建导航门户,按访问频次自动排序显示常用服务",
"browser_specific_settings": {
"gecko": {

View File

@ -33,6 +33,9 @@ document.getElementById('sync').addEventListener('click', () => {
? '无待同步'
: result.ok
? `同步 ${result.count} 条,共 ${result.total}`
: `失败: ${result.error || result.status}`;
// 后台各条失败路径给的字段不一致(reason / error / status),
// 以前只读 error 和 status,于是「未配置站点」这种返回会显示成
// 「失败: undefined」——真实原因被吞掉,只剩一个无意义的报错。
: `失败: ${result.error || result.reason || result.status || '未知错误'}`;
});
});