tauri_plugin_device/
lib.rs1use tauri::{
2 plugin::{Builder, TauriPlugin},
3 Manager, Runtime,
4};
5
6pub use models::*;
7
8#[cfg(desktop)]
9mod desktop;
10#[cfg(mobile)]
11mod mobile;
12
13mod commands;
14mod error;
15mod models;
16
17pub use error::{Error, Result};
18
19#[cfg(desktop)]
20use desktop::Device;
21#[cfg(mobile)]
22use mobile::Device;
23use crate::commands::get_id;
24
25pub trait DeviceExt<R: Runtime> {
27 fn device(&self) -> &Device<R>;
28}
29
30impl<R: Runtime, T: Manager<R>> crate::DeviceExt<R> for T {
31 fn device(&self) -> &Device<R> {
32 self.state::<Device<R>>().inner()
33 }
34}
35
36pub fn init<R: Runtime>() -> TauriPlugin<R> {
38 Builder::new("device")
39 .invoke_handler(tauri::generate_handler![get_id])
40 .setup(|app, api| {
41 #[cfg(mobile)]
42 let device = mobile::init(app, api)?;
43 #[cfg(desktop)]
44 let device = desktop::init(app, api)?;
45 app.manage(device);
46 Ok(())
47 })
48 .build()
49}