refacotr(helper): remove frontend.helper

This commit is contained in:
defclass
2020-12-22 21:26:59 +08:00
committed by Tienson Qin
parent f837d391a0
commit 0eff6751cd
7 changed files with 75 additions and 85 deletions

View File

@@ -11,9 +11,7 @@
[frontend.db :as db]
[frontend.components.svg :as svg]
[frontend.ui :as ui]
[frontend.db :as db]
[frontend.git :as git]
[frontend.helper :as helper]
[goog.object :as gobj]
[promesa.core :as p]
[frontend.github :as github]
@@ -151,7 +149,7 @@
(p/let [remote-latest-commit (common-handler/get-remote-ref repo)
local-latest-commit (common-handler/get-ref repo)
result (git/get-diffs repo local-latest-commit remote-latest-commit)
token (helper/get-github-token repo)]
token (common-handler/get-github-token repo)]
(reset! state/diffs result)
(reset! remote-hash-id remote-latest-commit)
(doseq [{:keys [type path]} result]

View File

@@ -21,9 +21,9 @@
[frontend.handler.web.nfs :as nfs]
[frontend.ui :as ui]
[goog.object :as gobj]
[frontend.helper :as helper]
[frontend.idb :as idb]
[lambdaisland.glogi :as log]))
[lambdaisland.glogi :as log]
[frontend.handler.common :as common-handler]))
(defn- watch-for-date!
[]
@@ -111,7 +111,7 @@
(page-handler/init-commands!)
(if (seq (:repos me))
;; FIXME: handle error
(helper/request-app-tokens!
(common-handler/request-app-tokens!
(fn []
(repo-handler/clone-and-pull-repos me))
(fn []

View File

@@ -8,7 +8,11 @@
[frontend.git :as git]
[frontend.db :as db]
[lambdaisland.glogi :as log]
[cljs.reader :as reader]))
[cljs.reader :as reader]
[frontend.spec :as spec]
[cljs-time.core :as t]
[cljs-time.format :as tf]
[frontend.config :as config]))
(defn get-ref
[repo-url]
@@ -80,4 +84,61 @@
(js/console.dir e)
{}))]
(state/set-config! repo-url config)
config)))
config)))
(defn request-app-tokens!
[ok-handler error-handler]
(let [repos (state/get-repos)
installation-ids (->> (map :installation_id repos)
(remove nil?)
(distinct))]
(when (or (seq repos)
(seq installation-ids))
(util/post (str config/api "refresh_github_token")
{:installation-ids installation-ids
:repos repos}
(fn [result]
(state/set-github-installation-tokens! result)
(when ok-handler (ok-handler)))
(fn [error]
(log/error :token/http-request-failed error)
(js/console.dir error)
(when error-handler (error-handler)))))))
(defn- get-github-token*
[repo]
(spec/validate :repos/url repo)
(when repo
(let [{:keys [token expires_at] :as token-state}
(state/get-github-token repo)]
(spec/validate :repos/repo token-state)
(if (and (map? token-state)
(string? expires_at))
(let [expires-at (tf/parse (tf/formatters :date-time-no-ms) expires_at)
now (t/now)
expired? (t/after? now expires-at)]
{:exist? true
:expired? expired?
:token token})
{:exist? false}))))
(defn get-github-token
([]
(get-github-token (state/get-current-repo)))
([repo]
(when-not (config/local-db? repo)
(js/Promise.
(fn [resolve reject]
(let [{:keys [expired? token exist?]} (get-github-token* repo)
valid-token? (and exist? (not expired?))]
(if valid-token?
(resolve token)
(request-app-tokens!
(fn []
(let [{:keys [expired? token exist?] :as token-m} (get-github-token* repo)
valid-token? (and exist? (not expired?))]
(if valid-token?
(resolve token)
(do (log/error :token/failed-get-token token-m)
(reject)))))
nil))))))))

View File

