diff --git a/frontend/src/app/main/data/workspace/versions.cljs b/frontend/src/app/main/data/workspace/versions.cljs index 706397f2d..a9de40a13 100644 --- a/frontend/src/app/main/data/workspace/versions.cljs +++ b/frontend/src/app/main/data/workspace/versions.cljs @@ -117,7 +117,7 @@ (rx/of (ptk/event ::ev/event {::ev/name "rename-version"})))))) (defn restore-version - [project-id file-id id] + [project-id file-id id origin] (dm/assert! (uuid? project-id)) (dm/assert! (uuid? file-id)) (dm/assert! (uuid? id)) @@ -132,7 +132,17 @@ (rx/take 1) (rx/mapcat #(rp/cmd! :restore-file-snapshot {:file-id file-id :id id})) (rx/map #(dw/initialize-file project-id file-id))) - (rx/of (ptk/event ::ev/event {::ev/name "restore-version"})))))) + (case origin + :version + (rx/of (ptk/event ::ev/event {::ev/name "restore-pin-version"})) + + :snapshot + (rx/of (ptk/event ::ev/event {::ev/name "restore-autosave"})) + + :plugin + (rx/of (ptk/event ::ev/event {::ev/name "restore-version-plugin"})) + + (rx/empty)))))) (defn delete-version [file-id id] diff --git a/frontend/src/app/main/ui/workspace/sidebar/versions.cljs b/frontend/src/app/main/ui/workspace/sidebar/versions.cljs index fd0108c4c..31ec42c84 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/versions.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/versions.cljs @@ -274,10 +274,11 @@ (fn [id label] (st/emit! (dwv/rename-version file-id id label)))) + handle-restore-version (mf/use-fn (mf/deps project-id file-id) - (fn [id] + (fn [origin id] (st/emit! (ntf/dialog :content (tr "workspace.versions.restore-warning") @@ -287,9 +288,21 @@ :callback #(st/emit! (ntf/hide))} {:label (tr "labels.restore") :type :primary - :callback #(st/emit! (dwv/restore-version project-id file-id id))}] + :callback #(st/emit! (dwv/restore-version project-id file-id id origin))}] :tag :restore-dialog)))) + handle-restore-version-pinned + (mf/use-fn + (mf/deps handle-restore-version) + (fn [id] + (handle-restore-version :version id))) + + handle-restore-version-snapshot + (mf/use-fn + (mf/deps handle-restore-version) + (fn [id] + (handle-restore-version :snapshot id))) + handle-delete-version (mf/use-fn (mf/deps file-id) @@ -362,7 +375,7 @@ :editing? (= (:id entry) editing) :profile (get users (:profile-id entry)) :on-rename-version handle-rename-version - :on-restore-version handle-restore-version + :on-restore-version handle-restore-version-pinned :on-delete-version handle-delete-version}] :snapshot @@ -371,7 +384,7 @@ :entry entry :is-expanded (contains? @expanded idx-entry) :on-toggle-expand handle-toggle-expand - :on-restore-snapshot handle-restore-version + :on-restore-snapshot handle-restore-version-snapshot :on-pin-snapshot handle-pin-version}] nil))])])])) diff --git a/frontend/src/app/plugins/file.cljs b/frontend/src/app/plugins/file.cljs index 8e6a83856..07bedf5e7 100644 --- a/frontend/src/app/plugins/file.cljs +++ b/frontend/src/app/plugins/file.cljs @@ -40,7 +40,7 @@ :else (let [project-id (:current-project-id @st/state)] - (st/emit! (dwv/restore-version project-id $file $version))))) + (st/emit! (dwv/restore-version project-id $file $version :plugin))))) (remove [_]