Component({ props: { facing: 'front', appName: '', serviceName: '', useLiveFaceCheck: false, minRotate: -1 }, didMount: function didMount() { this.webViewContext = my.createWebViewContext('am-face-detection'); this.doFaceLeftResolve = null; this.isDidFaceLeftResolve = false; this.doFaceRightResolve = null; this.isDidFaceRightResolve = false; }, didUnMount: function didUnMount() { this.webViewContext.postMessage({ action: 'releaseCamera' }); }, methods: { doLeftFaceCheck: function doLeftFaceCheck() { var _this = this; return new Promise(function (resolve, reject) { _this.isDidFaceLeftResolve = false; _this.webViewContext.postMessage({ action: 'doFaceLeft', data: { minRotate: _this.props.minRotate } }); _this.doFaceLeftResolve = resolve; setTimeout(function () { if (!_this.isDidFaceLeftResolve) { reject(); } }, 30000); }); }, doRightFaceCheck: function doRightFaceCheck() { var _this2 = this; return new Promise(function (resolve, reject) { _this2.isDidFaceRightResolve = false; _this2.webViewContext.postMessage({ action: 'doFaceRight', data: { minRotate: _this2.props.minRotate } }); _this2.doFaceRightResolve = resolve; setTimeout(function () { if (!_this2.isDidFaceRightResolve) { reject(); } }, 30000); }); }, onMessage: function onMessage(e) { var _this3 = this; var _this$props = this.props, onFaceStatusChange = _this$props.onFaceStatusChange, onFail = _this$props.onFail, onSuccessBtnTap = _this$props.onSuccessBtnTap; var _e$detail = e.detail, action = _e$detail.action, data = _e$detail.data; if (action === 'resignSuccessBtnClick') { if (onSuccessBtnTap) { onSuccessBtnTap(); } } if (action === 'faceRotated' && data.forward === 'left') { this.isDidFaceLeftResolve = true; this.doFaceLeftResolve(data.imageBase64); return; } if (action === 'faceRotated' && data.forward === 'right') { this.isDidFaceRightResolve = true; this.doFaceRightResolve(data.imageBase64); return; } if (action === 'captureImage') { if (onFaceStatusChange) { var promise = onFaceStatusChange({ imageBase64: data.imageBase64, faceRect: data.faceRect }, { doLeftFaceCheck: this.doLeftFaceCheck.bind(this), doRightFaceCheck: this.doRightFaceCheck.bind(this) }); if (promise instanceof Promise) { promise.then(function () { _this3.webViewContext.postMessage({ action: 'requestSuccess' }); })["catch"](function () { _this3.webViewContext.postMessage({ action: 'requestFailure' }); }); } else { this.webViewContext.postMessage({ action: 'requestSuccess' }); } } } else { /* eslint-disable */ if (onFail) { onFail({ code: data.code, message: data.message }); } } } } });