1 use serde::de::DeserializeOwned;
2 use tauri::{
3 plugin::{PluginApi, PluginHandle},
4 AppHandle, Runtime,
5 };
6
7 use crate::models::*;
8
9 #[cfg(target_os = "ios")]
10 tauri::ios_plugin_binding!(init_plugin_ios_window);
11
12 // initializes the Kotlin or Swift plugin classes
13 pub fn init<R: Runtime, C: DeserializeOwned>(
14 _app: &AppHandle<R>,
15 api: PluginApi<R, C>,
16 ) -> crate::Result<TauriPluginIosWindow<R>> {
17 #[cfg(target_os = "ios")]
18 let handle = api.register_ios_plugin(init_plugin_ios_window)?;
19 Ok(TauriPluginIosWindow(handle))
20 }
21
22 /// Access to the tauri-plugin-ios-window APIs.
23 pub struct TauriPluginIosWindow<R: Runtime>(PluginHandle<R>);
24
25 impl<R: Runtime> TauriPluginIosWindow<R> {
26 pub fn open(&self, payload: OpenRequest) -> crate::Result<()> {
27 self.0
28 .run_mobile_plugin("open", payload)
29 .map_err(Into::into)
30 }
31
32 pub fn close(&self) -> crate::Result<()> {
33 self.0
34 .run_mobile_plugin::<()>("close", ())
35 .map_err(Into::into)
36 }
37 }