remove prepare command

pull/536/head
Lucas Nogueira 2 years ago
parent 7907c673ae
commit 2aa719c50e
No known key found for this signature in database
GPG Key ID: 7C32FCA95C8C95D7

@ -72,7 +72,6 @@ class BarcodeScannerPlugin(private val activity: Activity) : Plugin(activity),
private var scanner: com.google.mlkit.vision.barcode.BarcodeScanner? = null
private var requestPermissionResponse: JSObject? = null
private var cameraReady = false
private var windowed = false
// declare a map constant for allowed barcode formats
@ -221,7 +220,7 @@ class BarcodeScannerPlugin(private val activity: Activity) : Plugin(activity),
return formats
}
private fun prepareInternal(direction: String, windowed: Boolean) {
private fun prepare(direction: String, windowed: Boolean) {
dismantleCamera()
setupCamera(direction, windowed)
}
@ -329,13 +328,6 @@ class BarcodeScannerPlugin(private val activity: Activity) : Plugin(activity),
invoke.resolve()
}
@Command
fun prepare(invoke: Invoke) {
prepareInternal(invoke.getString("cameraDirection", "back"), invoke.getBoolean("windowed", false))
cameraReady = true
invoke.resolve()
}
@Command
fun cancel(invoke: Invoke) {
savedInvoke?.reject("cancelled")
@ -349,11 +341,8 @@ class BarcodeScannerPlugin(private val activity: Activity) : Plugin(activity),
if (getPermissionState("camera") != PermissionState.GRANTED) {
throw Exception("No permission to use camera. Did you request it yet?")
} else {
if (!cameraReady) {
webViewBackground = null
prepareInternal(invoke.getString("cameraDirection", "back"), invoke.getBoolean("windowed", false))
}
cameraReady = false
webViewBackground = null
prepare(invoke.getString("cameraDirection", "back"), invoke.getBoolean("windowed", false))
configureCamera(getFormats(invoke))
}
}

