summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsostler <sbostler@gmail.com>2010-04-25 11:46:37 -0400
committersostler <sbostler@gmail.com>2010-04-25 11:46:37 -0400
commitfd2766f7112856df57c68f9d32a2c92b108fdcb8 (patch)
tree393a2d497365f5cf887e77ff1148996169052909
parentb9529fed21e0d4594dcb7aaa165247514ffbd4eb (diff)
Added version numbers to chat api
-rw-r--r--src/site.clj15
-rw-r--r--static/js/pichat.js4
-rw-r--r--template/browser.st80
-rw-r--r--template/chat.st1
4 files changed, 60 insertions, 40 deletions
diff --git a/src/site.clj b/src/site.clj
index ec58e46..cc30d61 100644
--- a/src/site.clj
+++ b/src/site.clj
@@ -542,6 +542,18 @@
;; Chat
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; Chat format version history
+;
+; v0: Keys: users, messages, timestamp
+; Date: Mists of dump antiquity
+;
+; v1: Keys: users, messages, timestamp, v
+; Date: 2010/04/25
+; Note: Incorporates explicit version
+
+(def *chat-version-number* 1)
+
(defn validate-room-access [room-key session]
(let [room (lookup-room room-key)]
(and room
@@ -566,6 +578,7 @@
(.setAttribute st "isadminroom" (room :admin_only))
(.setAttribute st "json_room_key" (json-str (room :key)))
(.setAttribute st "json_user_nick" (if nick (json-str nick) "null"))
+ (.setAttribute st "version" *chat-version-number*)
(.setAttribute st "roomname" (room :name))
(.setAttribute st "timestamp" now)
(.toString st)))
@@ -587,7 +600,7 @@
(commute users assoc nick (merge user-info {:last-seen now
:avatar (session :avatar)}))
(commute (room :users) assoc nick (user-struct-from-session session))))
- (resp-success (assoc (updates room since) :timestamp now)))))
+ (resp-success (assoc (updates room since) :timestamp now :v *chat-version-number*)))))
(defn validated-refresh [session params]
(let [room-key (params :room)
diff --git a/static/js/pichat.js b/static/js/pichat.js
index 6279e48..db49bb1 100644
--- a/static/js/pichat.js
+++ b/static/js/pichat.js
@@ -352,6 +352,10 @@ function updateTopic(newTopic) {
function refresh() {
var onSuccess = function(json) {
try {
+ if (Version != json.v) {
+ location.reload();
+ }
+
Timestamp = json.timestamp;
$.map(json.messages, function(msg){ MessageContentCache[msg.msg_id.toString()] = msg.content })
diff --git a/template/browser.st b/template/browser.st
index 8cb6403..4ebcd1b 100644
--- a/template/browser.st
+++ b/template/browser.st
@@ -3,38 +3,40 @@
<title>dump.fm | Image Search Beta</title>
$head()$
<link rel="stylesheet" type="text/css" href="/static/css/browser.css">
- <script type="text/javascript" src="/static/gritter/js/jquery.gritter.js"></script>
- <link rel="stylesheet" type="text/css" href="/static/gritter/css/jquery.gritter.css" />
-
-
+ <script type="text/javascript" src="/static/gritter/js/jquery.gritter.js"></script>
+ <link rel="stylesheet" type="text/css" href="/static/gritter/css/jquery.gritter.css" />
<script>
- jQuery(document).ready(initChat);
- var Nick = $json_user_nick$;
- var Room = $json_room_key$;
- var Timestamp = $timestamp$;
- var PostedMessages = [];
- var IsAdmin = "$isadmin$";
+ jQuery(document).ready(initChat);
+ var Nick = $json_user_nick$;
+ var Room = $json_room_key$;
+ var Timestamp = $timestamp$;
+ var Version = $version$;
+$if(isadmin)$
+ var IsAdmin = true;
+$else$
+ var IsAdmin = false;
+$endif$
var growlize = true;
</script>
<style>
iframe {
- z-index: 50000;
- position: fixed;
- top: 300px;
- right: 25px;
+ z-index: 50000;
+ position: fixed;
+ top: 300px;
+ right: 25px;
- width:100%;
- height:100%;
- padding:0px;
- background-color: #fff;
- position:absolute;
- top:0px; left:0px;
- border:none;
+ width:100%;
+ height:100%;
+ padding:0px;
+ background-color: #fff;
+ position:absolute;
+ top:0px; left:0px;
+ border:none;
}
</style>
-
+
</head>
<body>
$banner()$
@@ -46,26 +48,26 @@
<div id="loghead"></div>
</div>
- </div>
- <div id="messagePane">
- <div id="messageList">
- <iframe src="/static/search/browser.html" allowtransparency="true" scrolling="auto" ></iframe>
- </div>
-
+ </div>
+ <div id="messagePane">
+ <div id="messageList">
+ <iframe src="/static/search/browser.html" allowtransparency="true" scrolling="auto" ></iframe>
</div>
- </div>
- </div>
+
+ </div>
+ </div>
</div>
</div>
</div>
-
- </div>
- <div id="footerc">
- <p>
- $footer()$</p>
- <p>
- </p>
- </div>
- </body>
+</div>
+
+</div>
+<div id="footerc">
+ <p>
+ $footer()$</p>
+ <p>
+ </p>
+</div>
+</body>
</html>
diff --git a/template/chat.st b/template/chat.st
index 239f5b9..8c290b7 100644
--- a/template/chat.st
+++ b/template/chat.st
@@ -18,6 +18,7 @@ $endif$
var Nick = $json_user_nick$;
var Room = $json_room_key$;
var Timestamp = $timestamp$;
+ var Version = $version$;
$if(isadmin)$
var IsAdmin = true;
$else$