From 30c7685eb82c7a1a9af53abdca7d75b1a886cc6e Mon Sep 17 00:00:00 2001 From: LiesAuer Date: Tue, 20 Aug 2024 03:41:28 +0800 Subject: [PATCH] feat: add `Builder::append_invoke_initialization_script` (#10295) * Allow to append a custom initialization script * docs: add doc for `Builder::append_invoke_initialization_script` * Update core/tauri/src/app.rs * Update core/tauri/src/app.rs * add change file * fix signature * fix doc test * doc fmt --------- Co-authored-by: Lucas Fernandes Nogueira --- .../append_invoke_initialization_script.md | 5 ++ core/tauri/src/app.rs | 47 +++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 .changes/append_invoke_initialization_script.md diff --git a/.changes/append_invoke_initialization_script.md b/.changes/append_invoke_initialization_script.md new file mode 100644 index 000000000..b0fba2cca --- /dev/null +++ b/.changes/append_invoke_initialization_script.md @@ -0,0 +1,5 @@ +--- +"tauri": patch:enhance +--- + +Added `Builder::append_invoke_initialization_script`. diff --git a/core/tauri/src/app.rs b/core/tauri/src/app.rs index ba800cf55..a5900a05f 100644 --- a/core/tauri/src/app.rs +++ b/core/tauri/src/app.rs @@ -1328,6 +1328,53 @@ impl Builder { self } + /// Append a custom initialization script. + /// + /// Allow to append custom initialization script instend of replacing entire invoke system. + /// + /// # Examples + /// + /// ``` + /// let custom_script = r#" + /// // A custom call system bridge build on top of tauri invoke system. + /// async function invoke(cmd, args = {}) { + /// if (!args) args = {}; + /// + /// let prefix = ""; + /// + /// if (args?.__module) { + /// prefix = `plugin:hybridcall.${args.__module}|`; + /// } + /// + /// const command = `${prefix}tauri_${cmd}`; + /// + /// const invoke = window.__TAURI_INTERNALS__.invoke; + /// + /// return invoke(command, args).then(result => { + /// if (window.build.debug) { + /// console.log(`call: ${command}`); + /// console.log(`args: ${JSON.stringify(args)}`); + /// console.log(`return: ${JSON.stringify(result)}`); + /// } + /// + /// return result; + /// }); + /// } + /// "#; + /// + /// tauri::Builder::default() + /// .append_invoke_initialization_script(custom_script); + /// ``` + pub fn append_invoke_initialization_script( + mut self, + initialization_script: impl AsRef, + ) -> Self { + self + .invoke_initialization_script + .push_str(initialization_script.as_ref()); + self + } + /// Defines the setup hook. /// /// # Examples