mirror of
https://github.com/logseq/logseq.git
synced 2026-04-26 15:15:01 +00:00
enhance(plugin): improve route handling and UI component structure
This commit is contained in:
@@ -71,8 +71,8 @@
|
||||
[theme]
|
||||
(when theme
|
||||
(cond-> theme
|
||||
(util/electron?)
|
||||
(update :url #(some-> % (string/replace-first "assets://" "file://"))))))
|
||||
(util/electron?)
|
||||
(update :url #(some-> % (string/replace-first "assets://" "file://"))))))
|
||||
|
||||
(defn load-plugin-preferences
|
||||
[]
|
||||
@@ -108,7 +108,7 @@
|
||||
(if-let [res (and res (bean/->clj res))]
|
||||
(let [pkgs (:packages res)
|
||||
pkgs (if (util/electron?) pkgs
|
||||
(some->> pkgs (filterv #(or (true? (:web %)) (not (true? (:effect %)))))))]
|
||||
(some->> pkgs (filterv #(or (true? (:web %)) (not (true? (:effect %)))))))]
|
||||
(state/set-state! :plugin/marketplace-pkgs pkgs)
|
||||
(resolve pkgs))
|
||||
(reject nil)))]
|
||||
@@ -131,8 +131,8 @@
|
||||
:plugin/marketplace-stats
|
||||
(into {} (map (fn [[k stat]]
|
||||
[k (assoc stat
|
||||
:total_downloads
|
||||
(reduce (fn [a b] (+ a (get b 2))) 0 (:releases stat)))])
|
||||
:total_downloads
|
||||
(reduce (fn [a b] (+ a (get b 2))) 0 (:releases stat)))])
|
||||
res)))
|
||||
(resolve nil))
|
||||
(reject nil)))]
|
||||
@@ -153,7 +153,7 @@
|
||||
(p/then (fn [manifests]
|
||||
(let [mft (some #(when (= (:id %) id) %) manifests)
|
||||
opts (merge (dissoc pkg :logger) mft)]
|
||||
;;TODO: (throw (js/Error. [:not-found-in-marketplace id]))
|
||||
;;TODO: (throw (js/Error. [:not-found-in-marketplace id]))
|
||||
(if (util/electron?)
|
||||
(ipc/ipc :updateMarketPlugin opts)
|
||||
(plugin-common-handler/async-install-or-update-for-web! opts)))
|
||||
@@ -229,7 +229,7 @@
|
||||
(p/then
|
||||
(.reload pl)
|
||||
#(do
|
||||
;;(if theme (select-a-plugin-theme id))
|
||||
;;(if theme (select-a-plugin-theme id))
|
||||
(when (not (util/electron?))
|
||||
(set! (.-version (.-options pl)) (:version web-pkg))
|
||||
(set! (.-webPkg (.-options pl)) (bean/->js web-pkg))
|
||||
@@ -293,8 +293,8 @@
|
||||
(defn- normalize-plugin-metadata
|
||||
[metadata]
|
||||
(cond-> metadata
|
||||
(not (string? (:author metadata)))
|
||||
(assoc :author (or (get-in metadata [:author :name]) ""))))
|
||||
(not (string? (:author metadata)))
|
||||
(assoc :author (or (get-in metadata [:author :name]) ""))))
|
||||
|
||||
(defn register-plugin
|
||||
[plugin-metadata]
|
||||
@@ -441,13 +441,19 @@
|
||||
([type *providers] (create-local-renderer-getter type *providers false))
|
||||
([type *providers many?]
|
||||
(fn [key]
|
||||
(when-let [key (and (seq @*providers) key (keyword key))]
|
||||
(when-let [rs (->> @*providers
|
||||
(map (fn [pid] (state/get-plugin-resource pid type key)))
|
||||
(remove nil?)
|
||||
(flatten)
|
||||
(seq))]
|
||||
(if many? rs (first rs)))))))
|
||||
(when (seq @*providers)
|
||||
(if key
|
||||
(when-let [rs (->> @*providers
|
||||
(map (fn [pid] (state/get-plugin-resource pid type key)))
|
||||
(remove nil?)
|
||||
(flatten)
|
||||
(seq))]
|
||||
(if many? rs (first rs)))
|
||||
(->> @*providers
|
||||
(mapcat (fn [pid]
|
||||
(some-> (state/get-plugin-resources-with-type pid type)
|
||||
(vals))))
|
||||
(seq)))))))
|
||||
|
||||
(defonce *fenced-code-providers (atom #{}))
|
||||
(def register-fenced-code-renderer
|
||||
@@ -469,11 +475,13 @@
|
||||
(create-local-renderer-getter
|
||||
:extensions-enhancers *extensions-enhancer-providers true))
|
||||
|
||||
(def *route-renderer-providers (atom #{}))
|
||||
(defonce *route-renderer-providers (atom #{}))
|
||||
(def register-route-renderer
|
||||
;; [pid key payload]
|
||||
(create-local-renderer-register
|
||||
:route-renderers *route-renderer-providers))
|
||||
(def get-route-renderers
|
||||
;; [key] optional
|
||||
(create-local-renderer-getter
|
||||
:route-renderers *route-renderer-providers true))
|
||||
|
||||
@@ -496,9 +504,9 @@
|
||||
(defn update-plugin-settings-state
|
||||
[id settings]
|
||||
(state/set-state! [:plugin/installed-plugins id :settings]
|
||||
;; TODO: force settings related ui reactive
|
||||
;; Sometimes toggle to `disable` not working
|
||||
;; But related-option data updated?
|
||||
;; TODO: force settings related ui reactive
|
||||
;; Sometimes toggle to `disable` not working
|
||||
;; But related-option data updated?
|
||||
(assoc settings :disabled (boolean (:disabled settings)))))
|
||||
|
||||
(defn open-settings-file-in-default-app!
|
||||
@@ -813,8 +821,8 @@
|
||||
:theme theme?
|
||||
:web-pkg (cond-> package
|
||||
|
||||
(not github?)
|
||||
(assoc :installedFromUserWebUrl url))}}))
|
||||
(not github?)
|
||||
(assoc :installedFromUserWebUrl url))}}))
|
||||
url)))
|
||||
|
||||
;; components
|
||||
@@ -896,8 +904,8 @@
|
||||
(.on "theme-selected" (fn [^js theme]
|
||||
(let [theme (bean/->clj theme)
|
||||
theme (assets-theme-to-file theme)
|
||||
url (:url theme)
|
||||
mode (or (:mode theme) (state/sub :ui/theme))]
|
||||
url (:url theme)
|
||||
mode (or (:mode theme) (state/sub :ui/theme))]
|
||||
(when mode
|
||||
(state/set-custom-theme! mode theme)
|
||||
(state/set-theme-mode! mode))
|
||||
@@ -909,7 +917,7 @@
|
||||
custom-theme (dissoc themes :mode)
|
||||
mode (:mode themes)]
|
||||
(state/set-custom-theme! {:light (if (nil? (:light custom-theme)) {:mode "light"} (:light custom-theme))
|
||||
:dark (if (nil? (:dark custom-theme)) {:mode "dark"} (:dark custom-theme))})
|
||||
:dark (if (nil? (:dark custom-theme)) {:mode "dark"} (:dark custom-theme))})
|
||||
(state/set-theme-mode! mode))))
|
||||
|
||||
(.on "settings-changed" (fn [id ^js settings]
|
||||
@@ -926,9 +934,9 @@
|
||||
(when-let [end (and (some-> v (.-o) (.-disabled) (not))
|
||||
(.-e v))]
|
||||
(when (and (number? end)
|
||||
;; valid end time
|
||||
;; valid end time
|
||||
(> end 0)
|
||||
;; greater than 6s
|
||||
;; greater than 6s
|
||||
(> (- end (.-s v)) 6000))
|
||||
v))))
|
||||
((fn [perfs]
|
||||
@@ -947,9 +955,9 @@
|
||||
|
||||
(p/then
|
||||
(fn [plugins-async]
|
||||
;; true indicate for preboot finished
|
||||
;; true indicate for preboot finished
|
||||
(state/set-state! :plugin/indicator-text true)
|
||||
;; wait for the plugin register async messages
|
||||
;; wait for the plugin register async messages
|
||||
(js/setTimeout
|
||||
(fn []
|
||||
(some-> (seq plugins-async)
|
||||
@@ -969,8 +977,8 @@
|
||||
(init-plugins!)))
|
||||
|
||||
(comment
|
||||
{:pending (count (:plugin/updates-pending @state/state))
|
||||
:auto-checking? (boolean (:plugin/updates-auto-checking? @state/state))
|
||||
:coming (count (:plugin/updates-coming @state/state))
|
||||
:installing (:plugin/installing @state/state)
|
||||
:downloading? (boolean (:plugin/updates-downloading? @state/state))})
|
||||
{:pending (count (:plugin/updates-pending @state/state))
|
||||
:auto-checking? (boolean (:plugin/updates-auto-checking? @state/state))
|
||||
:coming (count (:plugin/updates-coming @state/state))
|
||||
:installing (:plugin/installing @state/state)
|
||||
:downloading? (boolean (:plugin/updates-downloading? @state/state))})
|
||||
|
||||
Reference in New Issue
Block a user