Use localstorage ... WIP

This commit is contained in:
mike-thompson-day8 2015-03-05 00:47:56 +11:00
parent 29e36eb862
commit c116d01a87
1 changed files with 11 additions and 8 deletions

View File

@ -1,6 +1,6 @@
(ns todomvc.handlers
(:require
[todomvc.db :refer [default-value valid-schema?]]
[todomvc.db :refer [default-value valid-schema? get-local-storage]]
[re-frame.core :refer [register-pure-handler
path after
trim-v
@ -8,9 +8,11 @@
;; -- Middleware --------------------------------------------------------------
;; To be used for handlers operating solely on todos
;;
;; checks that the structure in app-db matches the schema
(def check-schema (after valid-schema?))
;; middleware for any handler which manipulates todos.
(def todo-middleware [check-schema (path [:todos]) debug trim-v])
@ -29,10 +31,11 @@
:initialise-db ;; event id being handled
check-schema ;; middleware
(fn [_ _] ;; the handler
default-value)) ;; all hail the new state
(merge default-value
(get-local-storage)))) ;; all hail the new state
(register-pure-handler ;; disptached to when user changes the bottom filter
(register-pure-handler ;; handlers changes the footer filter
:set-showing ;; event-id
[check-schema debug trim-v] ;; middleware (wraps the handler)
(fn ;; handler
@ -40,10 +43,10 @@
(assoc db :showing filter-kw)))
(register-pure-handler ;; given only the text, create a new todo
(register-pure-handler ;; given the text, create a new todo
:add-todo
todo-middleware ;; only 'todo' part of db provided
(fn [todos [text]]
todo-middleware
(fn [todos [text]] ;; "path" middlware means we are given :todo
(let [id (next-id todos)]
(assoc todos id {:id id :title text :done false}))))
@ -52,7 +55,7 @@
:complete-all-toggle
todo-middleware
(fn [todos]
(let [val (not-every? :done (vals todos))]
(let [val (not-every? :done (vals todos))] ;; toggle true or false?
(reduce #(assoc-in %1 [%2 :done] val)
todos
(keys todos)))))