瀏覽代碼

feat(core): fallback to Window and AppHandle resource table on close (#11398)

this changes the resource plugin close() API to fallback to the parent window and AppHandle resource tables, letting the JS to delete global resources.
The need for this was brought up on https://github.com/tauri-apps/plugins-workspace/pull/1860#issuecomment-2419175001
the store plugin stores the resources in the AppHandle, and we want the existing close() API to work on global resources otherwise every consumer needs their own resource close commands
Lucas Fernandes Nogueira 9 月之前
父節點
當前提交
eb61d44f9f
共有 2 個文件被更改,包括 13 次插入1 次删除
  1. 5 0
      .changes/resources-close-fallback.md
  2. 8 1
      crates/tauri/src/resources/plugin.rs

+ 5 - 0
.changes/resources-close-fallback.md

@@ -0,0 +1,5 @@
+---
+"tauri": patch:enhance
+---
+
+Fallback to the Window and AppHandle resource table when closing a resource by ID.

+ 8 - 1
crates/tauri/src/resources/plugin.rs

@@ -12,7 +12,14 @@ use super::ResourceId;
 
 #[command(root = "crate")]
 fn close<R: Runtime>(webview: Webview<R>, rid: ResourceId) -> crate::Result<()> {
-  webview.resources_table().close(rid)
+  let mut result = webview.resources_table().close(rid);
+  if result.is_err() {
+    result = webview.window().resources_table().close(rid);
+    if result.is_err() {
+      result = webview.app_handle().resources_table().close(rid);
+    }
+  }
+  result
 }
 
 pub(crate) fn init<R: Runtime>() -> TauriPlugin<R> {