Переглянути джерело

feat(core): enfore label uniqueness, closes #2067 (#2097)

Lucas Fernandes Nogueira 4 роки тому
батько
коміт
d18b5367a9

+ 5 - 0
.changes/window-label-unique.md

@@ -0,0 +1,5 @@
+---
+"tauri": patch
+---
+
+Enfore uniqueness of window label.

+ 3 - 0
core/tauri/src/error.rs

@@ -17,6 +17,9 @@ pub enum Error {
   /// Failed to create window.
   #[error("failed to create window")]
   CreateWindow,
+  /// Window label must be unique.
+  #[error("a window with label `{0}` already exists")]
+  WindowLabelAlreadyExists(String),
   /// Can't access webview dispatcher because the webview was closed or not found.
   #[error("webview not found: invalid label or it was closed")]
   WebviewNotFound,

+ 5 - 0
core/tauri/src/manager.rs

@@ -658,6 +658,11 @@ impl<P: Params> WindowManager<P> {
     mut pending: PendingWindow<P>,
     pending_labels: &[P::Label],
   ) -> crate::Result<PendingWindow<P>> {
+    if self.windows_lock().contains_key(&pending.label) {
+      return Err(crate::Error::WindowLabelAlreadyExists(
+        pending.label.to_string(),
+      ));
+    }
     let (is_local, url) = match &pending.webview_attributes.url {
       WindowUrl::App(path) => {
         let url = self.get_url();