don't show inventory management ui if user is not authorized

but can show it if user authorization is not required, as indicated by
the app's config.edn
This commit is contained in:
Gered 2016-06-29 18:29:28 -04:00
parent 2c89c13a64
commit a7f1d5aa17

View file

@ -6,6 +6,7 @@
[webtools.reagent.bootstrap :as bs] [webtools.reagent.bootstrap :as bs]
[webtools.cljs.ajax :as ajax] [webtools.cljs.ajax :as ajax]
[webtools.cljs.utils :refer [->url]] [webtools.cljs.utils :refer [->url]]
[mtgcoll.client.auth :as auth]
[mtgcoll.client.page :refer [set-error!]])) [mtgcoll.client.page :refer [set-error!]]))
(def qualities (def qualities
@ -23,59 +24,75 @@
:params {:card-id card-id :quality quality :foil foil?} :params {:card-id card-id :quality quality :foil foil?}
:on-error #(set-error! "Server error while adding card to inventory."))) :on-error #(set-error! "Server error while adding card to inventory.")))
(defn can-modify-inventory?
[]
(or (not (auth/auth-required?))
(auth/authenticated?)))
(defvc inventory-management (defvc inventory-management
[card-id] [card-id]
(let [inventory (view-cursor :owned-card card-id) (let [inventory (view-cursor :owned-card card-id)
inventory (group-by :quality @inventory)] inventory (group-by :quality @inventory)
colspan (if (can-modify-inventory?) 2 1)
quantity-class (if (can-modify-inventory?)
"quantity col-sm-1"
"quantity col-sm-4")]
[bs/Grid {:fluid true :class "inventory-container"} [bs/Grid {:fluid true :class "inventory-container"}
[bs/Table [bs/Table
{:condensed true :hover true :bordered true} {:condensed true :hover true :bordered true}
[:thead [:thead
[:tr [:tr
[:th ""] [:th ""]
[:th {:col-span 2} [:span.text-center "Normal"]] [:th.text-center {:col-span colspan} "Normal"]
[:th {:col-span 2} [:span.text-center "Foil"]]]] [:th.text-center {:col-span colspan} "Foil"]]]
[:tbody [:tbody
(map-indexed (doall
(fn [idx quality] (map-indexed
(let [inventory (get inventory quality) (fn [idx quality]
quantities (group-by :foil inventory) (let [inventory (get inventory quality)
foil-quantity (or (:quantity (first (get quantities true))) 0) quantities (group-by :foil inventory)
non-foil-quantity (or (:quantity (first (get quantities false))) 0)] foil-quantity (or (:quantity (first (get quantities true))) 0)
^{:key idx} non-foil-quantity (or (:quantity (first (get quantities false))) 0)]
[:tr ^{:key idx}
{:class (if (or (> foil-quantity 0) [:tr
(> non-foil-quantity 0)) {:class (if (or (> foil-quantity 0)
"bg-warning")} (> non-foil-quantity 0))
[:td.quality-label.col-sm-4 "bg-warning")}
[:span.text-right [:td.quality-label.col-sm-4
[bs/FormControl.Static [:span.text-right
(str (string/capitalize quality) ": ")]]] [bs/FormControl.Static
;; non-foil (str (string/capitalize quality) ": ")]]]
[:td.quantity.col-sm-1 ;; non-foil
[bs/FormControl.Static [:td {:class quantity-class}
[:strong non-foil-quantity]]] [bs/FormControl.Static
[:td.col-sm-3 (if (> non-foil-quantity 0)
[bs/ButtonGroup {:justified true} [:strong non-foil-quantity]
[bs/ButtonGroup [:span.text-muted 0])]]
[bs/Button {:bsStyle "success" :on-click #(on-add-card card-id quality false)} (if (can-modify-inventory?)
[bs/Glyphicon {:glyph "plus"}]]] [:td.col-sm-3
[bs/ButtonGroup [bs/ButtonGroup {:justified true}
[bs/Button {:bsStyle "danger" :disabled (= 0 non-foil-quantity) :on-click #(on-remove-card card-id quality false)} [bs/ButtonGroup
[bs/Glyphicon {:glyph "minus"}]]]]] [bs/Button {:bsStyle "success" :on-click #(on-add-card card-id quality false)}
;; foil [bs/Glyphicon {:glyph "plus"}]]]
[:td.quantity.col-sm-1 [bs/ButtonGroup
[bs/FormControl.Static [bs/Button {:bsStyle "danger" :disabled (= 0 non-foil-quantity) :on-click #(on-remove-card card-id quality false)}
[:strong foil-quantity]]] [bs/Glyphicon {:glyph "minus"}]]]]])
[:td.col-sm-3 ;; foil
[bs/ButtonGroup {:justified true} [:td {:class quantity-class}
[bs/ButtonGroup [bs/FormControl.Static
[bs/Button {:bsStyle "success" :on-click #(on-add-card card-id quality true)} (if (> foil-quantity 0)
[bs/Glyphicon {:glyph "plus"}]]] [:strong foil-quantity]
[bs/ButtonGroup [:span.text-muted 0])]]
[bs/Button {:bsStyle "danger" :disabled (= 0 foil-quantity) :on-click #(on-remove-card card-id quality true)} (if (can-modify-inventory?)
[bs/Glyphicon {:glyph "minus"}]]]]]])) [:td.col-sm-3
qualities)]]])) [bs/ButtonGroup {:justified true}
[bs/ButtonGroup
[bs/Button {:bsStyle "success" :on-click #(on-add-card card-id quality true)}
[bs/Glyphicon {:glyph "plus"}]]]
[bs/ButtonGroup
[bs/Button {:bsStyle "danger" :disabled (= 0 foil-quantity) :on-click #(on-remove-card card-id quality true)}
[bs/Glyphicon {:glyph "minus"}]]]]])]))
qualities))]]]))
(defn inventory (defn inventory
[card-id & [{:keys [num-owned owned? button-size button-style] :as opts}]] [card-id & [{:keys [num-owned owned? button-size button-style] :as opts}]]