diff --git a/frontend/src/app/plugins/api.cljs b/frontend/src/app/plugins/api.cljs index b56b4c568..0b6cb731d 100644 --- a/frontend/src/app/plugins/api.cljs +++ b/frontend/src/app/plugins/api.cljs @@ -52,6 +52,10 @@ [_ type callback] (events/add-listener type callback)) + (removeListener + [_ listener-id] + (events/remove-listener listener-id)) + (getViewport [_] (viewport/create-proxy)) diff --git a/frontend/src/app/plugins/events.cljs b/frontend/src/app/plugins/events.cljs index aaf768cf9..6405c8a7b 100644 --- a/frontend/src/app/plugins/events.cljs +++ b/frontend/src/app/plugins/events.cljs @@ -14,6 +14,14 @@ (defmulti handle-state-change (fn [type _] type)) +(defmethod handle-state-change "finish" + [_ old-val new-val] + (let [old-file-id (:current-file-id old-val) + new-file-id (:current-file-id new-val)] + (if (and (some? old-file-id) (nil? new-file-id)) + (str old-file-id) + ::not-changed))) + (defmethod handle-state-change "filechange" [_ old-val new-val] (let [old-file (:workspace-file old-val) @@ -72,3 +80,6 @@ ;; return the generated key key)) +(defn remove-listener + [key] + (remove-watch st/state key))