From ebfda9db8b35c61a36d96d94b54655a0f2a8924c Mon Sep 17 00:00:00 2001 From: defclass Date: Thu, 24 Dec 2020 09:49:21 +0800 Subject: [PATCH 1/7] feat(OAuth): add google login --- src/main/frontend/components/header.cljs | 12 +++++++++++- src/main/frontend/components/home.cljs | 4 ++-- src/main/frontend/components/sidebar.cljs | 21 +++++++++++++++++---- src/main/frontend/dicts.cljs | 15 +++++++++++++++ 4 files changed, 45 insertions(+), 7 deletions(-) diff --git a/src/main/frontend/components/header.cljs b/src/main/frontend/components/header.cljs index bf41f0d41d..7975e28b5a 100644 --- a/src/main/frontend/components/header.cljs +++ b/src/main/frontend/components/header.cljs @@ -159,7 +159,17 @@ {:href "/login/github" :on-click (fn [] (storage/remove :git/current-repo))} - (t :login-github)]) + (t :login-github)] + + ) + + (when (and (not logged?) + (not config/publishing?)) + [:a.text-sm.font-medium.login.opacity-70.hover:opacity-100 + {:href "/login/google" + :on-click (fn [] + (storage/remove :git/current-repo))} + (t :login-google)]) (repo/sync-status) diff --git a/src/main/frontend/components/home.cljs b/src/main/frontend/components/home.cljs index ff3e60313f..6e44dc8aae 100644 --- a/src/main/frontend/components/home.cljs +++ b/src/main/frontend/components/home.cljs @@ -3,5 +3,5 @@ [frontend.components.sidebar :as sidebar])) (rum/defc home - [] - (sidebar/main-content)) + [args] + (sidebar/main-content args)) diff --git a/src/main/frontend/components/sidebar.cljs b/src/main/frontend/components/sidebar.cljs index 61052ce9a4..ee6a403b80 100644 --- a/src/main/frontend/components/sidebar.cljs +++ b/src/main/frontend/components/sidebar.cljs @@ -28,7 +28,8 @@ [goog.object :as gobj] [frontend.context.i18n :as i18n] [reitit.frontend.easy :as rfe] - [goog.dom :as gdom])) + [goog.dom :as gdom] + [frontend.handler.web.nfs :as nfs-handler])) (defn nav-item [title href svg-d active? close-modal-fn] @@ -143,6 +144,7 @@ (defonce sidebar-inited? (atom false)) ;; TODO: simplify logic + (rum/defc main-content < rum/reactive db-mixins/query {:init (fn [state] (when-not @sidebar-inited? @@ -161,8 +163,10 @@ (state/sidebar-add-block! current-repo db-id block-type nil)))) (reset! sidebar-inited? true)))) state)} - [] - (let [today (state/sub :today) + [args] + (let [query (get-in args [:parameters :query]) + login-source (:login_source query) + today (state/sub :today) cloning? (state/sub :repo/cloning?) default-home (get-default-home-if-valid) importing-to-db? (state/sub :repo/importing-to-db?) @@ -205,7 +209,16 @@ (journal/journals latest-journals) (and logged? (empty? (:repos me))) - (widgets/add-repo) + (case login-source + "google" + (if-not (nfs-handler/supported?) + [:div (t :help/select-nfs-browser)] + [:div (t :help/open-top-right-open-button)]) + + "github" + (widgets/add-repo) + + (widgets/add-repo)) ;; FIXME: why will this happen? :else diff --git a/src/main/frontend/dicts.cljs b/src/main/frontend/dicts.cljs index c39788ca3b..f32ce38195 100644 --- a/src/main/frontend/dicts.cljs +++ b/src/main/frontend/dicts.cljs @@ -148,6 +148,8 @@ title: How to take dummy notes? :help/move-block-down "Move Block Down" :help/create-new-block "Create New Block" :help/new-line-in-block "New Line in Block" + :help/open-top-right-open-button "Please click the top right 'Open' button to open local directory." + :help/select-nfs-browser "Please use another browser (like latest chrome) which support NFS feature to open local directory." :undo "Undo" :redo "Redo" :help/zoom-in "Zoom In" @@ -331,6 +333,7 @@ title: How to take dummy notes? :parsing-files "Parsing files" :loading-files "Loading files" :login-github "Login with Github" + :login-google "Login with Google" :go-to "Go to " :or "or" :download "Download" @@ -366,6 +369,8 @@ title: How to take dummy notes? :help/move-block-down "Déplacer un bloc en dessous" :help/create-new-block "Créer un nouveau bloc" :help/new-line-in-block "Aller à la ligne dans un bloc" + :help/open-top-right-open-button "Please click the top right 'Open' button to open local directory." + :help/select-nfs-browser "Please use another browser (like latest chrome) which support NFS feature to open local directory." :undo "Annuler" :redo "Redo" :help/zoom-in "Zoomer" @@ -543,6 +548,7 @@ title: How to take dummy notes? :parsing-files "Analyse des fichiers" :loading-files "Chargement des fichiers" :login-github "S'authentifier avec Github" + :login-google "S'authentifier avec Google" :go-to "Aller à " :or "ou" :download "Télécharger" @@ -623,6 +629,8 @@ title: How to take dummy notes? :help/move-block-down "向下移动块" :help/create-new-block "创建块" :help/new-line-in-block "块中新建行" + :help/open-top-right-open-button "请点击右上角的 Open 来打开本地文件夹." + :help/select-nfs-browser "请选择支持nfs的浏览来使用logseq本地文件夹功能, 如最新的Chrome浏览器." :undo "撤销" :redo "重做" :help/zoom-in "聚焦" @@ -805,6 +813,7 @@ title: How to take dummy notes? :parsing-files "正在解析文件" :loading-files "正在加载文件" :login-github "用 Github 登录" + :login-google "用 Google 登录" :go-to "转到" :or "或" :download "下载" @@ -887,6 +896,8 @@ title: How to take dummy notes? :help/move-block-down "向下移動塊" :help/create-new-block "創建塊" :help/new-line-in-block "塊中新建行" + :help/open-top-right-open-button "Please click the top right 'Open' button to open local directory." + :help/select-nfs-browser "Please use another browser (like latest chrome) which support NFS feature to open local directory." :undo "撤銷" :redo "重做" :help/zoom-in "聚焦" @@ -1060,6 +1071,7 @@ title: How to take dummy notes? :parsing-files "正在解析文件" :loading-files "正在加載文件" :login-github "用 Github 登錄" + :login-google "用 Google 登錄" :go-to "轉到" :or "或" :download "下載" @@ -1139,6 +1151,8 @@ title: How to take dummy notes? :help/move-block-down "Skuif Blok Ondertoe" :help/create-new-block "Skep 'n nuwe blok" :help/new-line-in-block "Nuwe lyn in blok" + :help/open-top-right-open-button "Please click the top right 'Open' button to open local directory." + :help/select-nfs-browser "Please use another browser (like latest chrome) which support NFS feature to open local directory." :undo "Ontdoen" :redo "Herdoen" :help/zoom-in "Zoem in" @@ -1306,6 +1320,7 @@ title: How to take dummy notes? :parsing-files "Lêer ontleding" :loading-files "Laai lêers" :login-github "Aantekening deur Github" + :login-google "Aantekening deur Google" :go-to "Gaan na " :or "of" :download "Laai af" From 7d74e024bbdfe8ac20e9dc89d4368ea80db5b7f5 Mon Sep 17 00:00:00 2001 From: defclass Date: Mon, 28 Dec 2020 14:28:50 +0800 Subject: [PATCH 2/7] fix(Login): fix login style --- src/main/frontend/components/header.cljs | 30 +++++++++++++----------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/src/main/frontend/components/header.cljs b/src/main/frontend/components/header.cljs index 7975e28b5a..b3087db216 100644 --- a/src/main/frontend/components/header.cljs +++ b/src/main/frontend/components/header.cljs @@ -155,21 +155,23 @@ (when (and (not logged?) (not config/publishing?)) - [:a.text-sm.font-medium.login.opacity-70.hover:opacity-100 - {:href "/login/github" - :on-click (fn [] - (storage/remove :git/current-repo))} - (t :login-github)] - ) - - (when (and (not logged?) - (not config/publishing?)) - [:a.text-sm.font-medium.login.opacity-70.hover:opacity-100 - {:href "/login/google" - :on-click (fn [] - (storage/remove :git/current-repo))} - (t :login-google)]) + (ui/dropdown-with-links + (fn [{:keys [toggle-fn]}] + [:a {:on-click toggle-fn} + [:span.ml-1 "Login"] + [:span.ml-1 {:style {:border-top-color "#6b7280"}}]]) + (let [list [{:title (t :login-github) + :url "/login/github"} + {:title (t :login-google) + :url "/login/google"}]] + (mapv + (fn [{:keys [title url]}] + {:title title + :options + {:on-click + (fn [_] (set! (.-href js/window.location) url))}}) + list)))) (repo/sync-status) From 338e66cea1f74e68013471e2b4b0dc6fb9d346ad Mon Sep 17 00:00:00 2001 From: defclass Date: Mon, 28 Dec 2020 15:58:21 +0800 Subject: [PATCH 3/7] fix(init-repo): init repo when login first time --- src/main/frontend/components/home.cljs | 4 +- src/main/frontend/components/repo.cljs | 4 +- src/main/frontend/components/sidebar.cljs | 17 +--- src/main/frontend/components/svg.cljs | 10 +++ src/main/frontend/components/widgets.cljs | 100 +++++++++++++--------- src/main/frontend/state.cljs | 4 + 6 files changed, 80 insertions(+), 59 deletions(-) diff --git a/src/main/frontend/components/home.cljs b/src/main/frontend/components/home.cljs index 6e44dc8aae..ff3e60313f 100644 --- a/src/main/frontend/components/home.cljs +++ b/src/main/frontend/components/home.cljs @@ -3,5 +3,5 @@ [frontend.components.sidebar :as sidebar])) (rum/defc home - [args] - (sidebar/main-content args)) + [] + (sidebar/main-content)) diff --git a/src/main/frontend/components/repo.cljs b/src/main/frontend/components/repo.cljs index 0fa8c07b03..4a2bdc5d74 100644 --- a/src/main/frontend/components/repo.cljs +++ b/src/main/frontend/components/repo.cljs @@ -20,7 +20,7 @@ (rum/defc add-repo [] - (widgets/add-repo)) + (widgets/add-graph)) (rum/defc repos < rum/reactive [] @@ -79,7 +79,7 @@ "Unlink"]]]))] [:a#download-as-json.hidden]] - (widgets/add-repo))))) + (widgets/add-graph))))) (rum/defc sync-status < rum/reactive {:did-mount (fn [state] diff --git a/src/main/frontend/components/sidebar.cljs b/src/main/frontend/components/sidebar.cljs index ee6a403b80..4cf109e692 100644 --- a/src/main/frontend/components/sidebar.cljs +++ b/src/main/frontend/components/sidebar.cljs @@ -163,10 +163,8 @@ (state/sidebar-add-block! current-repo db-id block-type nil)))) (reset! sidebar-inited? true)))) state)} - [args] - (let [query (get-in args [:parameters :query]) - login-source (:login_source query) - today (state/sub :today) + [] + (let [today (state/sub :today) cloning? (state/sub :repo/cloning?) default-home (get-default-home-if-valid) importing-to-db? (state/sub :repo/importing-to-db?) @@ -209,16 +207,7 @@ (journal/journals latest-journals) (and logged? (empty? (:repos me))) - (case login-source - "google" - (if-not (nfs-handler/supported?) - [:div (t :help/select-nfs-browser)] - [:div (t :help/open-top-right-open-button)]) - - "github" - (widgets/add-repo) - - (widgets/add-repo)) + (widgets/add-graph) ;; FIXME: why will this happen? :else diff --git a/src/main/frontend/components/svg.cljs b/src/main/frontend/components/svg.cljs index 526576ed24..26d5f4d73a 100644 --- a/src/main/frontend/components/svg.cljs +++ b/src/main/frontend/components/svg.cljs @@ -148,6 +148,16 @@ :stroke-linejoin "round" :stroke-linecap "round"}]]) +(def folder-add-large + [:svg + {:stroke "currentColor", :view-box "0 0 24 24", :fill "none" :width 64 :height 64 :display "inline-block"} + [:path + {:d + "M9 13h6m-3-3v6m-9 1V7a2 2 0 012-2h6l2 2h6a2 2 0 012 2v8a2 2 0 01-2 2H5a2 2 0 01-2-2z" + :stroke-width "2" + :stroke-linejoin "round" + :stroke-linecap "round"}]]) + (def folder (hero-icon "M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-6l-2-2H5a2 2 0 00-2 2z")) (def folder-sm (hero-icon "M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-6l-2-2H5a2 2 0 00-2 2z" {:height "16" :width "16"})) (def pages-sm [:svg {:viewBox "0 0 20 20", :fill "currentColor", :height "16", :width "16"} diff --git a/src/main/frontend/components/widgets.cljs b/src/main/frontend/components/widgets.cljs index a736ba29ad..af306008ca 100644 --- a/src/main/frontend/components/widgets.cljs +++ b/src/main/frontend/components/widgets.cljs @@ -14,7 +14,9 @@ [frontend.version :as version] [frontend.components.commit :as commit] [frontend.context.i18n :as i18n] - [reitit.frontend.easy :as rfe])) + [reitit.frontend.easy :as rfe] + [frontend.components.svg :as svg] + [frontend.handler.web.nfs :as nfs])) (rum/defcs choose-preferred-format [] @@ -36,52 +38,68 @@ :on-click #(user-handler/set-preferred-format! :org))]])) -(rum/defcs add-repo < +(rum/defcs add-graph < (rum/local "" ::repo) (rum/local "master" ::branch) [state] (let [repo (get state ::repo) - branch (get state ::branch)] + branch (get state ::branch) + login-source (state/get-login-source)] (rum/with-context [[t] i18n/*tongue-context*] - [:div.p-8.flex.items-center.justify-center - [:div.w-full.mx-auto - [:div + (if (= "github" login-source) + [:div.p-8.flex.items-center.justify-center + [:div.w-full.mx-auto [:div - [:h1.title.mb-1 - (t :git/add-repo-prompt)] - (ui/admonition :warning - [:p "Make sure that you've created this repo on GitHub."]) - [:div.mt-4.mb-4.relative.rounded-md.shadow-sm.max-w-xs - [:input#repo.form-input.block.w-full.sm:text-sm.sm:leading-5 - {:autoFocus true - :placeholder "https://github.com/username/repo" - :on-change (fn [e] - (reset! repo (util/evalue e)))}]] + [:div + [:h1.title.mb-1 + (t :git/add-repo-prompt)] + (ui/admonition :warning + [:p "Make sure that you've created this repo on GitHub."]) + [:div.mt-4.mb-4.relative.rounded-md.shadow-sm.max-w-xs + [:input#repo.form-input.block.w-full.sm:text-sm.sm:leading-5 + {:autoFocus true + :placeholder "https://github.com/username/repo" + :on-change (fn [e] + (reset! repo (util/evalue e)))}]] - [:label.font-medium "Default Branch (make sure it's matched with your setting on Github): "] - [:div.mt-2.mb-4.relative.rounded-md.shadow-sm.max-w-xs - [:input#branch.form-input.block.w-full.sm:text-sm.sm:leading-5 - {:value @branch - :placeholder "master" - :on-change (fn [e] - (reset! branch (util/evalue e)))}]]]] + [:label.font-medium "Default Branch (make sure it's matched with your setting on Github): "] + [:div.mt-2.mb-4.relative.rounded-md.shadow-sm.max-w-xs + [:input#branch.form-input.block.w-full.sm:text-sm.sm:leading-5 + {:value @branch + :placeholder "master" + :on-change (fn [e] + (reset! branch (util/evalue e)))}]]]] - (ui/button - (t :git/add-repo-prompt-confirm) - :on-click - (fn [] - (let [branch (string/trim @branch)] - (if (string/blank? branch) - (notification/show! - [:p "Please input a branch, make sure it's matched with your setting on Github."] - :error - false) - (let [repo (util/lowercase-first @repo)] - (if (util/starts-with? repo "https://github.com/") - (let [repo (string/replace repo ".git" "")] - (repo-handler/create-repo! repo branch)) + (ui/button + (t :git/add-repo-prompt-confirm) + :on-click + (fn [] + (let [branch (string/trim @branch)] + (if (string/blank? branch) + (notification/show! + [:p "Please input a branch, make sure it's matched with your setting on Github."] + :error + false) + (let [repo (util/lowercase-first @repo)] + (if (util/starts-with? repo "https://github.com/") + (let [repo (string/replace repo ".git" "")] + (repo-handler/create-repo! repo branch)) - (notification/show! - [:p "Please input a valid repo url, e.g. https://github.com/username/repo"] - :error - false)))))))]]))) + (notification/show! + [:p "Please input a valid repo url, e.g. https://github.com/username/repo"] + :error + false)))))))]] + + [:div.p-8.flex.items-center.justify-center + [:div.w-full.mx-auto + [:div + [:div + [:h1.title.mb-1 + "Please open a local directory : "]] + [:a.text-lg.font-medium.opacity-70.hover:opacity-100.ml-3.block + {:on-click (fn [] (nfs/ls-dir-files))} + [:div.flex.flex-row + [:span.inline-block svg/folder-add-large] + (when-not config/mobile? + [:span.ml-1.inline-block {:style {:margin-top "20px"}} + (t :open)])]]]]])))) diff --git a/src/main/frontend/state.cljs b/src/main/frontend/state.cljs index e9cfcb7ce1..1525670b71 100644 --- a/src/main/frontend/state.cljs +++ b/src/main/frontend/state.cljs @@ -249,6 +249,10 @@ [] (get-in @state [:me :repos])) +(defn get-login-source + [] + (get-in @state [:me :login_source])) + (defn set-repos! [repos] (set-state! [:me :repos] repos)) From 0bafbde7fe07946a2c6b82c136d9acf5de19905e Mon Sep 17 00:00:00 2001 From: defclass Date: Mon, 28 Dec 2020 16:18:34 +0800 Subject: [PATCH 4/7] fix(repo): fix add repo logic --- src/main/frontend/components/widgets.cljs | 31 +++++++++++++---------- src/main/frontend/dicts.cljs | 13 +++------- 2 files changed, 21 insertions(+), 23 deletions(-) diff --git a/src/main/frontend/components/widgets.cljs b/src/main/frontend/components/widgets.cljs index af306008ca..6d67330779 100644 --- a/src/main/frontend/components/widgets.cljs +++ b/src/main/frontend/components/widgets.cljs @@ -16,7 +16,8 @@ [frontend.context.i18n :as i18n] [reitit.frontend.easy :as rfe] [frontend.components.svg :as svg] - [frontend.handler.web.nfs :as nfs])) + [frontend.handler.web.nfs :as nfs] + [frontend.handler.web.nfs :as nfs-handler])) (rum/defcs choose-preferred-format [] @@ -90,16 +91,18 @@ :error false)))))))]] - [:div.p-8.flex.items-center.justify-center - [:div.w-full.mx-auto - [:div - [:div - [:h1.title.mb-1 - "Please open a local directory : "]] - [:a.text-lg.font-medium.opacity-70.hover:opacity-100.ml-3.block - {:on-click (fn [] (nfs/ls-dir-files))} - [:div.flex.flex-row - [:span.inline-block svg/folder-add-large] - (when-not config/mobile? - [:span.ml-1.inline-block {:style {:margin-top "20px"}} - (t :open)])]]]]])))) + (if-not (nfs-handler/supported?) + [:div (t :help/select-nfs-browser)] + [:div.p-8.flex.items-center.justify-center + [:div.w-full.mx-auto + [:div + [:div + [:h1.title.mb-1 + "Please open a local directory : "]] + [:a.text-lg.font-medium.opacity-70.hover:opacity-100.ml-3.block + {:on-click (fn [] (nfs/ls-dir-files))} + [:div.flex.flex-row + [:span.inline-block svg/folder-add-large] + (when-not config/mobile? + [:span.ml-1.inline-block {:style {:margin-top "20px"}} + (t :open)])]]]]]))))) diff --git a/src/main/frontend/dicts.cljs b/src/main/frontend/dicts.cljs index f32ce38195..1573043809 100644 --- a/src/main/frontend/dicts.cljs +++ b/src/main/frontend/dicts.cljs @@ -148,8 +148,7 @@ title: How to take dummy notes? :help/move-block-down "Move Block Down" :help/create-new-block "Create New Block" :help/new-line-in-block "New Line in Block" - :help/open-top-right-open-button "Please click the top right 'Open' button to open local directory." - :help/select-nfs-browser "Please use another browser (like latest chrome) which support NFS feature to open local directory." + :help/select-nfs-browser "Please use another browser (like latest chrome) which support NFS features to open local directory." :undo "Undo" :redo "Redo" :help/zoom-in "Zoom In" @@ -369,8 +368,7 @@ title: How to take dummy notes? :help/move-block-down "Déplacer un bloc en dessous" :help/create-new-block "Créer un nouveau bloc" :help/new-line-in-block "Aller à la ligne dans un bloc" - :help/open-top-right-open-button "Please click the top right 'Open' button to open local directory." - :help/select-nfs-browser "Please use another browser (like latest chrome) which support NFS feature to open local directory." + :help/select-nfs-browser "Please use another browser (like latest chrome) which support NFS features to open local directory." :undo "Annuler" :redo "Redo" :help/zoom-in "Zoomer" @@ -629,7 +627,6 @@ title: How to take dummy notes? :help/move-block-down "向下移动块" :help/create-new-block "创建块" :help/new-line-in-block "块中新建行" - :help/open-top-right-open-button "请点击右上角的 Open 来打开本地文件夹." :help/select-nfs-browser "请选择支持nfs的浏览来使用logseq本地文件夹功能, 如最新的Chrome浏览器." :undo "撤销" :redo "重做" @@ -896,8 +893,7 @@ title: How to take dummy notes? :help/move-block-down "向下移動塊" :help/create-new-block "創建塊" :help/new-line-in-block "塊中新建行" - :help/open-top-right-open-button "Please click the top right 'Open' button to open local directory." - :help/select-nfs-browser "Please use another browser (like latest chrome) which support NFS feature to open local directory." + :help/select-nfs-browser "Please use another browser (like latest chrome) which support NFS features to open local directory." :undo "撤銷" :redo "重做" :help/zoom-in "聚焦" @@ -1151,8 +1147,7 @@ title: How to take dummy notes? :help/move-block-down "Skuif Blok Ondertoe" :help/create-new-block "Skep 'n nuwe blok" :help/new-line-in-block "Nuwe lyn in blok" - :help/open-top-right-open-button "Please click the top right 'Open' button to open local directory." - :help/select-nfs-browser "Please use another browser (like latest chrome) which support NFS feature to open local directory." + :help/select-nfs-browser "Please use another browser (like latest chrome) which support NFS features to open local directory." :undo "Ontdoen" :redo "Herdoen" :help/zoom-in "Zoem in" From 59fdc5c68bbbb7b1a61840e63425d2d4387f92ed Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Tue, 29 Dec 2020 14:13:18 +0800 Subject: [PATCH 5/7] chore: remove unused fn --- src/main/frontend/state.cljs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/main/frontend/state.cljs b/src/main/frontend/state.cljs index 38b407539f..f68307d89c 100644 --- a/src/main/frontend/state.cljs +++ b/src/main/frontend/state.cljs @@ -254,10 +254,6 @@ [] (get-in @state [:me :repos])) -(defn get-login-source - [] - (get-in @state [:me :login_source])) - (defn set-repos! [repos] (set-state! [:me :repos] repos)) From f0d71aaa52ca10dcf0e02dd04634071133c135de Mon Sep 17 00:00:00 2001 From: defclass Date: Tue, 29 Dec 2020 17:20:57 +0800 Subject: [PATCH 6/7] fix(repo): fix repos --- src/main/frontend/components/repo.cljs | 14 ++- src/main/frontend/components/widgets.cljs | 139 ++++++++++++---------- 2 files changed, 87 insertions(+), 66 deletions(-) diff --git a/src/main/frontend/components/repo.cljs b/src/main/frontend/components/repo.cljs index 7ac4d75bf6..a6d7444ae6 100644 --- a/src/main/frontend/components/repo.cljs +++ b/src/main/frontend/components/repo.cljs @@ -16,11 +16,17 @@ [frontend.components.commit :as commit] [frontend.components.svg :as svg] [frontend.context.i18n :as i18n] - [clojure.string :as string])) + [clojure.string :as string] + [clojure.string :as str])) (rum/defc add-repo - [] - (widgets/add-graph)) + [args] + (if-let [graph-types (get-in args [:query-params :graph-types])] + (let [graph-types-s (->> (str/split graph-types #",") + (mapv keyword))] + (when (seq graph-types-s) + (widgets/add-graph :graph-types graph-types-s))) + (widgets/add-graph))) (rum/defc repos < rum/reactive [] @@ -42,7 +48,7 @@ (when (state/logged?) (ui/button "Add another git repo" - :href (rfe/href :repo-add)))] + :href (rfe/href :repo-add nil {:graph-types "github"})))] (for [{:keys [id url] :as repo} repos] (let [local? (config/local-db? url)] [:div.flex.justify-between.mb-1 {:key id} diff --git a/src/main/frontend/components/widgets.cljs b/src/main/frontend/components/widgets.cljs index 31dc7b6a89..64de798a5f 100644 --- a/src/main/frontend/components/widgets.cljs +++ b/src/main/frontend/components/widgets.cljs @@ -3,24 +3,15 @@ [frontend.util :as util] [frontend.handler.user :as user-handler] [frontend.handler.repo :as repo-handler] - [frontend.handler.route :as route-handler] - [frontend.handler.export :as export-handler] [frontend.handler.notification :as notification] [frontend.handler.web.nfs :as nfs] [frontend.state :as state] - [frontend.config :as config] [clojure.string :as string] [frontend.ui :as ui] - [frontend.db :as db] - [frontend.version :as version] - [frontend.components.commit :as commit] [frontend.context.i18n :as i18n] - [reitit.frontend.easy :as rfe] - [frontend.components.svg :as svg] - [frontend.handler.web.nfs :as nfs] - [frontend.handler.web.nfs :as nfs-handler])) + [frontend.handler.web.nfs :as nfs])) -(rum/defcs choose-preferred-format +(rum/defc choose-preferred-format [] (rum/with-context [[t] i18n/*tongue-context*] [:div @@ -29,67 +20,91 @@ [:div.mt-4.ml-1 (ui/button - "Markdown" - :on-click - #(user-handler/set-preferred-format! :markdown)) + "Markdown" + :on-click + #(user-handler/set-preferred-format! :markdown)) [:span.ml-2.mr-2 "-OR-"] (ui/button - "Org Mode" - :on-click - #(user-handler/set-preferred-format! :org))]])) + "Org Mode" + :on-click + #(user-handler/set-preferred-format! :org))]])) -(rum/defcs add-graph < +(rum/defcs add-github-repo < (rum/local "" ::repo) [state] - (let [repo (get state ::repo) - github-authed? (:github-authed? (state/get-me))] + (let [repo (get state ::repo)] (rum/with-context [[t] i18n/*tongue-context*] [:div.p-8.flex.flex-col - [:h1.title "Add a graph"] - (let [nfs-supported? (nfs/supported?)] - [:div.cp__widgets-open-local-directory - [:div.select-file-wrap.cursor - (when nfs-supported? - {:on-click nfs/ls-dir-files}) + [:div.w-full.mx-auto + [:div + [:div + [:h1.title + (t :git/add-repo-prompt)] + [:div.mt-4.mb-4.relative.rounded-md.shadow-sm.max-w-xs + [:input#repo.form-input.block.w-full.sm:text-sm.sm:leading-5 + {:autoFocus true + :placeholder "https://github.com/username/repo" + :on-change (fn [e] + (reset! repo (util/evalue e)))}]]]] - [:div - [:h1.title "Open a local directory"] - [:p.text-sm - "Your data will be stored only in your device."] - (when-not nfs-supported? - (ui/admonition :warning - [:p "It seems that your browser doesn't support the " + (ui/button + (t :git/add-repo-prompt-confirm) + :on-click + (fn [] + (let [repo (util/lowercase-first @repo)] + (if (util/starts-with? repo "https://github.com/") + (let [repo (string/replace repo ".git" "")] + (repo-handler/create-repo! repo)) - [:a {:href "https://web.dev/file-system-access/" - :target "_blank"} - "new native filesystem API"] - [:span ", please use any chromium 86+ browser like Chrome, Vivaldi, Edge, Brave, etc."]]))]]]) - (when github-authed? - [:div.w-full.mx-auto.mt-10 - [:h1.title "Or"] - [:div - [:div - [:h1.title.mb-1 - (t :git/add-repo-prompt)] - [:div.mt-4.mb-4.relative.rounded-md.shadow-sm.max-w-xs - [:input#repo.form-input.block.w-full.sm:text-sm.sm:leading-5 - {:autoFocus true - :placeholder "https://github.com/username/repo" - :on-change (fn [e] - (reset! repo (util/evalue e)))}]]]] - - (ui/button - (t :git/add-repo-prompt-confirm) - :on-click - (fn [] - (let [repo (util/lowercase-first @repo)] - (if (util/starts-with? repo "https://github.com/") - (let [repo (string/replace repo ".git" "")] - (repo-handler/create-repo! repo)) - - (notification/show! + (notification/show! [:p "Please input a valid repo url, e.g. https://github.com/username/repo"] :error - false)))))])]))) + false)))))]]))) + +(rum/defcs add-local-directory + [] + (rum/with-context [[t] i18n/*tongue-context*] + [:div.p-8.flex.flex-col + [:h1.title "Add Local directory"] + (let [nfs-supported? (nfs/supported?)] + [:div.cp__widgets-open-local-directory + [:div.select-file-wrap.cursor + (when nfs-supported? + {:on-click nfs/ls-dir-files}) + [:div + [:h1.title "Open a local directory"] + [:p.text-sm + "Your data will be stored only in your device."] + (when-not nfs-supported? + (ui/admonition :warning + [:p "It seems that your browser doesn't support the " + + [:a {:href "https://web.dev/file-system-access/" + :target "_blank"} + "new native filesystem API"] + [:span ", please use any chromium 86+ browser like Chrome, Vivaldi, Edge, Brave, etc."]]))]]])])) + +(rum/defcs add-graph < + [state & {:keys [graph-types] + :or {graph-types [:local :github]} + :as opts}] + (let [github-authed? (:github-authed? (state/get-me)) + generate-f (fn [x] + (case x + :github + (when github-authed? + (rum/with-key (add-github-repo) + "add-github-repo")) + + :local + (rum/with-key (add-local-directory) + "add-local-directory") + + nil)) + available-graph (->> (set graph-types) + (keep generate-f) + (vec))] + (rum/with-context [[t] i18n/*tongue-context*] + [:div.p-8.flex.flex-col available-graph]))) From 8017c500e2d087e573f119c92a0c4cde1afd79c9 Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Tue, 29 Dec 2020 18:06:00 +0800 Subject: [PATCH 7/7] enhance: add or between local directory and github repo --- src/main/frontend/components/widgets.cljs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/main/frontend/components/widgets.cljs b/src/main/frontend/components/widgets.cljs index 64de798a5f..4272faf2e6 100644 --- a/src/main/frontend/components/widgets.cljs +++ b/src/main/frontend/components/widgets.cljs @@ -36,7 +36,7 @@ [state] (let [repo (get state ::repo)] (rum/with-context [[t] i18n/*tongue-context*] - [:div.p-8.flex.flex-col + [:div.flex.flex-col [:div.w-full.mx-auto [:div [:div @@ -66,8 +66,8 @@ (rum/defcs add-local-directory [] (rum/with-context [[t] i18n/*tongue-context*] - [:div.p-8.flex.flex-col - [:h1.title "Add Local directory"] + [:div.flex.flex-col + [:h1.title "Add a graph"] (let [nfs-supported? (nfs/supported?)] [:div.cp__widgets-open-local-directory [:div.select-file-wrap.cursor @@ -105,6 +105,7 @@ nil)) available-graph (->> (set graph-types) (keep generate-f) - (vec))] + (vec) + (interpose [:b.mt-10.mb-5.opacity-50 "OR"]))] (rum/with-context [[t] i18n/*tongue-context*] [:div.p-8.flex.flex-col available-graph])))