diff --git a/.changes/fix-ipc-payload.md b/.changes/fix-ipc-payload.md new file mode 100644 index 000000000..ea495b054 --- /dev/null +++ b/.changes/fix-ipc-payload.md @@ -0,0 +1,5 @@ +--- +"tauri": 'patch:bug' +--- + +No longer unpacking and flattening the `payload` over the IPC so that commands with arguments called `cmd`, `callback`, `error`, `options` or `payload` aren't breaking the IPC. diff --git a/core/tauri/scripts/core.js b/core/tauri/scripts/core.js index 6c33e0a0b..61bdf1d67 100644 --- a/core/tauri/scripts/core.js +++ b/core/tauri/scripts/core.js @@ -59,11 +59,11 @@ window.__TAURI_INVOKE__ = function invoke(cmd, payload = {}, options) { return new Promise(function (resolve, reject) { - var callback = window.__TAURI__.transformCallback(function (r) { + const callback = window.__TAURI__.transformCallback(function (r) { resolve(r) delete window[`_${error}`] }, true) - var error = window.__TAURI__.transformCallback(function (e) { + const error = window.__TAURI__.transformCallback(function (e) { reject(e) delete window[`_${callback}`] }, true) diff --git a/core/tauri/scripts/ipc-protocol.js b/core/tauri/scripts/ipc-protocol.js index 724284af8..8d3ac764e 100644 --- a/core/tauri/scripts/ipc-protocol.js +++ b/core/tauri/scripts/ipc-protocol.js @@ -44,7 +44,7 @@ }) } else { // otherwise use the postMessage interface - const { data } = processIpcMessage({ cmd, callback, error, options, ...payload }) + const { data } = processIpcMessage({ cmd, callback, error, options, payload }) window.ipc.postMessage(data) } } diff --git a/core/tauri/src/ipc/protocol.rs b/core/tauri/src/ipc/protocol.rs index 60883c5c8..f0cd1d06e 100644 --- a/core/tauri/src/ipc/protocol.rs +++ b/core/tauri/src/ipc/protocol.rs @@ -127,7 +127,6 @@ fn handle_ipc_message(message: String, manager: &WindowManager, l cmd: String, callback: CallbackFn, error: CallbackFn, - #[serde(flatten)] payload: serde_json::Value, options: Option, } @@ -142,7 +141,6 @@ fn handle_ipc_message(message: String, manager: &WindowManager, l cmd: String, callback: CallbackFn, error: CallbackFn, - #[serde(flatten)] payload: crate::utils::pattern::isolation::RawIsolationPayload<'a>, options: Option, }