// Copyright 2019-2023 Tauri Programme within The Commons Conservancy // SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: MIT #[path = "src/config.rs"] mod config; use config::{AssociatedDomain, Config}; const COMMANDS: &[&str] = &["get_current", "register", "unregister", "is_registered"]; // TODO: Consider using activity-alias in case users may have multiple activities in their app. // TODO: Do we want to support the other path* configs too? fn intent_filter(domain: &AssociatedDomain) -> String { format!( r#" {} "#, domain.host, domain .path_prefix .iter() .map(|prefix| format!(r#""#)) .collect::>() .join("\n ") ) } fn main() { let result = tauri_plugin::Builder::new(COMMANDS) .global_api_script_path("./api-iife.js") .android_path("android") .try_build(); // when building documentation for Android the plugin build result is always Err() and is irrelevant to the crate documentation build if !(cfg!(docsrs) && std::env::var("TARGET").unwrap().contains("android")) { result.unwrap(); } if let Some(config) = tauri_plugin::plugin_config::("deep-link") { tauri_plugin::mobile::update_android_manifest( "DEEP LINK PLUGIN", "activity", config .mobile .iter() .map(intent_filter) .collect::>() .join("\n"), ) .expect("failed to rewrite AndroidManifest.xml"); #[cfg(target_os = "macos")] { tauri_plugin::mobile::update_entitlements(|entitlements| { entitlements.insert( "com.apple.developer.associated-domains".into(), config .mobile .into_iter() .map(|d| format!("applinks:{}", d.host).into()) .collect::>() .into(), ); }) .expect("failed to update entitlements"); } } }