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