Merge branch 'master' into ci/init

pull/719/head
Tienson Qin 2020-11-24 21:56:55 +08:00 committed by GitHub
commit bfc1d2af01
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
17 changed files with 194 additions and 131 deletions

View File

@ -25,7 +25,8 @@
tongue {:mvn/version "0.2.9"}
org.clojure/core.async {:mvn/version "1.3.610"}
thheller/shadow-cljs {:mvn/version "2.8.81"}
expound {:mvn/version "0.8.6"}}
expound {:mvn/version "0.8.6"}
lambdaisland/glogi {:mvn/version "1.0.74"}}
:aliases {:cljs {:extra-paths ["src/dev-cljs/"]
:extra-deps {org.clojure/clojurescript {:mvn/version "1.10.520"}

View File

@ -148,6 +148,8 @@ textarea {
width: 100%;
resize: none;
outline: none;
font-weight: inherit;
letter-spacing: inherit;
}
ul {
@ -203,6 +205,7 @@ ol {
p {
line-height: 1.5;
margin: 0.5rem 0;
color: var(--ls-primary-text-color)
}
li p:first-child, .block-body p:first-child {
@ -1048,6 +1051,8 @@ button.context-menu-option {
.notification-area {
background-color: #FFF;
background-color: var(--ls-tertiary-background-color);
color: var(--ls-primary-text-color);
}
.content img {
@ -1078,6 +1083,7 @@ a.login:hover {
opacity: 0.5;
padding: 0 2px 0 2px;
border: 1px solid;
line-height: 1.3;
}
a.marker-switch:hover {

View File

@ -168,7 +168,7 @@
.datepicker th.month {
width: auto;
font-size: 14px;
color: #777;
color: var(--ls-title-text-color);
}
.dropdown-button {
@ -194,7 +194,7 @@
}
.dark-theme .datepicker {
background: #073642;
background: var(--ls-secondary-background-color);
}
.dark-theme .datepicker th.day-disabled, .dark-theme .datepicker th.disabled, .dark-theme .datepicker td.disabled, .dark-theme .datepicker td.off {
@ -206,16 +206,16 @@
}
.dark-theme .datepicker td.active, .dark-theme .datepicker td.active:hover {
background-color: #011b22;
border-color: #011b22;
background-color: var(--ls-block-properties-background-color);
border-color: var(--ls-block-properties-background-color);
}
.dark-theme .datepicker th.selectable {
color: #fff;
color: var(--ls-primary-text-color);
}
.dark-theme .datepicker td.available:hover, .dark-theme .datepicker th.available:hover {
background: #011b22;
background: var(--ls-block-properties-background-color);
}
.datepicker tr:nth-child(odd), .datepicker tr:nth-child(even), .dark-theme .datepicker tr:nth-child(odd), .dark-theme .datepicker tr:nth-child(even) {

View File

@ -18,6 +18,8 @@
:output-feature-set :es6
:externs ["datascript/externs.js"
"externs.js"]}
:closure-defines {goog.debug.LOGGING_ENABLED true}
:devtools
;; before live-reloading any code call this function
{:before-load frontend.core/stop
@ -42,7 +44,8 @@
:output-dir "./static/js/publishing"
:asset-path "/static/js"
:closure-defines {frontend.config/PUBLISHING true}
:closure-defines {frontend.config/PUBLISHING true
goog.debug.LOGGING_ENABLED true}
:compiler-options {:infer-externs :auto
:output-feature-set :es6

View File

@ -321,12 +321,19 @@
[config page-name]
(let [page-name (string/lower-case page-name)
page-original-name (:page/original-name (db/entity [:page/name page-name]))
blocks (db/get-page-blocks (state/get-current-repo) page-name)]
blocks (db/get-page-blocks (state/get-current-repo) page-name)
current-page (state/get-current-page)]
[:div.embed-page.py-2.my-2.px-3.bg-base-2
[:p
[:code.mr-2 "Embed page:"]
(page-cp config {:page/name page-name})]
(blocks-container blocks (assoc config :embed? true))]))
(when (or
(not current-page)
(and current-page
(not= (string/lower-case current-page) page-name)))
(blocks-container blocks (assoc config
:embed? true
:ref? false)))]))
(defn- get-label-text
[label]

View File

@ -26,6 +26,7 @@
{:style {:width 240}
:default-value default-value
:on-change (fn [event]
(util/stop event)
(let [value (util/evalue event)]
(swap! *timestamp assoc :time value)))}]
[:a.ml-2.self-center {:on-click (fn []

View File

@ -20,7 +20,6 @@
[frontend.diff :as diff]
[medley.core :as medley]))
(defonce diffs (atom nil))
(defonce remote-hash-id (atom nil))
(defonce diff-state (atom {}))
(defonce commit-message (atom ""))
@ -62,78 +61,78 @@
(svg/arrow-right)
(svg/arrow-down))]
[:span.cp__diff-file-header-content path]
[:span.cp__diff-file-header-type type]
(when resolved?
[:span.text-green-600
{:dangerouslySetInnerHTML
{:__html "✓"}}])]
(if-let [content (get contents path)]
(let [local-content (db/get-file path)
local-content (or local-content "")
diff (medley/indexed (diff/diff local-content content))
diff? (some (fn [[_idx {:keys [added removed]}]]
(or added removed))
diff)]
[:div.pre-line-white-space.p-2 {:class (if collapse? "hidden")
:style {:overflow "auto"}}
(if edit?
[:div.grid.grid-cols-2.gap-1
(diff-cp diff)
(ui/textarea
{:default-value local-content
:on-change (fn [e]
(reset! *edit-content (util/evalue e)))})]
(diff-cp diff))
(let [content (get contents path)
local-content (db/get-file path)]
(if (not= content local-content)
(let [local-content (or local-content "")
content (or content "")
diff (medley/indexed (diff/diff local-content content))
diff? (some (fn [[_idx {:keys [added removed]}]]
(or added removed))
diff)]
[:div.pre-line-white-space.p-2 {:class (if collapse? "hidden")
:style {:overflow "auto"}}
(if edit?
[:div.grid.grid-cols-2.gap-1
(diff-cp diff)
(ui/textarea
{:default-value local-content
:on-change (fn [e]
(reset! *edit-content (util/evalue e)))})]
(diff-cp diff))
(cond
edit?
[:div.mt-2
(ui/button "Save"
:on-click
(fn []
(reset! *edit? false)
(let [new-content @*edit-content]
(file/alter-file repo path new-content
{:commit? false
:re-render-root? true})
(swap! state/state
assoc-in [:github/contents repo remote-oid path] new-content)
(mark-as-resolved path))))]
(cond
edit?
[:div.mt-2
(ui/button "Save"
:on-click
(fn []
(reset! *edit? false)
(let [new-content @*edit-content]
(file/alter-file repo path new-content
{:commit? false
:re-render-root? true})
(swap! state/state
assoc-in [:github/contents repo remote-oid path] new-content)
(mark-as-resolved path))))]
diff?
[:div.mt-2
(ui/button "Use remote"
:on-click
(fn []
;; overwrite the file
(file/alter-file repo path content
{:commit? false
:re-render-root? true})
(mark-as-resolved path))
:background "green")
diff?
[:div.mt-2
(ui/button "Use remote"
:on-click
(fn []
;; overwrite the file
(file/alter-file repo path content
{:commit? false
:re-render-root? true})
(mark-as-resolved path))
:background "green")
[:span.pl-2.pr-2 "or"]
[:span.pl-2.pr-2 "or"]
(ui/button "Keep local"
:on-click
(fn []
;; overwrite the file
(swap! state/state
assoc-in [:github/contents repo remote-oid path] local-content)
(mark-as-resolved path))
:background "pink")
(ui/button "Keep local"
:on-click
(fn []
;; overwrite the file
(swap! state/state
assoc-in [:github/contents repo remote-oid path] local-content)
(mark-as-resolved path))
:background "pink")
[:span.pl-2.pr-2 "or"]
[:span.pl-2.pr-2 "or"]
(ui/button "Edit"
:on-click
(fn []
(reset! *edit? true)))]
(ui/button "Edit"
:on-click
(fn []
(reset! *edit? true)))]
:else
nil)])
[:div "loading..."])]))
:else
nil)])))]))
;; TODO: `n` shortcut for next diff, `p` for previous diff
(rum/defcc diff <
@ -145,10 +144,10 @@
local-latest-commit (common-handler/get-ref repo)
result (git/get-local-diffs repo local-latest-commit remote-latest-commit)
token (helper/get-github-token repo)]
(reset! diffs result)
(reset! state/diffs result)
(reset! remote-hash-id remote-latest-commit)
(doseq [{:keys [type path]} result]
(when (contains? #{"added" "modify"}
(when (contains? #{"add" "modify"}
type)
(github/get-content
token
@ -157,11 +156,11 @@
remote-latest-commit
(fn [{:keys [repo-url path ref content]}]
(swap! state/state
assoc-in [:github/contents repo-url remote-latest-commit path] content))
assoc-in [:github/contents repo-url remote-latest-commit path] (or content "")))
(fn [response]
(when (= (gobj/get response "status") 401)
(notification/show!
[:span.text-gray-700.mr-2
[:span.mr-2
(util/format
"Please make sure that you've installed the logseq app for the repo %s on GitHub. "
repo)
@ -169,10 +168,11 @@
"Install Logseq on GitHub"
:href (str "https://github.com/apps/" config/github-app-name "/installations/new"))]
:error
false)))))))))
false))))))))
state)
:will-unmount
(fn [state]
(reset! diffs nil)
(reset! state/diffs nil)
(reset! remote-hash-id nil)
(reset! diff-state {})
(reset! commit-message "")
@ -181,7 +181,7 @@
(reset! *edit-content "")
state)}
[component]
(let [diffs (util/react diffs)
(let [diffs (util/react state/diffs)
remote-oid (util/react remote-hash-id)
repo (state/get-current-repo)
contents (if remote-oid (state/sub [:github/contents repo remote-oid]))
@ -201,7 +201,7 @@
(ui/textarea
{:placeholder "Commit message (optional)"
:on-change (fn [e]
(reset! commit-message (util/evalue e)))})
(reset! commit-message (util/evalue e)))})
(if pushing?
[:span (ui/loading "Pushing")]
(ui/button "Commit and push"

View File

@ -557,6 +557,16 @@
true)))
(commands/simple-insert! input-id "$$" {:backward-pos 2})
(let [sym "^"]
(and (= key sym)
(>= (count value) 1)
(> pos 0)
(= (nth value (dec pos)) sym)
(if (> (count value) pos)
(not= (nth value pos) sym)
true)))
(commands/simple-insert! input-id "^^" {:backward-pos 2})
:else
nil))))
(mixins/on-key-up

View File

@ -73,7 +73,7 @@
(let [branch (string/trim @branch)]
(if (string/blank? branch)
(notification/show!
[:p.text-gray-700 "Please input a branch, make sure it's matched with your setting on Github."]
[:p "Please input a branch, make sure it's matched with your setting on Github."]
:error
false)
(let [repo (util/lowercase-first @repo)]
@ -82,6 +82,6 @@
(repo-handler/create-repo! repo branch))
(notification/show!
[:p.text-gray-700 "Please input a valid repo url, e.g. https://github.com/username/repo"]
[:p "Please input a valid repo url, e.g. https://github.com/username/repo"]
:error
false)))))))]])))

