Skip to content

Instantly share code, notes, and snippets.

@yenda
Created November 21, 2017 15:42
Show Gist options
  • Select an option

  • Save yenda/41ea30964d57bddc63970705fb7033d2 to your computer and use it in GitHub Desktop.

Select an option

Save yenda/41ea30964d57bddc63970705fb7033d2 to your computer and use it in GitHub Desktop.
(re-frame/reg-fx
::save-discover
(fn [discover]
(discoveries/save discover)))
(re-frame/reg-fx
::save-discovers
(fn [discovers]
(doseq [{:keys [message-id] :as discover} discovers]
(when-not (discoveries/exists? message-id))
(discoveries/save discover))))
(defn add-discover [db {:keys [message-id tags] :as discover}]
(-> db
(update :tags concat tags)
(assoc-in [:discoveries message-id discover])))
(defn new-discover? [discoveries {:keys [message-id]}]
(not (get discoveries message-id )))
(handlers/register-handler-fx
:discoveries-response-received
[(re-frame/inject-cofx :now)]
(fn [{{:keys [discoveries]
:contacts/keys [contacts]} :db
now :now}
[_ {:keys [{:keys [data]} :payload
from :from]}]]
(when (and (get contacts from) data)
(let [discovers (->> data
(filter #(new-discover? discoveries discover))
(map #(assoc % :created-at now)))]
{:db (reduce add-discover db discovers)
::add-discovers discovers})
(handlers/register-handler-fx
:status-received
[(re-frame/inject-cofx :now)]
(fn [{{:keys [discoveries] :as db} :db
now :now}
[_ {{:keys [message-id status hastags profile]} :payload
from :from}]]
(when (new-discover? discoveries message-id)
(let [{:keys [name profile-image]} profile
discover {:message-id message-id
:name name
:photo-path profile-image
:status status
:whisper-id from
:tags (map #(hash-map :name %) hashtags)
:created-at now}]
{:db (add-discover db)
::add-discover discover}))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment