|
58 | 58 | var users;
|
59 | 59 | var firstId;
|
60 | 60 | var lastId;
|
| 61 | +var loop; |
61 | 62 |
|
62 | 63 | function is_scrolled_end() { // See http://stackoverflow.com/a/40370876/1422096
|
63 | 64 | return ((window.innerHeight + window.pageYOffset) >= document.body.offsetHeight);
|
|
117 | 118 | $('#notifications').hide();
|
118 | 119 | }
|
119 | 120 |
|
120 |
| - function disconnected_message () { |
121 |
| - $('#popup').text('Click anywhere or press any key to reload the page.').removeClass('hidden'); |
| 121 | + function popup_message (message, clicktoclosepopup, clicktoreload) { |
| 122 | + $('#popup').text(message).removeClass('hidden'); |
122 | 123 | $(':not(.popup)').addClass('opaque');
|
123 |
| - $(document).on('click keydown', function() { $(document).off('click keydown'); $(document).off('keydown'); ws.close(); ready(); }) |
| 124 | + if (clicktoclosepopup) |
| 125 | + $(document).on('click keydown', function() { $(document).off('click keydown'); $('#popup').addClass('hidden'); $(':not(#popup)').removeClass('opaque'); }); |
| 126 | + else if (clicktoreload) |
| 127 | + $(document).on('click keydown', function() { $(document).off('click keydown'); $(document).off('keydown'); ws.close(); ready(); }); |
124 | 128 | }
|
125 | 129 |
|
126 |
| - function usernamechanged_message () { |
127 |
| - $('#popup').text('Your username has been changed because the one you entered is reserved.').removeClass('hidden'); |
128 |
| - $(':not(.popup)').addClass('opaque'); |
129 |
| - $(document).on('click keydown', function() { $(document).off('click keydown'); $('#popup').addClass('hidden'); $(':not(#popup)').removeClass('opaque'); }) |
130 |
| - } |
131 |
| - |
132 | 130 | if (!window.WebSocket) {
|
133 | 131 | $('#popup').text('Your browser is not supported, please use another browser.').removeClass('hidden');
|
134 | 132 | $('#writing').prop('disabled', true);
|
|
164 | 162 | ws.onclose = function() {
|
165 | 163 | setTimeout(function() {
|
166 | 164 | if (ws.readyState != 0 && ws.readyState != 1)
|
167 |
| - disconnected_message(); |
| 165 | + popup_message('Click anywhere or press any key to reload the page.', false, true); |
168 | 166 | }, 2000);
|
169 | 167 | };
|
170 | 168 |
|
171 |
| - setInterval(function() { |
| 169 | + loop = setInterval(function() { |
172 | 170 | ws.send('ping');
|
173 | 171 | if (Date.now() - lastPong > 10000) { // disconnected from internet or phone idle mode; in both cases, ws.readyState can be 1 (OPEN) so we can't use that
|
174 | 172 | ws.send('ping'); // this is your last chance ! we send a packet now, and if in 1 second, nothings happen, this means we're dead
|
175 | 173 | setTimeout( function() {
|
176 | 174 | if (Date.now() - lastPong > 10000) // you missed your last chance !
|
177 |
| - disconnected_message(); // disconnected from internet |
| 175 | + popup_message('Click anywhere or press any key to reload the page.', false, true); // disconnected from internet |
178 | 176 | else // ok the phone was just idle, let's resume
|
179 | 177 | ws.send(JSON.stringify({ "type" : "username", "username" : $('#username').text() })); // let's send username again, so that other users see me
|
180 | 178 | }, 1000);
|
|
245 | 243 | else if (data['type'] === 'usernameunavailable') {
|
246 | 244 | $('#username').text(data['username']);
|
247 | 245 | localStorage.setItem("username", $('#username').text());
|
248 |
| - usernamechanged_message(); |
| 246 | + popup_message('Your username has been changed because the one you entered is reserved.', true, false); |
| 247 | + } |
| 248 | + else if (data['type'] === 'flood') { |
| 249 | + popup_message('Please do not flood this chat.', false, false); |
| 250 | + ws.onclose = undefined; |
| 251 | + clearInterval(loop); |
| 252 | + ws.close(); |
249 | 253 | }
|
250 | 254 | else if (data['type'] === 'displayeduser') {
|
251 | 255 | displayeduser = data['username'];
|
|
266 | 270 |
|
267 | 271 | $('#writing').keydown(function(e) {
|
268 | 272 | if (e.keyCode == 13 && !e.shiftKey) {
|
269 |
| - ws.send(JSON.stringify({ type: 'message', username: $('#username').text(), message: $('#writing').val().trim() })); |
| 273 | + if ($('#writing').val().trim() !== '') |
| 274 | + ws.send(JSON.stringify({ type: 'message', username: $('#username').text(), message: $('#writing').val().trim() })); |
270 | 275 | $('#writing').val('');
|
271 | 276 | e.preventDefault();
|
272 | 277 | }
|
|
0 commit comments