@ -23,26 +23,12 @@ interface ScanOptions {
windowed?: boolean;
}
interface PrepareOptions {
cameraDirection?: "back" | "front";
windowed?: boolean;
}
interface Scanned {
content: string;
format: Format;
bounds: unknown;
}
/**
* Prepare the camera before starting scanning.
* This is optional, only use it if you need a small performance improvement when preparing a scan in advance.
* @param options
*/
export async function prepare(options?: PrepareOptions): Promise<void> {
return await invoke("plugin:barcodeScanner|prepare", { ...options });
}
/**
* Start scanning.
* @param options

@ -53,7 +53,6 @@ class BarcodeScannerPlugin: Plugin, AVCaptureMetadataOutputObjectsDelegate {
var backCamera: AVCaptureDevice?
var isScanning = false
var cameraReady = false
var windowed = false
var previousBackgroundColor: UIColor? = UIColor.white
@ -64,10 +63,14 @@ class BarcodeScannerPlugin: Plugin, AVCaptureMetadataOutputObjectsDelegate {
public override func load(webview: WKWebView) {
self.webView = webview
self.cameraView = CameraView(
loadCamera()
}
private func loadCamera() {
cameraView = CameraView(
frame: CGRect(
x: 0, y: 0, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height))
self.cameraView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
cameraView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
}
public func metadataOutput(
@ -142,8 +145,6 @@ class BarcodeScannerPlugin: Plugin, AVCaptureMetadataOutputObjectsDelegate {
self.webView.backgroundColor = UIColor.clear
self.webView.scrollView.backgroundColor = UIColor.clear
}
self.cameraReady = true
} catch CaptureError.backCameraUnavailable {
//
} catch CaptureError.frontCameraUnavailable {
@ -169,7 +170,6 @@ class BarcodeScannerPlugin: Plugin, AVCaptureMetadataOutputObjectsDelegate {
}
self.isScanning = false
self.cameraReady = false
}
private func destroy() {
@ -183,7 +183,7 @@ class BarcodeScannerPlugin: Plugin, AVCaptureMetadataOutputObjectsDelegate {
}
}
private func prepareInternal(_ direction: String, _ windowed: Bool) {
private func prepare(_ direction: String, _ windowed: Bool) {
dismantleCamera()
DispatchQueue.main.async { [self] in
@ -239,15 +239,7 @@ class BarcodeScannerPlugin: Plugin, AVCaptureMetadataOutputObjectsDelegate {
}
}
@objc private func prepare(_ invoke: Invoke) {
prepareInternal(
invoke.getString("cameraDirection") ?? "back", invoke.getBool("windowed") ?? false)
invoke.resolve()
}
private func runScanner(_ invoke: Invoke) {
self.cameraReady = false
scanFormats = [AVMetadataObject.ObjectType]()
if (invoke.data["formats"]) != nil {
@ -279,29 +271,25 @@ class BarcodeScannerPlugin: Plugin, AVCaptureMetadataOutputObjectsDelegate {
@objc private func scan(_ invoke: Invoke) {
self.invoke = invoke
if self.cameraReady {
runScanner(invoke)
} else {
var iOS14min: Bool = false
if #available(iOS 14.0, *) { iOS14min = true }
if !iOS14min && self.getPermissionState() != "granted" {
var authorized = false
AVCaptureDevice.requestAccess(for: .video) { (isAuthorized) in
authorized = isAuthorized
}
if !authorized {
invoke.reject("denied by the user")
return
}
var iOS14min: Bool = false
if #available(iOS 14.0, *) { iOS14min = true }
if !iOS14min && self.getPermissionState() != "granted" {
var authorized = false
AVCaptureDevice.requestAccess(for: .video) { (isAuthorized) in
authorized = isAuthorized
}
DispatchQueue.main.async {
self.load(webview: self.webView)
self.prepareInternal(
invoke.getString("cameraDirection") ?? "back", invoke.getBool("windowed") ?? false)
self.runScanner(invoke)
if !authorized {
invoke.reject("denied by the user")
return
}
}
DispatchQueue.main.async {
self.loadCamera()
self.prepare(
invoke.getString("cameraDirection") ?? "back", invoke.getBool("windowed") ?? false)
self.runScanner(invoke)
}
}
@objc private func cancel(_ invoke: Invoke) {

@ -28,11 +28,6 @@ func createCaptureDeviceInput(
return captureDeviceInput
}
@available(
swift, deprecated: 5.6,
message:
"New Xcode? Check if `AVCaptureDevice.DeviceType` has new types and add them accordingly."
)
func discoverCaptureDevices() -> [AVCaptureDevice] {
if #available(iOS 13.0, *) {
return AVCaptureDevice.DiscoverySession(

@ -1 +1 @@
if("__TAURI__"in window){var __TAURI_TAURIPLUGINBARCODESCANNERAPI__=function(e){"use strict";var n=Object.defineProperty,t=(e,n,t)=>{if(!n.has(e))throw TypeError("Cannot "+t)},r=(e,n,r)=>(t(e,n,"read from private field"),r?r.call(e):n.get(e)),i=(e,n,r,i)=>(t(e,n,"write to private field"),i?i.call(e,r):n.set(e,r),r);function a(e,n=!1){let t=window.crypto.getRandomValues(new Uint32Array(1))[0],r=`_${t}`;return Object.defineProperty(window,r,{value:t=>(n&&Reflect.deleteProperty(window,r),e?.(t)),writable:!1,configurable:!0}),t}((e,t)=>{for(var r in t)n(e,r,{get:t[r],enumerable:!0})})({},{Channel:()=>c,PluginListener:()=>o,addPluginListener:()=>l,convertFileSrc:()=>d,invoke:()=>u,transformCallback:()=>a});var s,c=class{constructor(){this.__TAURI_CHANNEL_MARKER__=!0,((e,n,t)=>{if(n.has(e))throw TypeError("Cannot add the same private member more than once");n instanceof WeakSet?n.add(e):n.set(e,t)})(this,s,(()=>{})),this.id=a((e=>{r(this,s).call(this,e)}))}set onmessage(e){i(this,s,e)}get onmessage(){return r(this,s)}toJSON(){return`__CHANNEL__:${this.id}`}};s=new WeakMap;var o=class{constructor(e,n,t){this.plugin=e,this.event=n,this.channelId=t}async unregister(){return u(`plugin:${this.plugin}|remove_listener`,{event:this.event,channelId:this.channelId})}};async function l(e,n,t){let r=new c;return r.onmessage=t,u(`plugin:${e}|register_listener`,{event:n,handler:r}).then((()=>new o(e,n,r.id)))}async function u(e,n={}){return new Promise(((t,r)=>{let i=a((e=>{t(e),Reflect.deleteProperty(window,`_${s}`)}),!0),s=a((e=>{r(e),Reflect.deleteProperty(window,`_${i}`)}),!0);window.__TAURI_IPC__({cmd:e,callback:i,error:s,...n})}))}function d(e,n="asset"){let t=encodeURIComponent(e);return navigator.userAgent.includes("Windows")?`https://${n}.localhost/${t}`:`${n}://localhost/${t}`}return e.cancel=async function(){u("plugin:barcodeScanner|cancel")},e.checkPermissions=async function(){return u("plugin:barcodeScanner|check_permissions").then((e=>e.camera))},e.openAppSettings=async function(){u("plugin:barcodeScanner|open_app_settings")},e.prepare=async function(e){u("plugin:barcodeScanner|prepare",{...e})},e.requestPermissions=async function(){return u("plugin:barcodeScanner|request_permissions").then((e=>e.camera))},e.scan=async function(e){u("plugin:barcodeScanner|scan",{...e})},e}({});Object.defineProperty(window.__TAURI__,"tauriPluginBarcodeScannerApi",{value:__TAURI_TAURIPLUGINBARCODESCANNERAPI__})}
if("__TAURI__"in window){var __TAURI_BARCODESCANNER__=function(e){"use strict";var n=Object.defineProperty,t=(e,n,t)=>{if(!n.has(e))throw TypeError("Cannot "+t)},r=(e,n,r)=>(t(e,n,"read from private field"),r?r.call(e):n.get(e)),a=(e,n,r,a)=>(t(e,n,"write to private field"),a?a.call(e,r):n.set(e,r),r);function i(e,n=!1){let t=window.crypto.getRandomValues(new Uint32Array(1))[0],r=`_${t}`;return Object.defineProperty(window,r,{value:t=>(n&&Reflect.deleteProperty(window,r),e?.(t)),writable:!1,configurable:!0}),t}((e,t)=>{for(var r in t)n(e,r,{get:t[r],enumerable:!0})})({},{Channel:()=>c,PluginListener:()=>o,addPluginListener:()=>l,convertFileSrc:()=>_,invoke:()=>u,transformCallback:()=>i});var s,c=class{constructor(){this.__TAURI_CHANNEL_MARKER__=!0,((e,n,t)=>{if(n.has(e))throw TypeError("Cannot add the same private member more than once");n instanceof WeakSet?n.add(e):n.set(e,t)})(this,s,(()=>{})),this.id=i((e=>{r(this,s).call(this,e)}))}set onmessage(e){a(this,s,e)}get onmessage(){return r(this,s)}toJSON(){return`__CHANNEL__:${this.id}`}};s=new WeakMap;var o=class{constructor(e,n,t){this.plugin=e,this.event=n,this.channelId=t}async unregister(){return u(`plugin:${this.plugin}|remove_listener`,{event:this.event,channelId:this.channelId})}};async function l(e,n,t){let r=new c;return r.onmessage=t,u(`plugin:${e}|register_listener`,{event:n,handler:r}).then((()=>new o(e,n,r.id)))}async function u(e,n={}){return new Promise(((t,r)=>{let a=i((e=>{t(e),Reflect.deleteProperty(window,`_${s}`)}),!0),s=i((e=>{r(e),Reflect.deleteProperty(window,`_${a}`)}),!0);window.__TAURI_IPC__({cmd:e,callback:a,error:s,...n})}))}function _(e,n="asset"){let t=encodeURIComponent(e);return navigator.userAgent.includes("Windows")?`https://${n}.localhost/${t}`:`${n}://localhost/${t}`}return e.cancel=async function(){return await u("plugin:barcodeScanner|cancel")},e.checkPermissions=async function(){return await u("plugin:barcodeScanner|check_permissions").then((e=>e.camera))},e.openAppSettings=async function(){return await u("plugin:barcodeScanner|open_app_settings")},e.requestPermissions=async function(){return await u("plugin:barcodeScanner|request_permissions").then((e=>e.camera))},e.scan=async function(e){return await u("plugin:barcodeScanner|scan",{...e})},e}({});Object.defineProperty(window.__TAURI__,"barcodeScanner",{value:__TAURI_BARCODESCANNER__})}

Loading…
Cancel
Save