Skip to content

Commit eff778b

Browse files
authored
fix(core): run plugin init script in a separate context (#9571)
1 parent 6d5a396 commit eff778b

File tree

4 files changed

+13
-12
lines changed

4 files changed

+13
-12
lines changed

Diff for: .changes/plugin-init-script-context.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"tauri": patch:enhance
3+
---
4+
5+
Run each plugin initialization script on its own context so they do not interfere with each other or the Tauri init script.

Diff for: core/tauri/scripts/init.js

-2
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,4 @@
1414
__RAW_event_initialization_script__
1515

1616
__RAW_bundle_script__
17-
18-
__RAW_plugin_initialization_script__
1917
})()

Diff for: core/tauri/src/manager/webview.rs

+5-6
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ impl<R: Runtime> WebviewManager<R> {
133133
let app_manager = manager.manager();
134134

135135
let is_init_global = app_manager.config.app.with_global_tauri;
136-
let plugin_init = app_manager
136+
let plugin_init_scripts = app_manager
137137
.plugins
138138
.lock()
139139
.expect("poisoned plugin store")
@@ -199,10 +199,13 @@ impl<R: Runtime> WebviewManager<R> {
199199
app_manager,
200200
&ipc_init.into_string(),
201201
&pattern_init.into_string(),
202-
&plugin_init,
203202
is_init_global,
204203
)?);
205204

205+
for plugin_init_script in plugin_init_scripts {
206+
webview_attributes = webview_attributes.initialization_script(&plugin_init_script);
207+
}
208+
206209
#[cfg(feature = "isolation")]
207210
if let crate::Pattern::Isolation { schema, .. } = &*app_manager.pattern {
208211
webview_attributes = webview_attributes.initialization_script(
@@ -345,7 +348,6 @@ impl<R: Runtime> WebviewManager<R> {
345348
app_manager: &AppManager<R>,
346349
ipc_script: &str,
347350
pattern_script: &str,
348-
plugin_initialization_script: &str,
349351
with_global_tauri: bool,
350352
) -> crate::Result<String> {
351353
#[derive(Template)]
@@ -362,8 +364,6 @@ impl<R: Runtime> WebviewManager<R> {
362364
#[raw]
363365
event_initialization_script: &'a str,
364366
#[raw]
365-
plugin_initialization_script: &'a str,
366-
#[raw]
367367
freeze_prototype: &'a str,
368368
}
369369

@@ -398,7 +398,6 @@ impl<R: Runtime> WebviewManager<R> {
398398
app_manager.listeners().function_name(),
399399
app_manager.listeners().listeners_object_name(),
400400
),
401-
plugin_initialization_script,
402401
freeze_prototype,
403402
}
404403
.render_default(&Default::default())

Diff for: core/tauri/src/plugin.rs

+3-4
Original file line numberDiff line numberDiff line change
@@ -783,14 +783,13 @@ impl<R: Runtime> PluginStore<R> {
783783
}
784784

785785
/// Generates an initialization script from all plugins in the store.
786-
pub(crate) fn initialization_script(&self) -> String {
786+
pub(crate) fn initialization_script(&self) -> Vec<String> {
787787
self
788788
.store
789789
.iter()
790790
.filter_map(|p| p.initialization_script())
791-
.fold(String::new(), |acc, script| {
792-
format!("{acc}\n(function () {{ {script} }})();")
793-
})
791+
.map(|script| format!("(function () {{ {script} }})();"))
792+
.collect()
794793
}
795794

796795
/// Runs the created hook for all plugins in the store.

0 commit comments

Comments
 (0)