修复bug

This commit is contained in:
iqudoo
2026-05-29 14:23:03 +08:00
parent b438364656
commit b12497443c
4 changed files with 54 additions and 6 deletions

2
dist/index.js vendored

File diff suppressed because one or more lines are too long

View File

@@ -30,7 +30,7 @@ function config(config) {
return _readyPromise;
}
_readyPromise = Promise.resolve().then(() => {
return initWxJssdk().catch(err => {
initWxJssdk().catch(err => {
printDebug('init wx jssdk failed:', err && err.message ? err.message : err);
});
}).then(() => {

View File

@@ -71,8 +71,12 @@ function __fallbackScanAfterWxFailure(err) {
if (!isScanning()) {
throw err;
}
printWarn("wx scan unavailable, fallback to web/image scan:", err);
return __startNonBridgeScan(err);
if (__isScanCancel(err)) {
return { cancel: 1 };
}
printWarn("wx scan failed:", err);
__scanError(err, { source: "wx" });
return err;
}
function __startNonBridgeScan(err) {
@@ -164,6 +168,22 @@ function __shouldSkipBeep(meta) {
return source === "scanner" || source === "bridge" || source === "wx";
}
function __isScanCancel(raw) {
if (!raw) {
return false;
}
if (raw.cancel) {
return true;
}
const message = normalizeScanError(raw);
if (!message) {
return false;
}
const lowerMessage = message.toLowerCase();
return lowerMessage.indexOf("cancel") !== -1
|| message.indexOf("取消") !== -1;
}
function __result(result, meta) {
result = parseBarcodeString(result);
forwardEmbedScanResultIfNeeded(result, meta);
@@ -397,6 +417,9 @@ function __startWxScan() {
if (!isScanning()) {
return resp;
}
if (__isScanCancel(resp)) {
return { cancel: 1 };
}
if (resp && resp.error && !resp.result) {
throw resp.error;
}
@@ -417,6 +440,9 @@ function __startWxScan() {
}
return err;
}
if (__isScanCancel(err)) {
return { cancel: 1 };
}
return __fallbackScanAfterWxFailure(err);
});
}

View File

@@ -206,6 +206,17 @@ function getWxScanErrorMessage(err) {
return errorMsg;
}
function isWxScanCancel(err) {
if (!err) {
return false;
}
const errMsg = typeof err === "string" ? err : err.errMsg;
if (!errMsg) {
return false;
}
return String(errMsg).toLowerCase().indexOf("cancel") !== -1;
}
function startScanForWxMiniProgram(options) {
return new Promise(resolve => {
const wx = getWx();
@@ -231,6 +242,12 @@ function startScanForWxMiniProgram(options) {
});
},
fail: err => {
if (isWxScanCancel(err)) {
resolve({
cancel: 1
});
return;
}
resolve({
success: false,
error: getWxScanErrorMessage(err)
@@ -267,11 +284,16 @@ export function startScanForWx(options) {
},
cancel: () => {
resolve({
success: false,
error: "用户取消扫码"
cancel: 1
});
},
fail: err => {
if (isWxScanCancel(err)) {
resolve({
cancel: 1
});
return;
}
reject(err);
}
});