mirror of
https://github.com/unclebob/more-speech.git
synced 2024-09-30 10:30:56 +00:00
Encapsulate :user-configuration
This commit is contained in:
parent
cfa8f915fd
commit
39cd3b98c9
15
spec/more_speech/db/in_memory_spec.clj
Normal file
15
spec/more_speech/db/in_memory_spec.clj
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
(ns more-speech.db.in-memory-spec
|
||||||
|
(:require [speclj.core :refer :all]
|
||||||
|
[more-speech.db.gateway :as gateway]
|
||||||
|
[more-speech.db.in-memory :as in-memory]))
|
||||||
|
|
||||||
|
(declare db)
|
||||||
|
(describe "in-memory database"
|
||||||
|
(with db (in-memory/get-db))
|
||||||
|
(before (in-memory/clear-db @db))
|
||||||
|
|
||||||
|
(it "checks for existing event"
|
||||||
|
(gateway/add-event @db 1 {:content "event"})
|
||||||
|
(should (gateway/event-exists? @db 1))
|
||||||
|
(should-not (gateway/event-exists? @db 2)))
|
||||||
|
)
|
@ -5,6 +5,17 @@
|
|||||||
|
|
||||||
(describe "user configuration"
|
(describe "user configuration"
|
||||||
(with-stubs)
|
(with-stubs)
|
||||||
|
(context "basic functions"
|
||||||
|
(before (reset! ui-context {:event-context (atom {})}))
|
||||||
|
(it "sets and gets a config"
|
||||||
|
(set-config :test "test")
|
||||||
|
(should= "test" (get-config :test)))
|
||||||
|
|
||||||
|
(it "sets and gets a nested config"
|
||||||
|
(set-config [:test :nest] "nest")
|
||||||
|
(should= "nest" (get-config [:test :nest])))
|
||||||
|
)
|
||||||
|
|
||||||
(context "export user profile"
|
(context "export user profile"
|
||||||
(it "creates if empty"
|
(it "creates if empty"
|
||||||
(let [uc (validate {})]
|
(let [uc (validate {})]
|
||||||
|
@ -60,14 +60,12 @@
|
|||||||
|
|
||||||
(defn add-event [db event urls]
|
(defn add-event [db event urls]
|
||||||
(let [id (:id event)
|
(let [id (:id event)
|
||||||
time (:created-at event)
|
time (:created-at event)]
|
||||||
event-atom (:data db)]
|
|
||||||
(when-not (gateway/event-exists? db id)
|
(when-not (gateway/event-exists? db id)
|
||||||
(gateway/add-event db id event)
|
(gateway/add-event db id event)
|
||||||
(add-cross-reference db event)
|
(add-cross-reference db event)
|
||||||
(swap! event-atom update :days-changed conj (quot time 86400)))
|
(set-mem :days-changed (conj (get-mem :days-changed) (quot time 86400))))
|
||||||
(gateway/add-relays-to-event db id urls)
|
(gateway/add-relays-to-event db id urls)))
|
||||||
))
|
|
||||||
|
|
||||||
(defn process-text-event [db event url]
|
(defn process-text-event [db event url]
|
||||||
(add-event db event [url])
|
(add-event db event [url])
|
||||||
|
@ -2,6 +2,21 @@
|
|||||||
(:require [more-speech.ui.swing.ui-context :refer :all]
|
(:require [more-speech.ui.swing.ui-context :refer :all]
|
||||||
[more-speech.config :as config]))
|
[more-speech.config :as config]))
|
||||||
|
|
||||||
|
(defn get-config
|
||||||
|
([]
|
||||||
|
(get-mem :user-configuration))
|
||||||
|
([tag]
|
||||||
|
(get-config tag nil))
|
||||||
|
([tag default]
|
||||||
|
(if (coll? tag)
|
||||||
|
(get-in (get-config) tag default)
|
||||||
|
(get (get-mem :user-configuration) tag default))))
|
||||||
|
|
||||||
|
(defn set-config [tag value]
|
||||||
|
(if (coll? tag)
|
||||||
|
(swap! (get-mem) assoc-in (concat [:user-configuration] tag) value)
|
||||||
|
(swap! (get-mem) assoc-in [:user-configuration tag] value)))
|
||||||
|
|
||||||
(defn validate-export-user-profile [user-configuration]
|
(defn validate-export-user-profile [user-configuration]
|
||||||
(let [xup (get user-configuration :export-user-profile {})
|
(let [xup (get user-configuration :export-user-profile {})
|
||||||
xad (get xup :export-after-days 7)
|
xad (get xup :export-after-days 7)
|
||||||
@ -22,48 +37,37 @@
|
|||||||
(defn validate [user-configuration]
|
(defn validate [user-configuration]
|
||||||
(-> user-configuration
|
(-> user-configuration
|
||||||
validate-export-user-profile
|
validate-export-user-profile
|
||||||
validate-import-metadata)
|
validate-import-metadata))
|
||||||
)
|
|
||||||
|
|
||||||
(defn keys-last-modified []
|
(defn keys-last-modified []
|
||||||
(let [keys-file (clojure.java.io/file @config/keys-filename)]
|
(let [keys-file (clojure.java.io/file @config/keys-filename)]
|
||||||
(quot (.lastModified keys-file) 1000)))
|
(quot (.lastModified keys-file) 1000)))
|
||||||
|
|
||||||
(defn should-export-profile? [now-in-seconds]
|
(defn should-export-profile? [now-in-seconds]
|
||||||
(let [user-configuration (get-event-state :user-configuration)
|
(let [xad (get-config [:export-user-profile :export-after-days])
|
||||||
xad (get-in user-configuration [:export-user-profile :export-after-days])
|
lte (get-config [:export-user-profile :last-time-exported])]
|
||||||
lte (get-in user-configuration [:export-user-profile :last-time-exported])]
|
|
||||||
(and (number? xad)
|
(and (number? xad)
|
||||||
(or (>= now-in-seconds (+ lte (* 86400 xad)))
|
(or (>= now-in-seconds (+ lte (* 86400 xad)))
|
||||||
(>= (keys-last-modified) lte))))
|
(>= (keys-last-modified) lte))))
|
||||||
)
|
)
|
||||||
|
|
||||||
(defn set-last-time-profile-exported [export-time]
|
(defn set-last-time-profile-exported [export-time]
|
||||||
(let [event-context (:event-context @ui-context)]
|
(set-config [:export-user-profile :last-time-exported] export-time))
|
||||||
(swap! event-context
|
|
||||||
assoc-in
|
|
||||||
[:user-configuration :export-user-profile :last-time-exported]
|
|
||||||
export-time)))
|
|
||||||
|
|
||||||
(defn should-import-metadata? [now-in-seconds]
|
(defn should-import-metadata? [now-in-seconds]
|
||||||
(let [user-configuration (get-event-state :user-configuration)
|
(let [iad (get-config [:import-metadata :import-after-days])
|
||||||
iad (get-in user-configuration [:import-metadata :import-after-days])
|
lti (get-config [:import-metadata :last-time-imported])]
|
||||||
lti (get-in user-configuration [:import-metadata :last-time-imported])]
|
|
||||||
(and (number? iad)
|
(and (number? iad)
|
||||||
(>= now-in-seconds (+ lti (* 86400 iad))))))
|
(>= now-in-seconds (+ lti (* 86400 iad))))))
|
||||||
|
|
||||||
(defn set-last-time-metadata-imported [import-time]
|
(defn set-last-time-metadata-imported [import-time]
|
||||||
(let [event-context (:event-context @ui-context)]
|
(set-config [:import-metadata :last-time-imported] import-time))
|
||||||
(swap! event-context
|
|
||||||
assoc-in
|
|
||||||
[:user-configuration :import-metadata :last-time-imported]
|
|
||||||
import-time)))
|
|
||||||
|
|
||||||
(defn get-default-font[]
|
(defn get-default-font []
|
||||||
(get (get-event-state :user-configuration) :default-font config/default-font))
|
(get-config :default-font config/default-font))
|
||||||
|
|
||||||
(defn get-bold-font []
|
(defn get-bold-font []
|
||||||
(get (get-event-state :user-configuration) :bold-font config/bold-font))
|
(get-config :bold-font config/bold-font))
|
||||||
|
|
||||||
(defn get-small-font []
|
(defn get-small-font []
|
||||||
(get (get-event-state :user-configuration) :small-font config/small-font))
|
(get-config :small-font config/small-font))
|
Loading…
Reference in New Issue
Block a user