@@ -24,8 +24,7 @@
[cljs-time.core :as t]
[cljs-time.coerce :as tc]
[frontend.utf8 :as utf8]
["ignore" :as Ignore]
[frontend.handler.utils :as h-utils]))
["ignore" :as Ignore]))
(defn load-file
[repo-url path]

View File

@@ -10,8 +10,7 @@
[frontend.handler.route :as route-handler]
[frontend.handler.common :as common-handler]
[frontend.config :as config]
[cljs-time.local :as tl]
[frontend.helper :as helper]))
[cljs-time.local :as tl]))
(defn- set-git-status!
[repo-url value]
@@ -46,7 +45,7 @@
(p/let [remote-oid (common-handler/get-remote-ref repo)
commit-oid (git/commit repo commit-message (array remote-oid))
result (git/write-ref! repo commit-oid)
token (helper/get-github-token repo)
token (common-handler/get-github-token repo)
push-result (git/push repo token true)]
(reset! pushing? false)
(notification/clear! nil)

View File

@@ -24,9 +24,7 @@
[cljs.reader :as reader]
[clojure.string :as string]
[frontend.dicts :as dicts]
[frontend.helper :as helper]
[frontend.spec :as spec]
[frontend.handler.utils :as h-utils]))
[frontend.spec :as spec]))
;; Project settings should be checked in two situations:
;; 1. User changes the config.edn directly in logseq.com (fn: alter-file)
@@ -361,7 +359,7 @@
(empty? @state/diffs)))))
(git-handler/set-git-status! repo-url :pulling)
(->
(p/let [token (helper/get-github-token repo-url)
(p/let [token (common-handler/get-github-token repo-url)
result (git/fetch repo-url token)]
(let [{:keys [fetchHead]} (bean/->clj result)]
(-> (git/merge repo-url)
@@ -435,7 +433,7 @@
"Logseq auto save"
commit-message)]
(p/let [commit-oid (git/commit repo-url commit-message)
token (helper/get-github-token repo-url)
token (common-handler/get-github-token repo-url)
status (db/get-key-value repo-url :git/status)]
(when (and token (or (not= status :pushing)
custom-commit?))
@@ -476,7 +474,7 @@
(defn- clone
[repo-url]
(spec/validate :repos/url repo-url)
(p/let [token (helper/get-github-token repo-url)]
(p/let [token (common-handler/get-github-token repo-url)]
(when token
(util/p-handle
(do
@@ -563,7 +561,7 @@
(js/setInterval
(fn []
(p/let [repo-url (state/get-current-repo)
token (helper/get-github-token repo-url)]
token (common-handler/get-github-token repo-url)]
(when token
(pull repo-url nil))))
(* (config/git-pull-secs) 1000)))

View File

@@ -1,65 +0,0 @@
(ns frontend.helper
(:require [cljs-time.format :as tf]
[cljs-time.core :as t]
[lambdaisland.glogi :as log]
[frontend.util :as util]
[frontend.state :as state]
[frontend.config :as config]
[frontend.spec :as spec]))
(defn request-app-tokens!
[ok-handler error-handler]
(let [repos (state/get-repos)
installation-ids (->> (map :installation_id repos)
(remove nil?)
(distinct))]
(when (or (seq repos)
(seq installation-ids))
(util/post (str config/api "refresh_github_token")
{:installation-ids installation-ids
:repos repos}
(fn [result]
(state/set-github-installation-tokens! result)
(when ok-handler (ok-handler)))
(fn [error]
(log/error :token/http-request-failed error)
(js/console.dir error)
(when error-handler (error-handler)))))))
(defn- get-github-token*
[repo]
(spec/validate :repos/url repo)
(when repo
(let [{:keys [token expires_at] :as token-state}
(state/get-github-token repo)]
(spec/validate :repos/repo token-state)
(if (and (map? token-state)
(string? expires_at))
(let [expires-at (tf/parse (tf/formatters :date-time-no-ms) expires_at)
now (t/now)
expired? (t/after? now expires-at)]
{:exist? true
:expired? expired?
:token token})
{:exist? false}))))
(defn get-github-token
([]
(get-github-token (state/get-current-repo)))
([repo]
(when-not (config/local-db? repo)
(js/Promise.
(fn [resolve reject]
(let [{:keys [expired? token exist?]} (get-github-token* repo)
valid-token? (and exist? (not expired?))]
(if valid-token?
(resolve token)
(request-app-tokens!
(fn []
(let [{:keys [expired? token exist?] :as token-m} (get-github-token* repo)
valid-token? (and exist? (not expired?))]
(if valid-token?
(resolve token)
(do (log/error :token/failed-get-token token-m)
(reject)))))
nil))))))))