修复bug
This commit is contained in:
2
dist/index.js
vendored
2
dist/index.js
vendored
File diff suppressed because one or more lines are too long
@@ -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(() => {
|
||||
|
||||
@@ -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);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user