Skip to content

Commit ebd3dcb

Browse files
enhance(core): change eval to take Into<String> (#13135)
1 parent 80dccb6 commit ebd3dcb

File tree

5 files changed

+19
-10
lines changed

5 files changed

+19
-10
lines changed

.changes/eval-take-into-string.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
tauri: patch:enhance
3+
---
4+
5+
`Webview::eval` and `WebviewWindow::eval` now takes `impl Into<String>` instead of `&str` to allow passing the scripts more flexible and efficiently

crates/tauri/src/ipc/channel.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ impl JavaScriptChannelId {
128128
.unwrap()
129129
.insert(data_id, body);
130130

131-
webview.eval(&format!(
131+
webview.eval(format!(
132132
"window.__TAURI_INTERNALS__.invoke('{FETCH_CHANNEL_DATA_COMMAND}', null, {{ headers: {{ '{CHANNEL_ID_HEADER_NAME}': '{data_id}' }} }}).then((response) => window['_' + {}]({{ message: response, id: {i} }})).catch(console.error)",
133133
callback_id.0
134134
))?;
@@ -192,7 +192,7 @@ impl<TSend> Channel<TSend> {
192192
.unwrap()
193193
.insert(data_id, body);
194194

195-
webview.eval(&format!(
195+
webview.eval(format!(
196196
"window.__TAURI_INTERNALS__.invoke('{FETCH_CHANNEL_DATA_COMMAND}', null, {{ headers: {{ '{CHANNEL_ID_HEADER_NAME}': '{data_id}' }} }}).then((response) => window['_' + {}](response)).catch(console.error)",
197197
callback.0
198198
))?;

crates/tauri/src/ipc/protocol.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -331,7 +331,7 @@ fn handle_ipc_message<R: Runtime>(request: Request<String>, manager: &AppManager
331331
.expect("unable to serialize response error string to json"),
332332
};
333333

334-
let _ = webview.eval(&eval_js);
334+
let _ = webview.eval(eval_js);
335335
}
336336

337337
let can_use_channel_for_response = cmd
@@ -423,7 +423,7 @@ fn handle_ipc_message<R: Runtime>(request: Request<String>, manager: &AppManager
423423
#[cfg(feature = "tracing")]
424424
tracing::trace!("ipc.request.error {}", e);
425425

426-
let _ = webview.eval(&format!(
426+
let _ = webview.eval(format!(
427427
r#"console.error({})"#,
428428
serde_json::Value::String(e.to_string())
429429
));

crates/tauri/src/webview/mod.rs

+9-5
Original file line numberDiff line numberDiff line change
@@ -1578,8 +1578,12 @@ fn main() {
15781578
}
15791579

15801580
/// Evaluates JavaScript on this window.
1581-
pub fn eval(&self, js: &str) -> crate::Result<()> {
1582-
self.webview.dispatcher.eval_script(js).map_err(Into::into)
1581+
pub fn eval(&self, js: impl Into<String>) -> crate::Result<()> {
1582+
self
1583+
.webview
1584+
.dispatcher
1585+
.eval_script(js.into())
1586+
.map_err(Into::into)
15831587
}
15841588

15851589
/// Register a JS event listener and return its identifier.
@@ -1593,7 +1597,7 @@ fn main() {
15931597

15941598
let id = listeners.next_event_id();
15951599

1596-
self.eval(&crate::event::listen_js_script(
1600+
self.eval(crate::event::listen_js_script(
15971601
listeners.listeners_object_name(),
15981602
&serde_json::to_string(&target)?,
15991603
event,
@@ -1610,7 +1614,7 @@ fn main() {
16101614
pub(crate) fn unlisten_js(&self, event: EventName<&str>, id: EventId) -> crate::Result<()> {
16111615
let listeners = self.manager().listeners();
16121616

1613-
self.eval(&crate::event::unlisten_js_script(
1617+
self.eval(crate::event::unlisten_js_script(
16141618
listeners.listeners_object_name(),
16151619
event,
16161620
id,
@@ -1622,7 +1626,7 @@ fn main() {
16221626
}
16231627

16241628
pub(crate) fn emit_js(&self, emit_args: &EmitArgs, ids: &[u32]) -> crate::Result<()> {
1625-
self.eval(&crate::event::emit_js_script(
1629+
self.eval(crate::event::emit_js_script(
16261630
self.manager().listeners().function_name(),
16271631
emit_args,
16281632
&serde_json::to_string(ids)?,

crates/tauri/src/webview/webview_window.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1969,7 +1969,7 @@ impl<R: Runtime> WebviewWindow<R> {
19691969
}
19701970

19711971
/// Evaluates JavaScript on this window.
1972-
pub fn eval(&self, js: &str) -> crate::Result<()> {
1972+
pub fn eval(&self, js: impl Into<String>) -> crate::Result<()> {
19731973
self.webview.eval(js)
19741974
}
19751975

0 commit comments

Comments
 (0)