Mercurial > cosocket
annotate openwebchat.js @ 62:b7b9932823e4
We now store conversations in local/globalStorage.
author | Atul Varma <varmaa@toolness.com> |
---|---|
date | Wed, 29 Apr 2009 06:15:32 -0700 |
parents | c1b46b60e838 |
children | 559c48a58254 |
rev | line source |
---|---|
33
8146a59c8045
Added basic 'chat' functionality.
Atul Varma <varmaa@toolness.com>
parents:
26
diff
changeset
|
1 var OpenWebChat = { |
62
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
2 ClientStorage: function ClientStorage(localStorage, prefix) { |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
3 var self = this; |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
4 if (!localStorage[prefix + 'length']) |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
5 localStorage[prefix + 'length'] = '0'; |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
6 |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
7 self.length = Number(localStorage[prefix + 'length'].value); |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
8 |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
9 self.get = function get(id) { |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
10 return JSON.parse(localStorage[prefix + id].value); |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
11 }; |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
12 |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
13 self.append = function append(msg) { |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
14 localStorage[prefix + self.length] = JSON.stringify(msg); |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
15 self.length += 1; |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
16 localStorage[prefix + 'length'] = self.length.toString(); |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
17 }; |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
18 |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
19 self.wipe = function wipe() { |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
20 var names = []; |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
21 for (name in localStorage) |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
22 names.push(name); |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
23 names.forEach( |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
24 function(name) { |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
25 if (name.indexOf(prefix) == 0) |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
26 delete localStorage[name]; |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
27 }); |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
28 }; |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
29 }, |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
30 |
45
27785e0ac4d8
Added error detection on the client-side.
Atul Varma <varmaa@toolness.com>
parents:
44
diff
changeset
|
31 startMessageListener: function startMessageListener(options) { |
33
8146a59c8045
Added basic 'chat' functionality.
Atul Varma <varmaa@toolness.com>
parents:
26
diff
changeset
|
32 var req = new XMLHttpRequest(); |
8146a59c8045
Added basic 'chat' functionality.
Atul Varma <varmaa@toolness.com>
parents:
26
diff
changeset
|
33 req.multipart = true; |
62
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
34 req.open('GET', |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
35 'listen/multipart?start=' + options.storage.length, |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
36 true); |
34 | 37 req.overrideMimeType('application/json'); |
33
8146a59c8045
Added basic 'chat' functionality.
Atul Varma <varmaa@toolness.com>
parents:
26
diff
changeset
|
38 req.addEventListener( |
45
27785e0ac4d8
Added error detection on the client-side.
Atul Varma <varmaa@toolness.com>
parents:
44
diff
changeset
|
39 "error", |
27785e0ac4d8
Added error detection on the client-side.
Atul Varma <varmaa@toolness.com>
parents:
44
diff
changeset
|
40 function() { |
27785e0ac4d8
Added error detection on the client-side.
Atul Varma <varmaa@toolness.com>
parents:
44
diff
changeset
|
41 options.onError(null); |
27785e0ac4d8
Added error detection on the client-side.
Atul Varma <varmaa@toolness.com>
parents:
44
diff
changeset
|
42 }, |
27785e0ac4d8
Added error detection on the client-side.
Atul Varma <varmaa@toolness.com>
parents:
44
diff
changeset
|
43 false |
27785e0ac4d8
Added error detection on the client-side.
Atul Varma <varmaa@toolness.com>
parents:
44
diff
changeset
|
44 ); |
27785e0ac4d8
Added error detection on the client-side.
Atul Varma <varmaa@toolness.com>
parents:
44
diff
changeset
|
45 req.addEventListener( |
33
8146a59c8045
Added basic 'chat' functionality.
Atul Varma <varmaa@toolness.com>
parents:
26
diff
changeset
|
46 "load", |
8146a59c8045
Added basic 'chat' functionality.
Atul Varma <varmaa@toolness.com>
parents:
26
diff
changeset
|
47 function onload(evt) { |
45
27785e0ac4d8
Added error detection on the client-side.
Atul Varma <varmaa@toolness.com>
parents:
44
diff
changeset
|
48 var msg; |
27785e0ac4d8
Added error detection on the client-side.
Atul Varma <varmaa@toolness.com>
parents:
44
diff
changeset
|
49 var errorOccurred = false; |
27785e0ac4d8
Added error detection on the client-side.
Atul Varma <varmaa@toolness.com>
parents:
44
diff
changeset
|
50 try { |
27785e0ac4d8
Added error detection on the client-side.
Atul Varma <varmaa@toolness.com>
parents:
44
diff
changeset
|
51 msg = JSON.parse(req.responseText); |
27785e0ac4d8
Added error detection on the client-side.
Atul Varma <varmaa@toolness.com>
parents:
44
diff
changeset
|
52 } catch (e) { |
27785e0ac4d8
Added error detection on the client-side.
Atul Varma <varmaa@toolness.com>
parents:
44
diff
changeset
|
53 options.onError(e); |
27785e0ac4d8
Added error detection on the client-side.
Atul Varma <varmaa@toolness.com>
parents:
44
diff
changeset
|
54 errorOccurred = true; |
27785e0ac4d8
Added error detection on the client-side.
Atul Varma <varmaa@toolness.com>
parents:
44
diff
changeset
|
55 } |
62
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
56 if (!errorOccurred) { |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
57 options.storage.append(msg); |
45
27785e0ac4d8
Added error detection on the client-side.
Atul Varma <varmaa@toolness.com>
parents:
44
diff
changeset
|
58 options.onMessage(msg); |
62
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
59 } |
33
8146a59c8045
Added basic 'chat' functionality.
Atul Varma <varmaa@toolness.com>
parents:
26
diff
changeset
|
60 }, |
8146a59c8045
Added basic 'chat' functionality.
Atul Varma <varmaa@toolness.com>
parents:
26
diff
changeset
|
61 false |
8146a59c8045
Added basic 'chat' functionality.
Atul Varma <varmaa@toolness.com>
parents:
26
diff
changeset
|
62 ); |
8146a59c8045
Added basic 'chat' functionality.
Atul Varma <varmaa@toolness.com>
parents:
26
diff
changeset
|
63 req.send(null); |
8146a59c8045
Added basic 'chat' functionality.
Atul Varma <varmaa@toolness.com>
parents:
26
diff
changeset
|
64 }, |
8146a59c8045
Added basic 'chat' functionality.
Atul Varma <varmaa@toolness.com>
parents:
26
diff
changeset
|
65 |
53
67ec969d4f0d
If the sending of a message fails, the content is put back into the text field.
Atul Varma <varmaa@toolness.com>
parents:
52
diff
changeset
|
66 sendMessage: function sendMessage(options) { |
33
8146a59c8045
Added basic 'chat' functionality.
Atul Varma <varmaa@toolness.com>
parents:
26
diff
changeset
|
67 var req = new XMLHttpRequest(); |
8146a59c8045
Added basic 'chat' functionality.
Atul Varma <varmaa@toolness.com>
parents:
26
diff
changeset
|
68 req.open('POST', 'send', true); |
8146a59c8045
Added basic 'chat' functionality.
Atul Varma <varmaa@toolness.com>
parents:
26
diff
changeset
|
69 req.overrideMimeType('application/json'); |
53
67ec969d4f0d
If the sending of a message fails, the content is put back into the text field.
Atul Varma <varmaa@toolness.com>
parents:
52
diff
changeset
|
70 req.addEventListener( |
67ec969d4f0d
If the sending of a message fails, the content is put back into the text field.
Atul Varma <varmaa@toolness.com>
parents:
52
diff
changeset
|
71 "error", |
67ec969d4f0d
If the sending of a message fails, the content is put back into the text field.
Atul Varma <varmaa@toolness.com>
parents:
52
diff
changeset
|
72 function() { |
67ec969d4f0d
If the sending of a message fails, the content is put back into the text field.
Atul Varma <varmaa@toolness.com>
parents:
52
diff
changeset
|
73 options.onError(null); |
67ec969d4f0d
If the sending of a message fails, the content is put back into the text field.
Atul Varma <varmaa@toolness.com>
parents:
52
diff
changeset
|
74 }, |
67ec969d4f0d
If the sending of a message fails, the content is put back into the text field.
Atul Varma <varmaa@toolness.com>
parents:
52
diff
changeset
|
75 false |
67ec969d4f0d
If the sending of a message fails, the content is put back into the text field.
Atul Varma <varmaa@toolness.com>
parents:
52
diff
changeset
|
76 ); |
67ec969d4f0d
If the sending of a message fails, the content is put back into the text field.
Atul Varma <varmaa@toolness.com>
parents:
52
diff
changeset
|
77 req.send(JSON.stringify(options.message)); |
33
8146a59c8045
Added basic 'chat' functionality.
Atul Varma <varmaa@toolness.com>
parents:
26
diff
changeset
|
78 } |
8146a59c8045
Added basic 'chat' functionality.
Atul Varma <varmaa@toolness.com>
parents:
26
diff
changeset
|
79 }; |
8146a59c8045
Added basic 'chat' functionality.
Atul Varma <varmaa@toolness.com>
parents:
26
diff
changeset
|
80 |
26 | 81 $(window).ready( |
82 function() { | |
33
8146a59c8045
Added basic 'chat' functionality.
Atul Varma <varmaa@toolness.com>
parents:
26
diff
changeset
|
83 var ENTER_KEYCODE = 13; |
49
4e21d301ea27
Added a cap on the max num of messages that can be animating at once, so that browsers don't get overloaded.
Atul Varma <varmaa@toolness.com>
parents:
48
diff
changeset
|
84 var MAX_ANIMATING_MESSAGES = 3; |
4e21d301ea27
Added a cap on the max num of messages that can be animating at once, so that browsers don't get overloaded.
Atul Varma <varmaa@toolness.com>
parents:
48
diff
changeset
|
85 |
4e21d301ea27
Added a cap on the max num of messages that can be animating at once, so that browsers don't get overloaded.
Atul Varma <varmaa@toolness.com>
parents:
48
diff
changeset
|
86 var animatingMessages = 0; |
33
8146a59c8045
Added basic 'chat' functionality.
Atul Varma <varmaa@toolness.com>
parents:
26
diff
changeset
|
87 |
50
f78b986ecb6e
OWC now remembers your name.
Atul Varma <varmaa@toolness.com>
parents:
49
diff
changeset
|
88 var localStorage = globalStorage[document.location.hostname]; |
62
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
89 |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
90 var convStorage = new OpenWebChat.ClientStorage( |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
91 localStorage, |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
92 '/conv' + document.location.pathname |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
93 ); |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
94 |
50
f78b986ecb6e
OWC now remembers your name.
Atul Varma <varmaa@toolness.com>
parents:
49
diff
changeset
|
95 if (!localStorage.name) |
f78b986ecb6e
OWC now remembers your name.
Atul Varma <varmaa@toolness.com>
parents:
49
diff
changeset
|
96 localStorage.name = "A Mysterious Stranger"; |
f78b986ecb6e
OWC now remembers your name.
Atul Varma <varmaa@toolness.com>
parents:
49
diff
changeset
|
97 |
52
3071f85fb694
Last-message content is now saved if the user loses their connection, etc.
Atul Varma <varmaa@toolness.com>
parents:
50
diff
changeset
|
98 if (!localStorage.lastMessage) |
3071f85fb694
Last-message content is now saved if the user loses their connection, etc.
Atul Varma <varmaa@toolness.com>
parents:
50
diff
changeset
|
99 localStorage.lastMessage = ""; |
3071f85fb694
Last-message content is now saved if the user loses their connection, etc.
Atul Varma <varmaa@toolness.com>
parents:
50
diff
changeset
|
100 |
50
f78b986ecb6e
OWC now remembers your name.
Atul Varma <varmaa@toolness.com>
parents:
49
diff
changeset
|
101 $('#name').val(localStorage.name.value); |
f78b986ecb6e
OWC now remembers your name.
Atul Varma <varmaa@toolness.com>
parents:
49
diff
changeset
|
102 $('#name').blur( |
f78b986ecb6e
OWC now remembers your name.
Atul Varma <varmaa@toolness.com>
parents:
49
diff
changeset
|
103 function() { |
52
3071f85fb694
Last-message content is now saved if the user loses their connection, etc.
Atul Varma <varmaa@toolness.com>
parents:
50
diff
changeset
|
104 localStorage.name = $(this).val(); |
3071f85fb694
Last-message content is now saved if the user loses their connection, etc.
Atul Varma <varmaa@toolness.com>
parents:
50
diff
changeset
|
105 }); |
3071f85fb694
Last-message content is now saved if the user loses their connection, etc.
Atul Varma <varmaa@toolness.com>
parents:
50
diff
changeset
|
106 |
3071f85fb694
Last-message content is now saved if the user loses their connection, etc.
Atul Varma <varmaa@toolness.com>
parents:
50
diff
changeset
|
107 $('#outgoing-message').val(localStorage.lastMessage.value); |
3071f85fb694
Last-message content is now saved if the user loses their connection, etc.
Atul Varma <varmaa@toolness.com>
parents:
50
diff
changeset
|
108 $('#outgoing-message').blur( |
3071f85fb694
Last-message content is now saved if the user loses their connection, etc.
Atul Varma <varmaa@toolness.com>
parents:
50
diff
changeset
|
109 function() { |
3071f85fb694
Last-message content is now saved if the user loses their connection, etc.
Atul Varma <varmaa@toolness.com>
parents:
50
diff
changeset
|
110 if ($(this).val()) |
3071f85fb694
Last-message content is now saved if the user loses their connection, etc.
Atul Varma <varmaa@toolness.com>
parents:
50
diff
changeset
|
111 localStorage.lastMessage = $(this).val(); |
50
f78b986ecb6e
OWC now remembers your name.
Atul Varma <varmaa@toolness.com>
parents:
49
diff
changeset
|
112 }); |
f78b986ecb6e
OWC now remembers your name.
Atul Varma <varmaa@toolness.com>
parents:
49
diff
changeset
|
113 |
34 | 114 $('#outgoing-message').focus(); |
115 | |
33
8146a59c8045
Added basic 'chat' functionality.
Atul Varma <varmaa@toolness.com>
parents:
26
diff
changeset
|
116 $('#outgoing-message').keydown( |
8146a59c8045
Added basic 'chat' functionality.
Atul Varma <varmaa@toolness.com>
parents:
26
diff
changeset
|
117 function(evt) { |
53
67ec969d4f0d
If the sending of a message fails, the content is put back into the text field.
Atul Varma <varmaa@toolness.com>
parents:
52
diff
changeset
|
118 var self = this; |
39 | 119 var content = $(this).val(); |
120 var author = $('#name').val(); | |
33
8146a59c8045
Added basic 'chat' functionality.
Atul Varma <varmaa@toolness.com>
parents:
26
diff
changeset
|
121 if (evt.keyCode == ENTER_KEYCODE) { |
39 | 122 if (content) { |
52
3071f85fb694
Last-message content is now saved if the user loses their connection, etc.
Atul Varma <varmaa@toolness.com>
parents:
50
diff
changeset
|
123 localStorage.lastMessage = content; |
33
8146a59c8045
Added basic 'chat' functionality.
Atul Varma <varmaa@toolness.com>
parents:
26
diff
changeset
|
124 $(this).val(''); |
40
11c4fb8bec3c
Added timestamp to messages, though they're not currently displayed in any way.
Atul Varma <varmaa@toolness.com>
parents:
39
diff
changeset
|
125 var msg = {content: content, |
11c4fb8bec3c
Added timestamp to messages, though they're not currently displayed in any way.
Atul Varma <varmaa@toolness.com>
parents:
39
diff
changeset
|
126 time: new Date()}; |
39 | 127 if (author) |
128 msg.author = author; | |
53
67ec969d4f0d
If the sending of a message fails, the content is put back into the text field.
Atul Varma <varmaa@toolness.com>
parents:
52
diff
changeset
|
129 OpenWebChat.sendMessage( |
67ec969d4f0d
If the sending of a message fails, the content is put back into the text field.
Atul Varma <varmaa@toolness.com>
parents:
52
diff
changeset
|
130 {message: msg, |
67ec969d4f0d
If the sending of a message fails, the content is put back into the text field.
Atul Varma <varmaa@toolness.com>
parents:
52
diff
changeset
|
131 onError: function(exception) { |
67ec969d4f0d
If the sending of a message fails, the content is put back into the text field.
Atul Varma <varmaa@toolness.com>
parents:
52
diff
changeset
|
132 $(self).val(content); |
67ec969d4f0d
If the sending of a message fails, the content is put back into the text field.
Atul Varma <varmaa@toolness.com>
parents:
52
diff
changeset
|
133 } |
67ec969d4f0d
If the sending of a message fails, the content is put back into the text field.
Atul Varma <varmaa@toolness.com>
parents:
52
diff
changeset
|
134 }); |
33
8146a59c8045
Added basic 'chat' functionality.
Atul Varma <varmaa@toolness.com>
parents:
26
diff
changeset
|
135 } |
8146a59c8045
Added basic 'chat' functionality.
Atul Varma <varmaa@toolness.com>
parents:
26
diff
changeset
|
136 evt.preventDefault(); |
8146a59c8045
Added basic 'chat' functionality.
Atul Varma <varmaa@toolness.com>
parents:
26
diff
changeset
|
137 } |
8146a59c8045
Added basic 'chat' functionality.
Atul Varma <varmaa@toolness.com>
parents:
26
diff
changeset
|
138 }); |
8146a59c8045
Added basic 'chat' functionality.
Atul Varma <varmaa@toolness.com>
parents:
26
diff
changeset
|
139 |
62
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
140 function onMessage(msg) { |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
141 var block = $('#templates .message').clone(); |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
142 |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
143 if (localStorage.lastMessage.value == msg.content) |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
144 localStorage.lastMessage = ""; |
38
5fea1533e8ff
Added dynamic detection of HTML.
Atul Varma <varmaa@toolness.com>
parents:
34
diff
changeset
|
145 |
62
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
146 $('.content', block).html(msg.content); |
52
3071f85fb694
Last-message content is now saved if the user loses their connection, etc.
Atul Varma <varmaa@toolness.com>
parents:
50
diff
changeset
|
147 |
62
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
148 var author = msg.author ? msg.author : 'Anonymous'; |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
149 if (author != $('#content .author:last').text()) |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
150 $('.author', block).text(author); |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
151 else |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
152 $('.author', block).remove(); |
39 | 153 |
62
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
154 $('.timestamp', block).text(msg.time); |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
155 |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
156 block.hide(); |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
157 $('#incoming-messages').append(block); |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
158 |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
159 if (animatingMessages < MAX_ANIMATING_MESSAGES) { |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
160 animatingMessages += 1; |
45
27785e0ac4d8
Added error detection on the client-side.
Atul Varma <varmaa@toolness.com>
parents:
44
diff
changeset
|
161 |
62
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
162 block.slideDown( |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
163 function() { |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
164 animatingMessages -= 1; |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
165 window.scrollTo(0, $('#bottom').position().top); |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
166 }); |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
167 } else |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
168 block.show(); |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
169 } |
49
4e21d301ea27
Added a cap on the max num of messages that can be animating at once, so that browsers don't get overloaded.
Atul Varma <varmaa@toolness.com>
parents:
48
diff
changeset
|
170 |
62
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
171 var currStoredMessage = 0; |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
172 var CHUNK_SIZE = 20; |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
173 var UI_BREATHE_TIME = 10; |
49
4e21d301ea27
Added a cap on the max num of messages that can be animating at once, so that browsers don't get overloaded.
Atul Varma <varmaa@toolness.com>
parents:
48
diff
changeset
|
174 |
62
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
175 function showStoredConversation() { |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
176 if (currStoredMessage < convStorage.length) { |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
177 var i = 0; |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
178 while (i < CHUNK_SIZE && currStoredMessage < convStorage.length) { |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
179 onMessage(convStorage.get(currStoredMessage)); |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
180 currStoredMessage += 1; |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
181 i += 1; |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
182 } |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
183 window.setTimeout(showStoredConversation, UI_BREATHE_TIME); |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
184 } else |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
185 OpenWebChat.startMessageListener( |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
186 {storage: convStorage, |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
187 onMessage: onMessage, |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
188 onError: function onError(exception) { |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
189 if (window.console) |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
190 window.console.log('The error', exception, 'occurred.'); |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
191 var error = $('#templates .error').clone(); |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
192 error.hide(); |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
193 $('#incoming-messages').append(error); |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
194 error.slideDown(); |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
195 } |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
196 }); |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
197 } |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
198 |
b7b9932823e4
We now store conversations in local/globalStorage.
Atul Varma <varmaa@toolness.com>
parents:
61
diff
changeset
|
199 showStoredConversation(); |
33
8146a59c8045
Added basic 'chat' functionality.
Atul Varma <varmaa@toolness.com>
parents:
26
diff
changeset
|
200 }); |