0
Fork 0
mirror of https://github.com/penpot/penpot.git synced 2025-02-20 22:06:07 -05:00

Remove some validations.

This commit is contained in:
Andrey Antukh 2016-04-12 22:23:16 +03:00
parent e42b2ed7bf
commit 5624adcedf
No known key found for this signature in database
GPG key ID: 4DFEBCB8316A8B95
8 changed files with 75 additions and 146 deletions

View file

@ -64,13 +64,8 @@
(dp/fetch-projects) (dp/fetch-projects)
(udu/fetch-profile)))))))) (udu/fetch-profile))))))))
(def ^:const ^:private +login-schema+
{:username [sc/required sc/string]
:password [sc/required sc/string]})
(defn login (defn login
[params] [params]
(sc/validate! +login-schema+ params)
(map->Login params)) (map->Login params))
;; --- Logout ;; --- Logout

View file

@ -12,22 +12,7 @@
[uxbox.schema :as sc] [uxbox.schema :as sc]
[uxbox.repo :as rp])) [uxbox.repo :as rp]))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; --- Helpers
;; Schemas
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(def ^:static +color-replace-schema+
{:id [sc/required sc/uuid]
:from [sc/color]
:to [sc/required sc/color]})
(def ^:static +remove-color-schema+
{:id [sc/required sc/uuid]
:color [sc/required sc/color]})
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Helpers
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defn assoc-page (defn assoc-page
"A reduce function for assoc the page "A reduce function for assoc the page
@ -36,9 +21,7 @@
(let [uuid (:id page)] (let [uuid (:id page)]
(update-in state [:pages-by-id] assoc uuid page))) (update-in state [:pages-by-id] assoc uuid page)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; --- Events
;; Events
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defn merge-if-not-exists (defn merge-if-not-exists
[map & maps] [map & maps]
@ -139,7 +122,6 @@
(defn replace-color (defn replace-color
"Add or replace color in a collection." "Add or replace color in a collection."
[{:keys [id from to] :as params}] [{:keys [id from to] :as params}]
(sc/validate! +color-replace-schema+ params)
(reify (reify
rs/UpdateEvent rs/UpdateEvent
(-apply-update [_ state] (-apply-update [_ state]
@ -153,7 +135,6 @@
(defn remove-color (defn remove-color
"Remove color in a collection." "Remove color in a collection."
[{:keys [id color] :as params}] [{:keys [id color] :as params}]
(sc/validate! +remove-color-schema+ params)
(reify (reify
rs/UpdateEvent rs/UpdateEvent
(-apply-update [_ state] (-apply-update [_ state]

View file

@ -74,7 +74,7 @@
(rx/mapcat on-created) (rx/mapcat on-created)
(rx/catch on-failed)))))) (rx/catch on-failed))))))
(def ^:static +create-page-schema+ (def ^:private create-page-schema
{:name [sc/required sc/string] {:name [sc/required sc/string]
:layout [sc/required sc/string] :layout [sc/required sc/string]
:width [sc/required sc/integer] :width [sc/required sc/integer]
@ -83,8 +83,8 @@
(defn create-page (defn create-page
[data] [data]
(sc/validate! +create-page-schema+ data) (-> (sc/validate! data create-page-schema)
(map->CreatePage data)) (map->CreatePage)))
;; --- Sync Page ;; --- Sync Page
@ -171,7 +171,7 @@
(rx/map on-success) (rx/map on-success)
(rx/catch on-failure))))) (rx/catch on-failure)))))
(def ^:const +update-page-schema+ (def ^:private update-page-schema
{:name [sc/required sc/string] {:name [sc/required sc/string]
:width [sc/required sc/integer] :width [sc/required sc/integer]
:height [sc/required sc/integer] :height [sc/required sc/integer]
@ -179,8 +179,9 @@
(defn update-page-metadata (defn update-page-metadata
[data] [data]
(sc/validate! +update-page-schema+ data) (-> (sc/validate! data update-page-schema)
(map->UpdatePageMetadata (dissoc data :data))) (dissoc :data)
(map->UpdatePageMetadata)))
;; --- Delete Page (by id) ;; --- Delete Page (by id)

View file

@ -70,33 +70,48 @@
[] []
(FetchProjects.)) (FetchProjects.))
;; --- Project Created
(defrecord ProjectCreated [project]
rs/UpdateEvent
(-apply-update [_ state]
(stpr/assoc-project state project)))
(defn project-created
[data]
(ProjectCreated. data))
;; --- Create Project ;; --- Create Project
(defrecord CreateProject [name width height layout] (defrecord CreateProject [name width height layout]
rs/WatchEvent rs/WatchEvent
(-apply-watch [this state s] (-apply-watch [this state s]
(letfn [(on-success [project] (letfn [(on-success [{project :payload}]
(rx/of (rs/swap #(stpr/assoc-project % project)) (rx/of
(udp/create-page (assoc (into {} this) (project-created project)
(udp/create-page {:width width
:height height
:layout layout
:project (:id project) :project (:id project)
:name "Page 1" :name "Page 1"
:data nil)))) :data nil})))
(on-failure [err] (on-failure [err]
(uum/error (tr "errors.create-project")))] (uum/error (tr "errors.create-project"))
(rx/empty))]
(->> (rp/req :create/project {:name name}) (->> (rp/req :create/project {:name name})
(rx/mapcat on-success) (rx/catch on-failure)
(rx/catch on-failure))))) (rx/mapcat on-success)))))
(def ^:static +project-schema+ (def ^:private create-project-schema
{:name [sc/required sc/string] {:name [sc/required sc/string]
:width [sc/required sc/integer] :width [sc/required sc/integer]
:height [sc/required sc/integer] :height [sc/required sc/integer]
:layout [sc/required sc/string]}) :layout [sc/required sc/string]})
(defn create-project (defn create-project
[{:keys [name width height layout] :as data}] [params]
(sc/validate! +project-schema+ data) (-> (sc/validate! params create-project-schema)
(map->CreateProject data)) (map->CreateProject)))
;; --- Delete Project (by id) ;; --- Delete Project (by id)

View file

@ -19,63 +19,9 @@
[uxbox.util.geom.point :as gpt] [uxbox.util.geom.point :as gpt]
[uxbox.util.data :refer (index-of)])) [uxbox.util.data :refer (index-of)]))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Schemas
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(def ^:static +shape-schema+
{:x [sc/integer]
:y [sc/integer]
:width [sc/integer]
:height [sc/integer]
:type [sc/required sc/shape-type]})
(def ^:static +shape-size-schema+
{:width [sc/integer]
:height [sc/integer]
:lock [sc/boolean]})
(def ^:static +shape-fill-attrs-schema+
{:color [sc/color]
:opacity [sc/number]})
(def ^:static +shape-stroke-attrs-schema+
{:color [sc/color]
:width [sc/integer]
:type [sc/keyword]
:opacity [sc/number]})
(def ^:static +shape-line-attrs-schema+
{:x1 [sc/integer]
:y1 [sc/integer]
:x2 [sc/integer]
:y2 [sc/integer]})
(def ^:static +shape-font-attrs-schema+
{:family [sc/string]
:style [sc/string]
:weight [sc/string]
:align [sc/string]
:size [sc/number]
:letter-spacing [sc/number]
:line-height [sc/number]})
(def ^:static +shape-radius-attrs-schema+
{:rx [sc/integer]
:ry [sc/integer]})
(def ^:static +shape-position-schema+
{:x [sc/integer]
:y [sc/integer]})
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Events (explicit)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defn add-shape (defn add-shape
"Create and add shape to the current selected page." "Create and add shape to the current selected page."
[shape] [shape]
(sc/validate! +shape-schema+ shape)
(reify (reify
udp/IPageUpdate udp/IPageUpdate
rs/UpdateEvent rs/UpdateEvent
@ -113,7 +59,6 @@
(defn update-line-attrs (defn update-line-attrs
[sid {:keys [x1 y1 x2 y2] :as opts}] [sid {:keys [x1 y1 x2 y2] :as opts}]
(sc/validate! +shape-line-attrs-schema+ opts)
(reify (reify
udp/IPageUpdate udp/IPageUpdate
rs/UpdateEvent rs/UpdateEvent
@ -144,7 +89,6 @@
WARN: only works with shapes that works WARN: only works with shapes that works
with height and width such are ::rect" with height and width such are ::rect"
[sid {:keys [width height] :as opts}] [sid {:keys [width height] :as opts}]
(sc/validate! +shape-size-schema+ opts)
(reify (reify
udp/IPageUpdate udp/IPageUpdate
rs/UpdateEvent rs/UpdateEvent
@ -164,7 +108,6 @@
(defn update-position (defn update-position
"Update the start position coordenate of the shape." "Update the start position coordenate of the shape."
[sid {:keys [x y] :as opts}] [sid {:keys [x y] :as opts}]
(sc/validate! +shape-position-schema+ opts)
(reify (reify
rs/UpdateEvent rs/UpdateEvent
(-apply-update [_ state] (-apply-update [_ state]
@ -182,7 +125,6 @@
(defn update-fill-attrs (defn update-fill-attrs
[sid {:keys [color opacity] :as opts}] [sid {:keys [color opacity] :as opts}]
(sc/validate! +shape-fill-attrs-schema+ opts)
(reify (reify
udp/IPageUpdate udp/IPageUpdate
rs/UpdateEvent rs/UpdateEvent
@ -195,7 +137,6 @@
(defn update-font-attrs (defn update-font-attrs
[sid {:keys [family style weight size align [sid {:keys [family style weight size align
letter-spacing line-height] :as opts}] letter-spacing line-height] :as opts}]
(sc/validate! +shape-font-attrs-schema+ opts)
(reify (reify
udp/IPageUpdate udp/IPageUpdate
rs/UpdateEvent rs/UpdateEvent
@ -212,7 +153,6 @@
(defn update-stroke-attrs (defn update-stroke-attrs
[sid {:keys [color opacity type width] :as opts}] [sid {:keys [color opacity type width] :as opts}]
(sc/validate! +shape-stroke-attrs-schema+ opts)
(reify (reify
udp/IPageUpdate udp/IPageUpdate
rs/UpdateEvent rs/UpdateEvent
@ -226,7 +166,6 @@
(defn update-radius-attrs (defn update-radius-attrs
[sid {:keys [rx ry] :as opts}] [sid {:keys [rx ry] :as opts}]
(sc/validate! +shape-radius-attrs-schema+ opts)
(reify (reify
udp/IPageUpdate udp/IPageUpdate
rs/UpdateEvent rs/UpdateEvent
@ -463,7 +402,6 @@
"Update the fill related attributed on "Update the fill related attributed on
selected shapes." selected shapes."
[opts] [opts]
(sc/validate! +shape-fill-attrs-schema+ opts)
(reify (reify
rs/WatchEvent rs/WatchEvent
(-apply-watch [_ state s] (-apply-watch [_ state s]
@ -476,7 +414,6 @@
"Update the fill related attributed on "Update the fill related attributed on
selected shapes." selected shapes."
[opts] [opts]
(sc/validate! +shape-stroke-attrs-schema+ opts)
(reify (reify
rs/WatchEvent rs/WatchEvent
(-apply-watch [_ state s] (-apply-watch [_ state s]

View file

@ -94,7 +94,6 @@
(defn update-password (defn update-password
[data] [data]
(let [[errors data] (sc/validate data update-password-schema)] (let [[errors data] (sc/validate data update-password-schema)]
(println errors)
(if errors (if errors
(forms/assign-errors :profile/password errors) (forms/assign-errors :profile/password errors)
(UpdatePassword. data)))) (UpdatePassword. data))))

View file

@ -77,8 +77,10 @@
(defn validate! (defn validate!
[data schema] [data schema]
(when-let [errors (first (validate schema data))] (let [[errors data] (validate data schema)]
(throw (ex-info "Invalid data" errors)))) (if errors
(throw (ex-info "Invalid data" errors))
data)))
(defn valid? (defn valid?
[data schema] [data schema]

View file

@ -187,44 +187,43 @@
;; --- Colors Create / Edit Lightbox ;; --- Colors Create / Edit Lightbox
(def ^:const ^:private +color-form-schema+
{:hex [sc/required sc/color]})
(defn- color-lightbox-render (defn- color-lightbox-render
[own {:keys [coll color]}] [own {:keys [coll color]}]
(let [local (:rum/local own)]
(letfn [(submit [e]
(if-let [errors (sc/validate +color-form-schema+ @local)]
(swap! local assoc :errors errors)
(let [params {:id (:id coll) :from color
:to (:hex @local)}]
(rs/emit! (dd/replace-color params))
(lightbox/close!))))
(on-change [e]
(let [value (str/trim (dom/event->value e))]
(swap! local assoc :hex value)))]
(html (html
[:div.lightbox-body [:p "TODO"]))
[:h3 "New color"] ;; (let [local (:rum/local own)]
[:form ;; (letfn [(submit [e]
[:div.row-flex ;; (if-let [errors (sc/validate +color-form-schema+ @local)]
[:input#color-hex.input-text ;; (swap! local assoc :errors errors)
{:placeholder "#" ;; (let [params {:id (:id coll) :from color
:class (form/error-class local :hex) ;; :to (:hex @local)}]
:on-change on-change ;; (rs/emit! (dd/replace-color params))
:value (or (:hex @local) color "") ;; (lightbox/close!))))
:type "text"}]] ;; (on-change [e]
[:div.row-flex.center.color-picker-default ;; (let [value (str/trim (dom/event->value e))]
(colorpicker ;; (swap! local assoc :hex value)))]
:value (or (:hex @local) color "#00ccff") ;; (html
:on-change #(swap! local assoc :hex %))] ;; [:div.lightbox-body
;; [:h3 "New color"]
;; [:form
;; [:div.row-flex
;; [:input#color-hex.input-text
;; {:placeholder "#"
;; :class (form/error-class local :hex)
;; :on-change on-change
;; :value (or (:hex @local) color "")
;; :type "text"}]]
;; [:div.row-flex.center.color-picker-default
;; (colorpicker
;; :value (or (:hex @local) color "#00ccff")
;; :on-change #(swap! local assoc :hex %))]
[:input#project-btn.btn-primary ;; [:input#project-btn.btn-primary
{:value "+ Add color" ;; {:value "+ Add color"
:on-click submit ;; :on-click submit
:type "button"}]] ;; :type "button"}]]
[:a.close {:on-click #(lightbox/close!)} ;; [:a.close {:on-click #(lightbox/close!)}
i/close]])))) ;; i/close]]))))
(def color-lightbox (def color-lightbox
(mx/component (mx/component