// Copyright 2019-2023 Tauri Programme within The Commons Conservancy // SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: MIT #![cfg(mobile)] use tauri::{ plugin::{Builder, PluginHandle, TauriPlugin}, Manager, Runtime, }; pub use models::*; mod error; mod models; pub use error::{Error, Result}; #[cfg(target_os = "android")] const PLUGIN_IDENTIFIER: &str = "app.tauri.barcodescanner"; #[cfg(target_os = "ios")] tauri::ios_plugin_binding!(init_plugin_barcode_scanner); /// Access to the scanner APIs. pub struct BarcodeScanner(PluginHandle); impl BarcodeScanner {} /// Extensions to [`tauri::App`], [`tauri::AppHandle`] and [`tauri::Window`] to access the barcode scanner APIs. pub trait BarcodeScannerExt { fn barcode_scanner(&self) -> &BarcodeScanner; } impl> crate::BarcodeScannerExt for T { fn barcode_scanner(&self) -> &BarcodeScanner { self.state::>().inner() } } /// Initializes the plugin. pub fn init() -> TauriPlugin { Builder::new("barcode-scanner") .setup(|app, api| { #[cfg(target_os = "android")] let handle = api.register_android_plugin(PLUGIN_IDENTIFIER, "BarcodeScannerPlugin")?; #[cfg(target_os = "ios")] let handle = api.register_ios_plugin(init_plugin_barcode_scanner)?; app.manage(BarcodeScanner(handle)); Ok(()) }) .build() }