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

This commit is contained in:
charlie
2022-07-12 18:17:03 +08:00
committed by Tienson Qin
parent cc04718576
commit 6facd22ea0

View File

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