修复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;
|
return _readyPromise;
|
||||||
}
|
}
|
||||||
_readyPromise = Promise.resolve().then(() => {
|
_readyPromise = Promise.resolve().then(() => {
|
||||||
return initWxJssdk().catch(err => {
|
initWxJssdk().catch(err => {
|
||||||
printDebug('init wx jssdk failed:', err && err.message ? err.message : err);
|
printDebug('init wx jssdk failed:', err && err.message ? err.message : err);
|
||||||
});
|
});
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
|
|||||||
@@ -71,8 +71,12 @@ function __fallbackScanAfterWxFailure(err) {
|
|||||||
if (!isScanning()) {
|
if (!isScanning()) {
|
||||||
throw err;
|
throw err;
|
||||||
}
|
}
|
||||||
printWarn("wx scan unavailable, fallback to web/image scan:", err);
|
if (__isScanCancel(err)) {
|
||||||
return __startNonBridgeScan(err);
|
return { cancel: 1 };
|
||||||
|
}
|
||||||
|
printWarn("wx scan failed:", err);
|
||||||
|
__scanError(err, { source: "wx" });
|
||||||
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
function __startNonBridgeScan(err) {
|
function __startNonBridgeScan(err) {
|
||||||
@@ -164,6 +168,22 @@ function __shouldSkipBeep(meta) {
|
|||||||
return source === "scanner" || source === "bridge" || source === "wx";
|
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) {
|
function __result(result, meta) {
|
||||||
result = parseBarcodeString(result);
|
result = parseBarcodeString(result);
|
||||||
forwardEmbedScanResultIfNeeded(result, meta);
|
forwardEmbedScanResultIfNeeded(result, meta);
|
||||||
@@ -397,6 +417,9 @@ function __startWxScan() {
|
|||||||
if (!isScanning()) {
|
if (!isScanning()) {
|
||||||
return resp;
|
return resp;
|
||||||
}
|
}
|
||||||
|
if (__isScanCancel(resp)) {
|
||||||
|
return { cancel: 1 };
|
||||||
|
}
|
||||||
if (resp && resp.error && !resp.result) {
|
if (resp && resp.error && !resp.result) {
|
||||||
throw resp.error;
|
throw resp.error;
|
||||||
}
|
}
|
||||||
@@ -417,6 +440,9 @@ function __startWxScan() {
|
|||||||
}
|
}
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
if (__isScanCancel(err)) {
|
||||||
|
return { cancel: 1 };
|
||||||
|
}
|
||||||
return __fallbackScanAfterWxFailure(err);
|
return __fallbackScanAfterWxFailure(err);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -206,6 +206,17 @@ function getWxScanErrorMessage(err) {
|
|||||||
return errorMsg;
|
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) {
|
function startScanForWxMiniProgram(options) {
|
||||||
return new Promise(resolve => {
|
return new Promise(resolve => {
|
||||||
const wx = getWx();
|
const wx = getWx();
|
||||||
@@ -231,6 +242,12 @@ function startScanForWxMiniProgram(options) {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
fail: err => {
|
fail: err => {
|
||||||
|
if (isWxScanCancel(err)) {
|
||||||
|
resolve({
|
||||||
|
cancel: 1
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
resolve({
|
resolve({
|
||||||
success: false,
|
success: false,
|
||||||
error: getWxScanErrorMessage(err)
|
error: getWxScanErrorMessage(err)
|
||||||
@@ -267,11 +284,16 @@ export function startScanForWx(options) {
|
|||||||
},
|
},
|
||||||
cancel: () => {
|
cancel: () => {
|
||||||
resolve({
|
resolve({
|
||||||
success: false,
|
cancel: 1
|
||||||
error: "用户取消扫码"
|
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
fail: err => {
|
fail: err => {
|
||||||
|
if (isWxScanCancel(err)) {
|
||||||
|
resolve({
|
||||||
|
cancel: 1
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
reject(err);
|
reject(err);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user