Skip to content

Instantly share code, notes, and snippets.

@onetom
Created January 23, 2015 00:19
Show Gist options
  • Save onetom/b6128ef804036d8542cc to your computer and use it in GitHub Desktop.
Save onetom/b6128ef804036d8542cc to your computer and use it in GitHub Desktop.
Side effecting on cell value transition
(defc user nil)
(defc route "")
(defn role-of [user route]
(when user
(if (= "#/secret-route" route) :power-user :pawn)))
(defn get-submissions-for [user route]
(when-let [role (role-of user route)]
(get-submissions role (:email user))))
(add-watch user :reload-submission-on-user-change
(fn [_ _ _ new-user] (get-submissions-for new-user @route)))
(add-watch route :reload-submission-on-route-change
(fn [_ _ _ new-route] (get-submissions-for @user new-route)))
@mynomoto
Copy link

Hi,

I think you just want something like:

(defc user nil)
(defc route "")

(defn role-of [user route]
    (when user
        (if (= "#/secret-route" route) :power-user :pawn)))

(defn get-submissions-for [user route]
    (when-let [role (role-of user route)]
        (get-submissions role (:email user))))

(cell= (get-submissions-for user route))

HTH,
mynomoto

@onetom
Copy link
Author

onetom commented Jan 25, 2015

Thanks, it worked.

I think the problem was that I was doing a refactoring and I was using (current-user) in some places instead of user. But current-user was defined as (defn current-user [] @user) which I guess broke javelin's dependency calculation.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment