git » sdk » commit 4267120

Poll for media instead of erroring

author Stephen Paul Weber
2024-11-07 04:43:16 UTC
committer Stephen Paul Weber
2024-11-07 04:43:16 UTC
parent 2b4786801048e35b3a51c97cc273d3b13b3133a3

Poll for media instead of erroring

Makes img tags wait for the media to be available.

snikket/persistence/browser.js +8 -4

diff --git a/snikket/persistence/browser.js b/snikket/persistence/browser.js
index dbf4689..a751032 100644
--- a/snikket/persistence/browser.js
+++ b/snikket/persistence/browser.js
@@ -499,13 +499,17 @@ const browser = (dbname, tokenize, stemmer) => {
 		},
 
 		routeHashPathSW: function() {
+			const waitForMedia = async (uri) => {
+				const r = await this.getMediaResponse(uri);
+				if (r) return r;
+				await new Promise(resolve => setTimeout(resolve, 5000));
+				return await waitForMedia(uri);
+			};
+
 			addEventListener("fetch", (event) => {
 				const url = new URL(event.request.url);
 				if (url.pathname.startsWith("/.well-known/ni/")) {
-					event.respondWith(this.getMediaResponse(url.pathname).then((r) => {
-						if (r) return r;
-						return Response.error();
-					}));
+					event.respondWith(waitForMedia(url.pathname));
 				}
 			});
 		},