From 0260464d179dcf6a49862c148704ea71968f41a2 Mon Sep 17 00:00:00 2001 From: m00nwtchr Date: Sun, 25 Feb 2024 07:46:29 +0100 Subject: [PATCH] add more domain attributes --- plugins/deep-link/build.rs | 33 +++++++++++++++++++++++++++++---- plugins/deep-link/src/config.rs | 10 ++++++++++ 2 files changed, 39 insertions(+), 4 deletions(-) diff --git a/plugins/deep-link/build.rs b/plugins/deep-link/build.rs index bffa4675..ce2da418 100644 --- a/plugins/deep-link/build.rs +++ b/plugins/deep-link/build.rs @@ -9,25 +9,50 @@ use config::{AssociatedDomain, Config}; const COMMANDS: &[&str] = &["get_current"]; // 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 + .scheme + .iter() + .map(|scheme| format!(r#""#)) + .collect::>() + .join("\n "), domain.host, + domain + .path + .iter() + .map(|path| format!(r#""#)) + .collect::>() + .join("\n "), + domain + .path_pattern + .iter() + .map(|pattern| format!(r#""#)) + .collect::>() + .join("\n "), domain .path_prefix .iter() .map(|prefix| format!(r#""#)) .collect::>() - .join("\n ") + .join("\n "), + domain + .path_suffix + .iter() + .map(|suffix| format!(r#""#)) + .collect::>() + .join("\n "), ) } diff --git a/plugins/deep-link/src/config.rs b/plugins/deep-link/src/config.rs index 80f0a4c0..01470d4f 100644 --- a/plugins/deep-link/src/config.rs +++ b/plugins/deep-link/src/config.rs @@ -10,10 +10,20 @@ use serde::{Deserialize, Deserializer}; #[derive(Deserialize)] pub struct AssociatedDomain { + #[serde(default)] + pub scheme: Vec, + #[serde(deserialize_with = "deserialize_associated_host")] pub host: String, + + #[serde(default)] + pub path: Vec, + #[serde(default, alias = "path-pattern", rename = "pathPattern")] + pub path_pattern: Vec, #[serde(default, alias = "path-prefix", rename = "pathPrefix")] pub path_prefix: Vec, + #[serde(default, alias = "path-suffix", rename = "pathSuffix")] + pub path_suffix: Vec, } fn deserialize_associated_host<'de, D>(deserializer: D) -> Result