summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xsrc/feed.clj9
-rw-r--r--src/rooms.clj9
-rw-r--r--src/site.clj4
3 files changed, 12 insertions, 10 deletions
diff --git a/src/feed.clj b/src/feed.clj
index 43ad077..3a3cc35 100755
--- a/src/feed.clj
+++ b/src/feed.clj
@@ -90,13 +90,10 @@ WHERE NOT EXISTS (SELECT 1
filtered-good (filter-posted-images good room-id)]
(doseq [img filtered-good]
(println (format "Inserting %s into %s from %s" img room-key feed))
- (let [msg-id (insert-feed-image-to-db! room-id feed img bot-id)
- msg {:msg_id msg-id
- :nick bot-nick
- :created_on (new Date)
- :content img}]
+ (let [msg-id (insert-feed-image-to-db! room-id feed img bot-id)]
(dosync
- (add-message msg (lookup-room room-key)))))))
+ (add-message (build-msg bot-nick img msg-id)
+ (lookup-room room-key)))))))
(defn process-all-feeds! []
(doseq [f (shuffle (read-feeds))]
diff --git a/src/rooms.clj b/src/rooms.clj
index e18a434..09b81ba 100644
--- a/src/rooms.clj
+++ b/src/rooms.clj
@@ -1,7 +1,10 @@
(ns rooms
+ (:import java.util.Date)
(:use clojure.contrib.str-utils
utils))
+(defstruct message-struct :nick :content :created_on :msg_id)
+
(def *run-flusher* true)
(def *flusher-sleep* (seconds 4))
(def *user-timeout* (seconds 15))
@@ -81,6 +84,12 @@
(defn login-user [user room]
(alter (room :users) assoc (user :nick) user))
+; Note: To ensure that the msg's timestamp is consistent
+; with other msg creations, build-msg should be called
+; from within a dosync.
+(defn build-msg [nick content msg-id]
+ (struct message-struct nick content (new Date) msg-id))
+
(defn add-message [msg room]
(alter (room :messages) (swap cons) msg))
diff --git a/src/site.clj b/src/site.clj
index 2197dd5..45ee9e5 100644
--- a/src/site.clj
+++ b/src/site.clj
@@ -25,7 +25,6 @@
user))
(defstruct user-struct :nick :user_id :avatar :last-seen)
-(defstruct message-struct :nick :content :created_on :msg_id)
(defn user-struct-from-session [session]
(struct user-struct (session :nick) (session :user_id) (session :avatar)
@@ -584,9 +583,6 @@ FROM users u
((first (do-select [qry user-id room-id content is-image]))
:message_id))))
-(defn build-msg [nick content msg-id]
- (struct message-struct nick content (new Date) msg-id))
-
(defn msg [session params]
(let [user-id (session :user_id)
mute ((poll *active-mutes*) user-id)