parent
4a49dac6cd
commit
1595b0b00c
|
@ -3,7 +3,7 @@
|
||||||
(:require [cljs.core.async :as async :refer [chan put! <! >!]]
|
(:require [cljs.core.async :as async :refer [chan put! <! >!]]
|
||||||
[messenger.state :as state]
|
[messenger.state :as state]
|
||||||
[messenger.utils.utils :refer [log toast http-post]]
|
[messenger.utils.utils :refer [log toast http-post]]
|
||||||
[messenger.utils.database :as db]))
|
[messenger.persistence.realm :as realm]))
|
||||||
|
|
||||||
(def fake-contacts? false)
|
(def fake-contacts? false)
|
||||||
|
|
||||||
|
@ -40,6 +40,9 @@
|
||||||
(js->clj raw-contacts :keywordize-keys true)))}))))
|
(js->clj raw-contacts :keywordize-keys true)))}))))
|
||||||
ch))
|
ch))
|
||||||
|
|
||||||
|
(defn- get-contacts []
|
||||||
|
(realm/get-list "Contact"))
|
||||||
|
|
||||||
(defn load-syng-contacts []
|
(defn load-syng-contacts []
|
||||||
(let [contacts (map (fn [contact]
|
(let [contacts (map (fn [contact]
|
||||||
(merge contact
|
(merge contact
|
||||||
|
@ -47,9 +50,29 @@
|
||||||
:datetime "15:30"
|
:datetime "15:30"
|
||||||
:new-messages-count (rand-int 3)
|
:new-messages-count (rand-int 3)
|
||||||
:online (< (rand) 0.5)}))
|
:online (< (rand) 0.5)}))
|
||||||
(db/get-contacts))]
|
(get-contacts))]
|
||||||
(swap! state/app-state update :contacts-ds
|
(swap! state/app-state update :contacts-ds
|
||||||
#(clone-with-rows % contacts))))
|
#(clone-with-rows % contacts))))
|
||||||
|
|
||||||
|
(defn- create-contact [{:keys [phone-number whisper-identity name photo-path]}]
|
||||||
|
(realm/create "Contact"
|
||||||
|
{:phone-number phone-number
|
||||||
|
:whisper-identity whisper-identity
|
||||||
|
:name (or name "")
|
||||||
|
:photo-path (or photo-path "")}))
|
||||||
|
|
||||||
|
(defn- contact-exist? [contacts contact]
|
||||||
|
(some #(= (:phone-number contact) (:phone-number %)) contacts))
|
||||||
|
|
||||||
|
(defn- add-contacts [contacts]
|
||||||
|
(realm/write (fn []
|
||||||
|
(let [db-contacts (get-contacts)]
|
||||||
|
(dorun (map (fn [contact]
|
||||||
|
(if (not (contact-exist? db-contacts contact))
|
||||||
|
(create-contact contact)
|
||||||
|
;; TODO else override?
|
||||||
|
))
|
||||||
|
contacts))))))
|
||||||
|
|
||||||
(defn save-syng-contacts [syng-contacts]
|
(defn save-syng-contacts [syng-contacts]
|
||||||
(db/add-contacts syng-contacts))
|
(add-contacts syng-contacts))
|
||||||
|
|
|
@ -75,5 +75,8 @@
|
||||||
(> (.-length (get-by-field schema-name field value))
|
(> (.-length (get-by-field schema-name field value))
|
||||||
0))
|
0))
|
||||||
|
|
||||||
(comment
|
(defn get-count [objs]
|
||||||
)
|
(.-length objs))
|
||||||
|
|
||||||
|
(defn get-list [schema-name]
|
||||||
|
(vals (js->clj (.objects realm schema-name) :keywordize-keys true)))
|
||||||
|
|
|
@ -1,42 +0,0 @@
|
||||||
(ns messenger.utils.database
|
|
||||||
(:require [messenger.utils.utils :refer [log toast http-post]]
|
|
||||||
[messenger.persistence.realm :refer [realm]]))
|
|
||||||
|
|
||||||
(defn write [f]
|
|
||||||
(.write realm f))
|
|
||||||
|
|
||||||
(defn get-contacts-objects []
|
|
||||||
(.objects realm "Contact"))
|
|
||||||
|
|
||||||
(defn get-contacts []
|
|
||||||
(vals (js->clj (get-contacts-objects) :keywordize-keys true)))
|
|
||||||
|
|
||||||
(defn delete-contacts []
|
|
||||||
(write (fn []
|
|
||||||
(.delete realm (get-contacts-objects)))))
|
|
||||||
|
|
||||||
(defn filtered [objs query]
|
|
||||||
(.filtered objs query))
|
|
||||||
|
|
||||||
(defn get-count [objs]
|
|
||||||
(.-length objs))
|
|
||||||
|
|
||||||
(defn create-contact [{:keys [phone-number whisper-identity name photo-path]}]
|
|
||||||
(.create realm "Contact"
|
|
||||||
(clj->js {:phone-number phone-number
|
|
||||||
:whisper-identity whisper-identity
|
|
||||||
:name (or name "")
|
|
||||||
:photo-path (or photo-path "")})))
|
|
||||||
|
|
||||||
(defn contact-exist? [contacts contact]
|
|
||||||
(some #(= (:phone-number contact) (:phone-number %)) contacts))
|
|
||||||
|
|
||||||
(defn add-contacts [contacts]
|
|
||||||
(write (fn []
|
|
||||||
(let [db-contacts (get-contacts)]
|
|
||||||
(dorun (map (fn [contact]
|
|
||||||
(if (not (contact-exist? db-contacts contact))
|
|
||||||
(create-contact contact)
|
|
||||||
;; TODO else override?
|
|
||||||
))
|
|
||||||
contacts))))))
|
|
Loading…
Reference in New Issue