This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2019-05-12
Channels
- # announcements (2)
- # aws (1)
- # beginners (63)
- # cider (2)
- # clj-kondo (1)
- # cljdoc (15)
- # clojure (114)
- # clojure-nl (1)
- # clojure-spec (15)
- # clojure-uk (10)
- # clojurescript (5)
- # clojutre (1)
- # community-development (6)
- # cursive (18)
- # data-science (1)
- # datascript (16)
- # datomic (2)
- # emacs (2)
- # events (3)
- # figwheel-main (2)
- # graphql (3)
- # jobs (2)
- # off-topic (23)
- # reitit (3)
- # shadow-cljs (27)
- # spacemacs (5)
- # sql (27)
- # unrepl (1)
I have no mutations in my example, but should be about the same as query or subscription.
(re-frame/reg-event-fx
::mutate
interceptors
(fn [{:keys [db dispatchable-event]} [query variables callback-event :as event]]
(let [query (str "mutation " (string/replace query #"^mutation\s?" ""))]
(cond
(get-in db [:websocket :ready?])
(let [query-id (internals/generate-query-id)]
{:db (assoc-in db [:subscriptions query-id] {:callback callback-event})
::internals/send-ws [(get-in db [:websocket :connection])
{:id query-id
:type "start"
:payload {:query query
:variables variables}}]})
(:websocket db)
{:db (update-in db [:websocket :queue] conj dispatchable-event)}
:else
{::internals/send-http [(:http-url db)
{:request (:http-parameters db)
:payload {:query query
:variables variables}}
(fn [payload]
(re-frame/dispatch (conj callback-event payload)))]}))))