Browse Source

fix(apis): create page for journals

charlie 9 months ago
parent
commit
f28d344ef3
1 changed files with 56 additions and 47 deletions
  1. 56 47
      src/main/logseq/api.cljs

+ 56 - 47
src/main/logseq/api.cljs

@@ -42,6 +42,7 @@
             [frontend.version :as fv]
             [goog.dom :as gdom]
             [goog.object :as gobj]
+            [goog.date :as gdate]
             [lambdaisland.glogi :as log]
             [logseq.api.block :as api-block]
             [logseq.common.util :as common-util]
@@ -54,6 +55,7 @@
             [logseq.sdk.git]
             [logseq.sdk.ui :as sdk-ui]
             [logseq.sdk.utils :as sdk-utils]
+            [logseq.common.util.date-time :as date-time-util]
             [promesa.core :as p]
             [reitit.frontend.easy :as rfe]))
 
@@ -208,8 +210,7 @@
   (fn [path]
     (if (util/electron?)
       (fs/read-file nil (util/node-path.join path "package.json"))
-      (do (js/console.log "==>>> TODO: load plugin package.json from local???")
-          ""))))
+      (js/console.log "TODO: load plugin package.json from web plugin."))))
 
 (def ^:export load_plugin_readme
   (fn [path]
@@ -620,61 +621,69 @@
                              (some->> page (api-block/into-properties (state/get-current-repo))))]
           (bean/->js (sdk-utils/normalize-keyword-for-json page)))))))
 
-(def ^:export get_page
-  (fn [id-or-page-name]
-    (p/let [page (db-async/<pull (state/get-current-repo)
-                                 (cond
-                                   (number? id-or-page-name)
-                                   id-or-page-name
-                                   (util/uuid-string? id-or-page-name)
-                                   [:block/uuid (uuid id-or-page-name)]
-                                   :else
-                                   [:block/name (util/page-name-sanity-lc id-or-page-name)]))]
-      (when-let [page (and (:block/name page)
-                           (some->> page (api-block/into-properties (state/get-current-repo))))]
-        (bean/->js (sdk-utils/normalize-keyword-for-json page))))))
-
-(def ^:export get_all_pages
-  (fn []
-    (let [db (conn/get-db (state/get-current-repo))]
-      (some->
-       (->>
+(defn ^:export get_page
+  [id-or-page-name]
+  (p/let [page (db-async/<pull (state/get-current-repo)
+                 (cond
+                   (number? id-or-page-name)
+                   id-or-page-name
+                   (util/uuid-string? id-or-page-name)
+                   [:block/uuid (uuid id-or-page-name)]
+                   :else
+                   [:block/name (util/page-name-sanity-lc id-or-page-name)]))]
+    (when-let [page (and (:block/name page)
+                      (some->> page (api-block/into-properties (state/get-current-repo))))]
+      (bean/->js (sdk-utils/normalize-keyword-for-json page)))))
+
+(defn ^:export get_all_pages
+  []
+  (let [db (conn/get-db (state/get-current-repo))]
+    (some->
+      (->>
         (d/datoms db :avet :block/name)
         (map #(db-utils/pull (:e %)))
         (remove ldb/hidden?)
         (remove (fn [page]
                   (common-util/uuid-string? (:block/name page)))))
-       (sdk-utils/normalize-keyword-for-json)
-       (bean/->js)))))
-
-(def ^:export create_page
-  (fn [name ^js properties ^js opts]
-    (let [properties (bean/->clj properties)
-          db-base? (config/db-based-graph? (state/get-current-repo))
-          {:keys [redirect createFirstBlock format journal]} (bean/->clj opts)]
-      (p/let [page (<pull-block name)
-              new-page (when-not page
-                         (page-handler/<create!
-                          name
-                          (cond->
+      (sdk-utils/normalize-keyword-for-json)
+      (bean/->js))))
+
+(defn ^:export create_page
+  [name ^js properties ^js opts]
+  (let [properties (bean/->clj properties)
+        db-base? (config/db-based-graph? (state/get-current-repo))
+        {:keys [redirect createFirstBlock format journal]} (bean/->clj opts)]
+    (p/let [page (<pull-block name)
+            new-page (when-not page
+                       (page-handler/<create!
+                         name
+                         (cond->
                            {:redirect? (if (boolean? redirect) redirect true)
                             :journal? journal
                             :create-first-block? (if (boolean? createFirstBlock) createFirstBlock true)
                             :format format}
 
-                            (not db-base?)
-                            (assoc :properties properties))))
-              _ (when (and db-base? (seq properties))
-                  (api-block/save-db-based-block-properties! new-page properties))]
-        (some-> (or page new-page)
-                :db/id
-                (db-utils/entity)
-                (sdk-utils/normalize-keyword-for-json)
-                (bean/->js))))))
-
-(def ^:export delete_page
-  (fn [name]
-    (page-handler/<delete! name nil)))
+                           (not db-base?)
+                           (assoc :properties properties))))
+            _ (when (and db-base? (seq properties))
+                (api-block/save-db-based-block-properties! new-page properties))]
+      (some-> (or page new-page)
+        :db/id
+        (db-utils/pull)
+        (sdk-utils/normalize-keyword-for-json)
+        (bean/->js)))))
+
+(defn ^:export create_journal_page
+  [^js date]
+  (let [date (js/Date. date)]
+    (when-let [datestr (and (not (js/isNaN (.getTime date)))
+                          (-> (gdate/Date. date)
+                            (date-time-util/format "yyyy-MM-dd")))]
+      (create_page datestr nil #js {:journal true :redirect false}))))
+
+(defn ^:export delete_page
+  [name]
+  (page-handler/<delete! name nil))
 
 (def ^:export rename_page
   page-handler/rename!)