mirror of
https://github.com/penpot/penpot.git
synced 2025-03-15 01:01:30 -05:00
Start using the update metadata endpoind for simple page modifications.
This commit is contained in:
parent
6fdc0c0fd6
commit
687fda33b6
2 changed files with 42 additions and 9 deletions
|
@ -20,12 +20,6 @@
|
||||||
[uxbox.util.datetime :as dt]
|
[uxbox.util.datetime :as dt]
|
||||||
[uxbox.util.data :refer (without-keys)]))
|
[uxbox.util.data :refer (without-keys)]))
|
||||||
|
|
||||||
;; (def ^:static +update-page-metadata-schema+
|
|
||||||
;; {:name [sc/required sc/string]
|
|
||||||
;; :width [sc/required sc/integer]
|
|
||||||
;; :height [sc/required sc/integer]
|
|
||||||
;; :layout [sc/required sc/string]})
|
|
||||||
|
|
||||||
;; --- Pages Fetched
|
;; --- Pages Fetched
|
||||||
|
|
||||||
(defrecord PagesFetched [pages]
|
(defrecord PagesFetched [pages]
|
||||||
|
@ -86,11 +80,12 @@
|
||||||
|
|
||||||
;; --- Update Page
|
;; --- Update Page
|
||||||
|
|
||||||
(defrecord UpdatePage [id name width height layout]
|
(defrecord UpdatePage [id name width height layout data]
|
||||||
rs/UpdateEvent
|
rs/UpdateEvent
|
||||||
(-apply-update [_ state]
|
(-apply-update [_ state]
|
||||||
(letfn [(updater [page]
|
(letfn [(updater [page]
|
||||||
(merge page
|
(merge page
|
||||||
|
(when data {:data data})
|
||||||
(when width {:width width})
|
(when width {:width width})
|
||||||
(when height {:height height})
|
(when height {:height height})
|
||||||
(when name {:name name})))]
|
(when name {:name name})))]
|
||||||
|
@ -119,6 +114,45 @@
|
||||||
(sc/validate! +update-page-schema+ data)
|
(sc/validate! +update-page-schema+ data)
|
||||||
(map->UpdatePage data))
|
(map->UpdatePage data))
|
||||||
|
|
||||||
|
;; --- Update Page Metadata
|
||||||
|
|
||||||
|
;; This is a simplified version of `UpdatePage` event
|
||||||
|
;; that does not sends the heavyweiht `:data` attribute
|
||||||
|
;; and only serves for update other page data.
|
||||||
|
|
||||||
|
(defrecord UpdatePageMetadata [id name width height layout]
|
||||||
|
rs/UpdateEvent
|
||||||
|
(-apply-update [_ state]
|
||||||
|
(letfn [(updater [page]
|
||||||
|
(merge page
|
||||||
|
(when width {:width width})
|
||||||
|
(when height {:height height})
|
||||||
|
(when name {:name name})))]
|
||||||
|
(update-in state [:pages-by-id id] updater)))
|
||||||
|
|
||||||
|
rs/WatchEvent
|
||||||
|
(-apply-watch [this state s]
|
||||||
|
(println "UpdatePageMetadata" "-apply-watch")
|
||||||
|
(letfn [(on-success [{page :payload}]
|
||||||
|
(println "on-success")
|
||||||
|
#(assoc-in % [:pages-by-id id :version] (:version page)))
|
||||||
|
(on-failure [e]
|
||||||
|
(println "on-failure" e)
|
||||||
|
(uum/error (tr "errors.page-update"))
|
||||||
|
(rx/empty))]
|
||||||
|
(->> (rp/do :update/page-metadata (into {} this))
|
||||||
|
(rx/map on-success)
|
||||||
|
(rx/catch on-failure)))))
|
||||||
|
|
||||||
|
(def ^:static +update-page-metadata-schema+
|
||||||
|
(dissoc +update-page-schema+ :data))
|
||||||
|
|
||||||
|
(defn update-page-metadata
|
||||||
|
[data]
|
||||||
|
(sc/validate! +update-page-metadata-schema+ data)
|
||||||
|
(map->UpdatePageMetadata (dissoc data :data)))
|
||||||
|
|
||||||
|
|
||||||
;; --- Delete Page (by id)
|
;; --- Delete Page (by id)
|
||||||
|
|
||||||
(defrecord DeletePage [id]
|
(defrecord DeletePage [id]
|
||||||
|
@ -127,7 +161,6 @@
|
||||||
(letfn [(on-success [_]
|
(letfn [(on-success [_]
|
||||||
(rs/swap #(stpr/dissoc-page % id)))
|
(rs/swap #(stpr/dissoc-page % id)))
|
||||||
(on-failure [e]
|
(on-failure [e]
|
||||||
(println "ERROR" e)
|
|
||||||
(uum/error (tr "errors.delete-page"))
|
(uum/error (tr "errors.delete-page"))
|
||||||
(rx/empty))]
|
(rx/empty))]
|
||||||
(->> (rp/do :delete/page id)
|
(->> (rp/do :delete/page id)
|
||||||
|
|
|
@ -135,7 +135,7 @@
|
||||||
(dom/prevent-default e)
|
(dom/prevent-default e)
|
||||||
(lightbox/close!)
|
(lightbox/close!)
|
||||||
(if edition?
|
(if edition?
|
||||||
(rs/emit! (udp/update-page page))
|
(rs/emit! (udp/update-page-metadata page))
|
||||||
(rs/emit! (udp/create-page page))))]
|
(rs/emit! (udp/create-page page))))]
|
||||||
(html
|
(html
|
||||||
[:div.lightbox-body
|
[:div.lightbox-body
|
||||||
|
|
Loading…
Add table
Reference in a new issue