From eec677873b29203a234ff17d5c1e0db8a920a59c Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Mon, 6 Sep 2021 11:49:58 +0800 Subject: [PATCH] enhance: page history support reverting back --- src/main/frontend/components/git.cljs | 17 ++++++++++++++++- src/main/frontend/handler/events.cljs | 3 +++ src/main/frontend/handler/shell.cljs | 5 +---- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/main/frontend/components/git.cljs b/src/main/frontend/components/git.cljs index 16b3168c6..b63701bca 100644 --- a/src/main/frontend/components/git.cljs +++ b/src/main/frontend/components/git.cljs @@ -3,7 +3,9 @@ [frontend.ui :as ui] [frontend.util :as util] [clojure.string :as string] - [frontend.handler.shell :as shell])) + [frontend.handler.shell :as shell] + [frontend.handler.file :as file] + [frontend.state :as state])) (rum/defcs set-git-username-and-email < (rum/local "" ::username) @@ -43,3 +45,16 @@ (not (string/blank? email))) (shell/set-git-username-and-email username email))))} "Submit"]]]])) + +(rum/defc file-specific-version + [path hash content] + [:div.w-full.sm:max-w-lg {:style {:width 700}} + [:div.font-bold.mb-4 (str path (util/format " (%s)" hash)) ] + [:pre content] + (ui/button "Revert" + :on-click (fn [] + (file/alter-file (state/get-current-repo) + path + content + {:re-render-root? true + :skip-compare? true})))]) diff --git a/src/main/frontend/handler/events.cljs b/src/main/frontend/handler/events.cljs index 7daac50b2..8d08dbc1d 100644 --- a/src/main/frontend/handler/events.cljs +++ b/src/main/frontend/handler/events.cljs @@ -158,6 +158,9 @@ (when-let [repo (state/get-current-repo)] (state/set-modal! #(diff/local-file repo path disk-content db-content)))) +(defmethod handle :modal/display-file-version [[_ path content hash]] + (state/set-modal! #(git-component/file-specific-version path hash content))) + (defmethod handle :after-db-restore [[_ repos]] (mapv (fn [{url :url} repo] ;; compare :ast/version diff --git a/src/main/frontend/handler/shell.cljs b/src/main/frontend/handler/shell.cljs index 8973b6c16..1c736f402 100644 --- a/src/main/frontend/handler/shell.cljs +++ b/src/main/frontend/handler/shell.cljs @@ -53,10 +53,7 @@ local-dir (config/get-local-dir repo) path (string/replace path (str local-dir "/") "")] (p/let [content (run-git-command! ["show" (str hash ":" path)])] - (state/pub-event! [:modal/show - [:div.w-full.sm:max-w-lg {:style {:width 700}} - [:div.font-bold.mb-4 (str path (util/format " (%s)" hash)) ] - [:pre content]]]))))) + (state/pub-event! [:modal/display-file-version path content hash]))))) (defn get-file-latest-git-log [page n]