소스 검색

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> {