tauri_plugin_barcode_scanner/
lib.rs1#![cfg(mobile)]
10
11use tauri::{
12 Manager, Runtime,
13 plugin::{Builder, PluginHandle, TauriPlugin},
14};
15
16mod error;
17mod models;
18
19pub use error::{Error, Result};
20
21#[cfg(target_os = "android")]
22const PLUGIN_IDENTIFIER: &str = "app.tauri.barcodescanner";
23
24#[cfg(target_os = "ios")]
25tauri::ios_plugin_binding!(init_plugin_barcode_scanner);
26
27pub struct BarcodeScanner<R: Runtime>(PluginHandle<R>);
29
30impl<R: Runtime> BarcodeScanner<R> {}
31
32pub trait BarcodeScannerExt<R: Runtime> {
34 fn barcode_scanner(&self) -> &BarcodeScanner<R>;
36}
37
38impl<R: Runtime, T: Manager<R>> crate::BarcodeScannerExt<R> for T {
39 fn barcode_scanner(&self) -> &BarcodeScanner<R> {
40 self.state::<BarcodeScanner<R>>().inner()
41 }
42}
43
44pub fn init<R: Runtime>() -> TauriPlugin<R> {
46 Builder::new("barcode-scanner")
47 .setup(|app, api| {
48 #[cfg(target_os = "android")]
49 let handle = api.register_android_plugin(PLUGIN_IDENTIFIER, "BarcodeScannerPlugin")?;
50 #[cfg(target_os = "ios")]
51 let handle = api.register_ios_plugin(init_plugin_barcode_scanner)?;
52 app.manage(BarcodeScanner(handle));
53 Ok(())
54 })
55 .build()
56}