Mercurial Hosting > chat
comparison src/chat.js @ 30:f4708943f29e
add heartbeat
| author | Franklin Schmidt <fschmidt@gmail.com> |
|---|---|
| date | Sat, 09 Nov 2024 19:17:21 -0700 |
| parents | 809193524522 |
| children | a0820965ba04 |
comparison
equal
deleted
inserted
replaced
| 29:5beadcd541aa | 30:f4708943f29e |
|---|---|
| 1 'use strict'; | 1 'use strict'; |
| 2 | 2 |
| 3 let title = document.title; | 3 let title = document.title; |
| 4 let currentChatId = null; | 4 let currentChatId = null; |
| 5 let eventSource; | 5 let eventSource; |
| 6 let lastUpdate; | |
| 6 | 7 |
| 7 function evalEvent(event) { | 8 function evalEvent(event) { |
| 8 // console.log(event); | 9 // console.log(event); |
| 9 eval(event.data); | 10 eval(event.data); |
| 10 } | 11 } |
| 141 input.scrollIntoView({block: 'end'}); | 142 input.scrollIntoView({block: 'end'}); |
| 142 if( !document.hasFocus() ) | 143 if( !document.hasFocus() ) |
| 143 document.title = title + ' *'; | 144 document.title = title + ' *'; |
| 144 } | 145 } |
| 145 | 146 |
| 146 function getChats(chatId) { | 147 function getChats(chatId,updated) { |
| 147 let first = document.querySelector('div[chat]'); | 148 let first = document.querySelector('div[chat]'); |
| 148 if( !first || first.getAttribute('chat') != chatId ) { | 149 if( !first || first.getAttribute('chat') != chatId ) { |
| 149 // console.log('getChats'); | 150 // console.log('getChats'); |
| 150 ajax('get_chats.js'); | 151 ajax('get_chats.js'); |
| 151 } | 152 } |
| 153 if( updated ) | |
| 154 lastUpdate = updated; | |
| 152 } | 155 } |
| 153 | 156 |
| 154 function gotChats(html) { | 157 function gotChats(html) { |
| 155 document.querySelector('div[chats]').innerHTML = html; | 158 document.querySelector('div[chats]').innerHTML = html; |
| 156 if( currentChatId ) { | 159 if( currentChatId ) { |
| 195 newPulldown = null; | 198 newPulldown = null; |
| 196 }; | 199 }; |
| 197 pulldown.scrollIntoViewIfNeeded(false); | 200 pulldown.scrollIntoViewIfNeeded(false); |
| 198 } | 201 } |
| 199 } | 202 } |
| 203 | |
| 204 setInterval(function(){ | |
| 205 ajax(`heartbeat.js?last_update=${lastUpdate}`); | |
| 206 }, 60000 ); | |
| 207 | |
| 208 function resync(updated) { | |
| 209 lastUpdate = updated; | |
| 210 currentChatId = null; | |
| 211 document.querySelector('div[posts]').innerHTML = ''; | |
| 212 ajax('get_chats.js'); | |
| 213 } |
