Files
logseq/src/main/frontend/handler/common.cljs
Tienson Qin 2dfac3d774 deprecate: on-disk encryption
Why?
1. there're still a lot issues on it and there's no resource to
maintain and develop it considering we need to support it on all the
platforms.
2. it creates more bugs with Logseq Sync.
2022-11-07 10:46:17 +08:00

104 lines
3.2 KiB
Clojure

(ns frontend.handler.common
"Common fns for handlers"
(:require [cljs-bean.core :as bean]
[cljs.reader :as reader]
[clojure.string :as string]
[frontend.date :as date]
[frontend.state :as state]
[frontend.util :as util]
[frontend.util.property :as property]
[goog.object :as gobj]
["ignore" :as Ignore]))
(defn copy-to-clipboard-without-id-property!
[format raw-text html]
(util/copy-to-clipboard! (property/remove-id-property format raw-text) html))
(defn config-with-document-mode
[config]
(assoc config
:document/mode? (state/sub [:document/mode?])))
(defn ignore-files
[pattern paths]
(-> (Ignore)
(.add pattern)
(.filter (bean/->js paths))
(bean/->clj)))
(defn- hidden?
[path patterns]
(let [path (if (and (string? path)
(= \/ (first path)))
(subs path 1)
path)]
(some (fn [pattern]
(let [pattern (if (and (string? pattern)
(not= \/ (first pattern)))
(str "/" pattern)
pattern)]
(string/starts-with? (str "/" path) pattern))) patterns)))
(defn remove-hidden-files
[files config get-path-fn]
(if-let [patterns (seq (:hidden config))]
(remove (fn [file]
(let [path (get-path-fn file)]
(hidden? path patterns))) files)
files))
(defn safe-read-string
[content error-message-or-handler]
(try
(reader/read-string content)
(catch :default e
(js/console.error e)
(if (fn? error-message-or-handler)
(error-message-or-handler e)
(println error-message-or-handler))
{})))
(defn get-page-default-properties
[page-name]
{:title page-name
;; :date (date/get-date-time-string)
})
(defn fix-pages-timestamps
[pages]
(map (fn [{:block/keys [created-at updated-at journal-day] :as p}]
(cond->
p
(nil? created-at)
(assoc :block/created-at
(if journal-day
(date/journal-day->ts journal-day)
(util/time-ms)))
(nil? updated-at)
(assoc :block/updated-at
;; Not exact true
(if journal-day
(date/journal-day->ts journal-day)
(util/time-ms)))))
pages))
(defn show-custom-context-menu! [e context-menu-content]
(util/stop e)
(let [position [(gobj/get e "clientX") (gobj/get e "clientY")]]
(state/show-custom-context-menu! context-menu-content position)))
(defn listen-to-scroll!
[element]
(let [*scroll-timer (atom nil)]
(.addEventListener element "scroll"
(fn []
(when @*scroll-timer
(js/clearTimeout @*scroll-timer))
(state/set-state! :ui/scrolling? true)
(state/save-scroll-position! (util/scroll-top))
(reset! *scroll-timer (js/setTimeout
(fn [] (state/set-state! :ui/scrolling? false)) 500)))
false)))