Fix bug where grubs/recipes could not be deleted

- Fixed by using keywords as map keys client-side. Monger "keywordizes"
  keys by default and it's easier to change client side than to remove
  that behavior.
This commit is contained in:
Nicholas Kariniemi 2015-06-16 19:57:41 +03:00
parent 6794e81ea9
commit f7b79a5e2a
5 changed files with 12 additions and 19 deletions

View file

@ -22,7 +22,7 @@
(when (not (empty? new-grub-text))
(let [new-grub (grub-view/new-grub new-grub-text)]
(om/set-state! owner :new-grub-text "")
(om/transact! grubs nil #(assoc % (:id new-grub) new-grub) :local))))
(om/transact! grubs nil #(assoc % (keyword (:id new-grub)) new-grub) :local))))
(defn view [grubs owner]
(reify
@ -71,5 +71,5 @@
(go-loop []
(let [id (<! remove-grub-ch)]
(when-not (nil? id)
(om/transact! grubs nil #(dissoc % id) :local)
(om/transact! grubs nil #(dissoc % (keyword id)) :local)
(recur))))))))

View file

@ -1,12 +1,9 @@
(ns grub.view.recipe-list
(:require [grub.view.dom :as dom]
[grub.view.grub :as grub-view]
[grub.view.recipe :as recipe]
(:require [grub.view.recipe :as recipe]
[grub.view.recipe-new :as recipe-new]
[om.core :as om :include-macros true]
[sablono.core :as html :refer-macros [html]]
[cljs.core.async :as a :refer [<! chan]]
[cljs-uuid.core :as uuid])
[sablono.core :refer-macros [html]]
[cljs.core.async :refer [<! chan]])
(:require-macros [grub.macros :refer [log logs]]
[cljs.core.async.macros :refer [go go-loop]]))
@ -36,9 +33,9 @@
(go (loop []
(let [removed-id (<! remove-recipe-ch)]
(when-not (nil? removed-id)
(om/transact! recipes nil #(dissoc % removed-id) :local))
(om/transact! recipes nil #(dissoc % (keyword removed-id)) :local))
(recur))))
(go (loop []
(let [added (<! add-recipe-ch)]
(om/transact! recipes nil #(assoc % (:id added) added) :local)
(om/transact! recipes nil #(assoc % (keyword (:id added)) added) :local)
(recur))))))))

View file

@ -2,17 +2,15 @@
(:require [grub.view.dom :as dom]
[grub.view.recipe :as recipe]
[om.core :as om :include-macros true]
[sablono.core :as html :refer-macros [html]]
[cljs.core.async :as a :refer [<! chan]]
[cljs-uuid.core :as uuid])
[sablono.core :refer-macros [html]]
[cljs.core.async :as a :refer [<! chan]])
(:require-macros [grub.macros :refer [log logs]]
[cljs.core.async.macros :refer [go go-loop]]))
(defn add-recipe [owner name grubs directions]
(when (and (not (empty? name))
(not (empty? grubs)))
(let [recipes (om/get-props owner)
new-recipe (recipe/new-recipe name grubs directions)
(let [new-recipe (recipe/new-recipe name grubs directions)
add-recipe-ch (om/get-state owner :add-recipe-ch)]
(om/set-state! owner :new-recipe-name "")
(om/set-state! owner :new-recipe-grubs "")

View file

@ -1,6 +1,4 @@
(ns grub.state
(:require [grub.diff :as diff]
[grub.util :as util]))
(ns grub.state)
(def num-history-states 20)

View file

@ -6,7 +6,7 @@
(defn map-by-key [key coll]
(->> coll
(map (fn [a] [(get a key) a]))
(map (fn [a] [(keyword (get a key)) a]))
(into {})))
(defn printer []