Better file fetching and status

This commit is contained in:
2026-03-18 14:45:21 +01:00 Verified
parent 99ff2f94b4
commit d61f2af6d4
+13 -5
View File
@@ -42,6 +42,7 @@ export default function Documents() {
}
setCachedFiles(cached);
if (cached.size === docs.length) setSyncStatus('done');
else setSyncStatus('idle');
} catch (error) {
console.error("Cache check failed", error);
}
@@ -57,6 +58,12 @@ export default function Documents() {
checkCacheStatus();
const handleVisibility = () => {
if (document.visibilityState === 'visible') checkCacheStatus();
};
document.addEventListener('visibilitychange', handleVisibility);
window.addEventListener('focus', checkCacheStatus);
const conn = (navigator as any).connection;
if (conn && (conn.type === 'wifi' || conn.type === 'ethernet') && !conn.saveData) {
handleSyncAll();
@@ -65,6 +72,8 @@ export default function Documents() {
return () => {
window.removeEventListener('online', handleStatus);
window.removeEventListener('offline', handleStatus);
document.removeEventListener('visibilitychange', handleVisibility);
window.removeEventListener('focus', checkCacheStatus);
};
}, []);
@@ -73,9 +82,11 @@ export default function Documents() {
const updatedCache = new Set(cachedFiles);
for (const doc of docs) {
if (!updatedCache.has(doc.file)) {
try {
const response = await fetch(doc.file);
if (response.ok) {
await response.blob();
updatedCache.add(doc.file);
setCachedFiles(new Set(updatedCache));
}
@@ -83,15 +94,12 @@ export default function Documents() {
console.error("Kunde inte ladda ner:", doc.file);
}
}
}
setTimeout(async () => {
await checkCacheStatus();
setSyncStatus('done');
setShowNotification(true);
setTimeout(() => {
setShowNotification(false);
}, 4000);
}, 500);
setTimeout(() => setShowNotification(false), 4000);
};
if (!isHydrated) return <div className="flex justify-center py-20"><Loader2 className="animate-spin text-slate-teal" size={40} /></div>;