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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
10fcf63961d8 More misc. changes.
Atul Varma <varmaa@toolness.com>
parents: 33
diff changeset
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
4a4b66f5229b Added open web chat module.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
81 $(window).ready(
4a4b66f5229b Added open web chat module.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
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
10fcf63961d8 More misc. changes.
Atul Varma <varmaa@toolness.com>
parents: 33
diff changeset
114 $('#outgoing-message').focus();
10fcf63961d8 More misc. changes.
Atul Varma <varmaa@toolness.com>
parents: 33
diff changeset
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
882b75e96c17 Added name functionality.
Atul Varma <varmaa@toolness.com>
parents: 38
diff changeset
119 var content = $(this).val();
882b75e96c17 Added name functionality.
Atul Varma <varmaa@toolness.com>
parents: 38
diff changeset
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
882b75e96c17 Added name functionality.
Atul Varma <varmaa@toolness.com>
parents: 38
diff changeset
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
882b75e96c17 Added name functionality.
Atul Varma <varmaa@toolness.com>
parents: 38
diff changeset
127 if (author)
882b75e96c17 Added name functionality.
Atul Varma <varmaa@toolness.com>
parents: 38
diff changeset
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
882b75e96c17 Added name functionality.
Atul Varma <varmaa@toolness.com>
parents: 38
diff changeset
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 });