View File

@ -5,9 +5,9 @@
[frontend.page :as page]
[frontend.routes :as routes]
[frontend.spec]
[frontend.log]
[reitit.frontend :as rf]
[reitit.frontend.easy :as rfe]
))
[reitit.frontend.easy :as rfe]))
(defn set-router!
[]

View File

@ -31,7 +31,8 @@
(or
(and
(= typ "Search")
(not (contains? #{\# \* \/ \( \[} (first (second (:url (second block))))))
;; FIXME: alert error
(not (contains? #{\# \* \/ \[} (first (second (:url (second block))))))
(let [page (second (:url (second block)))]
(when (and (not (util/starts-with? page "http"))
(not (util/starts-with? page "file"))

View File

@ -1422,7 +1422,8 @@
"*" "*"
;; "_" "_"
;; ":" ":" ; TODO: only properties editing and org mode tag
"^" "^"})
;; "^" "^"
})
(def reversed-autopair-map
(zipmap (vals autopair-map)

View File

@ -32,7 +32,7 @@
(notification/show!
[:p.content
title
[:span.text-gray-700.mr-2
[:span.mr-2
(util/format
"Please make sure that you've installed the logseq app for the repo %s on GitHub. "
repo-url)
@ -256,7 +256,9 @@
(declare push)
(defn pull
[repo-url {:keys [force-pull?] :or {force-pull? false}}]
[repo-url {:keys [force-pull? show-diff?]
:or {force-pull? false
show-diff? false}}]
(when (and
(db/get-conn repo-url true)
(db/cloned? repo-url))
@ -275,47 +277,61 @@
(and
(not= status :pushing)
(not (state/get-edit-input-id))
(not (state/in-draw-mode?))))
(not (state/in-draw-mode?))
(or
show-diff?
(and (not show-diff?)
(empty? @state/diffs)))))
(git-handler/set-git-status! repo-url :pulling)
(->
(p/let [token (helper/get-github-token repo-url)
result (git/fetch repo-url token)]
(let [{:keys [fetchHead]} (bean/->clj result)]
(-> (git/merge repo-url)
(p/then (fn [result]
(-> (git/checkout repo-url)
(p/then (fn [result]
(git-handler/set-git-status! repo-url nil)
(git-handler/set-git-last-pulled-at! repo-url)
(when (and local-latest-commit fetchHead
(not= local-latest-commit fetchHead))
(p/let [diffs (git/get-diffs repo-url local-latest-commit fetchHead)]
(when (seq diffs)
(load-db-and-journals! repo-url diffs false))))
(common-handler/check-changed-files-status repo-url)))
(p/catch (fn [error]
(git-handler/set-git-status! repo-url :checkout-failed)
(git-handler/set-git-error! repo-url error))))))
(p/catch (fn [error]
(println "Git pull error:")
(js/console.error error)
(git-handler/set-git-status! repo-url :merge-failed)
(git-handler/set-git-error! repo-url error)
(p/let [remote-latest-commit (common-handler/get-remote-ref repo-url)
local-latest-commit (common-handler/get-ref repo-url)
result (git/get-local-diffs repo-url local-latest-commit remote-latest-commit)]
(if (seq result)
(do
(notification/show!
[:p.content
"Failed to merge, please "
[:span.text-gray-700.font-bold
"resolve any diffs first."]]
:error)
(route-handler/redirect! {:to :diff}))
(push repo-url {:commit-push? true
:force? true
:commit-message "Merge push without diffed files"}))))))))
(if show-diff?
(do
(notification/show!
[:p.content
"Failed to push, please "
[:span.font-bold
"resolve any diffs first."]]
:error)
(route-handler/redirect! {:to :diff}))
(-> (git/merge repo-url)
(p/then (fn [result]
(-> (git/checkout repo-url)
(p/then (fn [result]
(git-handler/set-git-status! repo-url nil)
(git-handler/set-git-last-pulled-at! repo-url)
(when (and local-latest-commit fetchHead
(not= local-latest-commit fetchHead))
(p/let [diffs (git/get-diffs repo-url local-latest-commit fetchHead)]
(when (seq diffs)
(load-db-and-journals! repo-url diffs false))))
(common-handler/check-changed-files-status repo-url)))
(p/catch (fn [error]
(git-handler/set-git-status! repo-url :checkout-failed)
(git-handler/set-git-error! repo-url error))))))
(p/catch (fn [error]
(println "Git pull error:")
(js/console.error error)
(git-handler/set-git-status! repo-url :merge-failed)
(git-handler/set-git-error! repo-url error)
(p/let [remote-latest-commit (common-handler/get-remote-ref repo-url)
local-latest-commit (common-handler/get-ref repo-url)
result (git/get-local-diffs repo-url local-latest-commit remote-latest-commit)]
(if (seq result)
(do
(notification/show!
[:p.content
"Failed to merge, please "
[:span.font-bold
"resolve any diffs first."]]
:error)
(route-handler/redirect! {:to :diff}))
(push repo-url {:commit-push? true
:force? true
:commit-message "Merge push without diffed files"})))))))))
(p/catch (fn [error]
(println "Pull error:" (str error))
(js/console.error error)
@ -335,7 +351,8 @@
(and
(db/cloned? repo-url)
(not (state/get-edit-input-id))
(not= status :pushing)))
(not= status :pushing)
(empty? @state/diffs)))
(-> (p/let [files (js/window.workerThread.getChangedFiles (util/get-repo-dir (state/get-current-repo)))]
(when (or
commit-push?
@ -363,7 +380,8 @@
(git-handler/set-git-status! repo-url :push-failed)
(git-handler/set-git-error! repo-url error)
(when (state/online?)
(pull repo-url {:force-pull? true}))))))))))
(pull repo-url {:force-pull? true
:show-diff? true}))))))))))
(p/catch (fn [error]
(println "Git push error: ")
(git-handler/set-git-status! repo-url :push-failed)

View File

@ -81,8 +81,9 @@
(defn scroll-and-highlight!
[state]
(when-let [fragment (util/get-fragment)]
(highlight-element! fragment))
(if-let [fragment (util/get-fragment)]
(highlight-element! fragment)
(util/scroll-to-top))
state)
(defn add-style-if-exists!

View File

@ -0,0 +1,10 @@
(ns frontend.log
(:require [lambdaisland.glogi :as log]
[lambdaisland.glogi.console :as glogi-console]
[frontend.config :as config]))
(glogi-console/install!)
(if config/dev?
(log/set-levels {:glogi/root :info})
(log/set-levels {:glogi/root :warn}))

View File

@ -867,6 +867,7 @@
[]
(:commands (get-config)))
;; TODO: Move those to the uni `state`
(defonce editor-op (atom nil))
(defn set-editor-op!
[value]
@ -874,3 +875,5 @@
(defn get-editor-op
[]
@editor-op)
(defonce diffs (atom nil))

View File

@ -322,9 +322,10 @@
(defn scroll-to
[pos]
(.scroll (gdom/getElement "main-content")
#js {:top pos
:behavior "smooth"}))
(when-let [main-content (gdom/getElement "main-content")]
(.scroll main-content
#js {:top pos
:behavior "smooth"})))
(defn scroll-to-top
[]