1
0
Эх сурвалжийг харах

fix(plugin): occasional memory leak when dynamic slot ui with provide ui

charlie 3 жил өмнө
parent
commit
6facd22ea0

+ 9 - 2
src/main/frontend/components/plugins.cljs

@@ -795,15 +795,22 @@
          id      (str "slot__" rs)
          *el-ref (rum/use-ref nil)]
 
+     (rum/use-effect!
+      (fn []
+        (let [timer (js/setTimeout
+                     #(plugin-handler/hook-plugin-app type {:slot id :payload payload} nil)
+                     100)]
+          #(js/clearTimeout timer)))
+      [id])
+
      (rum/use-effect!
       (fn []
         (let [el (rum/deref *el-ref)]
-          (plugin-handler/hook-plugin-app type {:slot id :payload payload} nil)
           #(when-let [uis (seq (.querySelectorAll el "[data-injected-ui]"))]
              (doseq [^js el uis]
                (when-let [id (.-injectedUi (.-dataset el))]
                  (js/LSPluginCore._forceCleanInjectedUI id))))))
-      [id])
+      [])
 
      [:div.lsp-hook-ui-slot
       (merge opts {:id            id