/// <summary> /// returned async task function: /// throws exception if there was error (f.e. android camera permissions) /// OR returns not null scanned code /// OR returns null if scanning was cancelled by user /// </summary> public static async Task <string> RequestScanQrNonValidatable(LayoutStrategy layout, CancellationToken canc) { var hndl = RequestScanQr(false, layout); string result = null; canc.Register(() => { Logger.Debug(typeof(IawAppApi), "RequestScanQrNonValidatable() requesting cancellation"); hndl.CancelScanning(); }); while (true) { Logger.Debug(typeof(IawAppApi), "RequestScanQrNonValidatable() requesting next"); var v = await hndl.GetNext(); Logger.Debug(typeof(IawAppApi), "RequestScanQrNonValidatable() got ({0}; {1})", v.Item1, v.Item2); if (v.Item1 == ScanResultType.Paused) { throw new Exception("unexpected pause"); } if (v.Item1 == ScanResultType.Scanned) { result = v.Item2; Logger.Debug(typeof(IawAppApi), "RequestScanQrNonValidatable() deferring result {0}", result); } if (v.Item1 == ScanResultType.Disposed) { Logger.Debug(typeof(IawAppApi), "RequestScanQrNonValidatable() returning deferred result {0}", result); return(result); } } }
public void requestScanQr(string webRequestId, bool askJsForValidation, LayoutStrategy layout) { var layoutAsJson = JsonConvert.SerializeObject(layout); BridgeObjectUtil.CallMethodPlain(_impl, nameof(requestScanQr), webRequestId, askJsForValidation ? BridgeObjectUtil.True : BridgeObjectUtil.False, layoutAsJson); }
public static IScanResult RequestScanQr(bool pauseAfterBarcode, LayoutStrategy layout) { var impl = GetImpl(); if (impl == null) { Logger.Debug(typeof(IawAppApi), "has no proper IAWApp API"); return(new WindowPromptBasedScanResult(pauseAfterBarcode, layout)); } return(new ScanResult(impl, pauseAfterBarcode, layout)); }
public WindowPromptBasedScanResult(bool pauseAfterBarcode, LayoutStrategy layout) { _pauseAfterBarcode = pauseAfterBarcode; _layout = layout; }
public ScanResult(IAWAppHostApi impl, bool pauseAfterBarcode, LayoutStrategy layout) { _impl = impl; _layout = layout; _pauseAfterBarcode = pauseAfterBarcode; }