fix: preserve reconnect across deferred workspace startup
This commit is contained in:
1 parent
0a4c9a0ae8
commit
377fd889c5
4 files changed
+36
-4
No files matched your search
@@ -7388,8 +7388,9 @@
|
||||
updateDeliveryReceiptControls();
|
||||
if (!navigator.onLine) await showOfflineStatus();
|
||||
window.addEventListener('offline', showOfflineStatus);
|
||||
window.addEventListener('online', reconnectOutboxes);
|
||||
workspaceLifecycle.replayOnline(reconnectOutboxes);
|
||||
const reconnectAfterOnline = () => setTimeout(reconnectOutboxes, 500);
|
||||
window.addEventListener('online', reconnectAfterOnline);
|
||||
workspaceLifecycle.replayOnline(reconnectAfterOnline);
|
||||
|
||||
qs('#refresh').addEventListener('click', load);
|
||||
qs('#plan-today').addEventListener('click', event => openPlanToday(event.currentTarget));
|
||||
|
||||
@@ -383,6 +383,17 @@ async function warmOptionalFeature(cache, staleCacheNames, asset) {
|
||||
await cache.add(asset);
|
||||
}
|
||||
|
||||
async function cachedOptionalFeature(request) {
|
||||
const cached = await caches.match(request);
|
||||
if (cached) return cached;
|
||||
const response = await fetch(request);
|
||||
if (response.ok) {
|
||||
const cache = await caches.open(CACHE);
|
||||
await cache.put(request, response.clone());
|
||||
}
|
||||
return response;
|
||||
}
|
||||
|
||||
self.addEventListener('activate', event => {
|
||||
event.waitUntil((async () => {
|
||||
const keys = await caches.keys();
|
||||
@@ -635,6 +646,6 @@ self.addEventListener('fetch', event => {
|
||||
return;
|
||||
}
|
||||
if (url.origin === self.location.origin && OPTIONAL_FEATURES.includes(url.pathname)) {
|
||||
event.respondWith(caches.match(request).then(cached => cached || fetch(request)));
|
||||
event.respondWith(cachedOptionalFeature(request));
|
||||
}
|
||||
});
|
||||
Reference in new issue
Block a user