diff --git a/apps/desktop/src-tauri/src/deeplink_actions.rs b/apps/desktop/src-tauri/src/deeplink_actions.rs index a117028487..7755d0902c 100644 --- a/apps/desktop/src-tauri/src/deeplink_actions.rs +++ b/apps/desktop/src-tauri/src/deeplink_actions.rs @@ -32,6 +32,9 @@ pub enum DeepLinkAction { OpenSettings { page: Option, }, + StartDefaultRecording, + PauseRecording, + ResumeRecording, } pub fn handle(app_handle: &AppHandle, urls: Vec) { @@ -88,6 +91,16 @@ impl TryFrom<&Url> for DeepLinkAction { .map_err(|_| ActionParseFromUrlError::Invalid); } + if url.scheme() == "cap" { + return match url.host_str() { + Some("record") => Ok(Self::StartDefaultRecording), + Some("stop") => Ok(Self::StopRecording), + Some("pause") => Ok(Self::PauseRecording), + Some("resume") => Ok(Self::ResumeRecording), + _ => Err(ActionParseFromUrlError::Invalid), + }; + } + match url.domain() { Some(v) if v != "action" => Err(ActionParseFromUrlError::NotAction), _ => Err(ActionParseFromUrlError::Invalid), @@ -153,6 +166,15 @@ impl DeepLinkAction { DeepLinkAction::OpenSettings { page } => { crate::show_window(app.clone(), ShowCapWindow::Settings { page }).await } + DeepLinkAction::StartDefaultRecording => { + app.emit("request-open-recording-picker", ()).map_err(|e| e.to_string()) + } + DeepLinkAction::PauseRecording => { + crate::recording::pause_recording(app.clone(), app.state()).await + } + DeepLinkAction::ResumeRecording => { + crate::recording::resume_recording(app.clone(), app.state()).await + } } } } diff --git a/apps/desktop/src-tauri/tauri.conf.json b/apps/desktop/src-tauri/tauri.conf.json index 691c2f0995..80aba7fd80 100644 --- a/apps/desktop/src-tauri/tauri.conf.json +++ b/apps/desktop/src-tauri/tauri.conf.json @@ -30,7 +30,7 @@ "updater": { "active": false, "pubkey": "" }, "deep-link": { "desktop": { - "schemes": ["cap-desktop"] + "schemes": ["cap-desktop", "cap"] } } },