check service work update on reload & init room

This commit is contained in:
2022-08-24 00:10:52 +08:00
parent 7b3eb9fbec
commit e1f3fafd58
7 changed files with 40 additions and 33 deletions

View File

@@ -11,6 +11,7 @@ import {
split_text,
} from './text_splitter';
import renderMd from './Markdown';
import { cache } from './cache';
export { format_time, Time, TitleLine };
@@ -488,3 +489,25 @@ export class ClickHandler extends PureComponent {
);
}
}
export function check_service_work_update(update_now = false) {
if ('serviceWorker' in navigator) {
navigator.serviceWorker.ready.then((serviceWorker) => {
const waitingServiceWorker = serviceWorker.waiting;
if (
waitingServiceWorker &&
(update_now || window.confirm('发现新版本,是否立即使用并刷新?'))
) {
cache().clear();
waitingServiceWorker.addEventListener('statechange', (event) => {
if (event.target.state === 'activated') {
window.location.reload();
}
});
waitingServiceWorker.postMessage({ type: 'SKIP_WAITING' });
} else {
if (update_now) alert('没有已下载的更新');
}
});
}
}