fix: harden offline fallback and track visitable pages
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 1m36s
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 1m36s
This commit is contained in:
@@ -36,6 +36,7 @@ interface CacheStats {
|
||||
images: { size: number; entries: number };
|
||||
books: { size: number; entries: number };
|
||||
total: number;
|
||||
visitablePages: number;
|
||||
}
|
||||
|
||||
interface CacheEntry {
|
||||
@@ -376,6 +377,9 @@ export function CacheSettings() {
|
||||
<p className="text-xs text-muted-foreground text-right">
|
||||
{t("settings.cache.imagesQuota", { used: Math.round(usagePercent) })}
|
||||
</p>
|
||||
<p className="text-xs text-muted-foreground">
|
||||
{t("settings.cache.visitablePages", { count: stats.visitablePages })}
|
||||
</p>
|
||||
</div>
|
||||
)}
|
||||
|
||||
|
||||
@@ -17,6 +17,7 @@ interface CacheStats {
|
||||
images: { size: number; entries: number };
|
||||
books: { size: number; entries: number };
|
||||
total: number;
|
||||
visitablePages: number;
|
||||
}
|
||||
|
||||
interface CacheEntry {
|
||||
@@ -112,7 +113,12 @@ export function ServiceWorkerProvider({ children }: { children: ReactNode }) {
|
||||
case "CACHE_STATS":
|
||||
const statsResolver = pendingRequests.current.get("CACHE_STATS");
|
||||
if (statsResolver) {
|
||||
statsResolver(payload);
|
||||
const normalizedPayload = {
|
||||
...payload,
|
||||
visitablePages:
|
||||
typeof payload?.visitablePages === "number" ? payload.visitablePages : 0,
|
||||
};
|
||||
statsResolver(normalizedPayload);
|
||||
pendingRequests.current.delete("CACHE_STATS");
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -144,10 +144,11 @@
|
||||
"initializing": "Initializing...",
|
||||
"totalStorage": "Total storage",
|
||||
"imagesQuota": "{used}% of images quota used",
|
||||
"visitablePages": "{count} pages available offline",
|
||||
"static": "Static resources",
|
||||
"staticDesc": "Next.js scripts, styles and assets",
|
||||
"pages": "Visited pages",
|
||||
"pagesDesc": "Home, libraries, series and details",
|
||||
"pagesDesc": "Pages and navigation data available offline",
|
||||
"api": "API data",
|
||||
"apiDesc": "Series, books and library metadata",
|
||||
"images": "Images",
|
||||
|
||||
@@ -144,10 +144,11 @@
|
||||
"initializing": "Initialisation...",
|
||||
"totalStorage": "Stockage total",
|
||||
"imagesQuota": "{used}% du quota images utilisé",
|
||||
"visitablePages": "{count} pages visitables hors ligne",
|
||||
"static": "Ressources statiques",
|
||||
"staticDesc": "Scripts, styles et assets Next.js",
|
||||
"pages": "Pages visitées",
|
||||
"pagesDesc": "Home, bibliothèques, séries et détails",
|
||||
"pagesDesc": "Pages et données de navigation disponibles hors ligne",
|
||||
"api": "Données API",
|
||||
"apiDesc": "Métadonnées des séries, livres et bibliothèques",
|
||||
"images": "Images",
|
||||
|
||||
Reference in New Issue
Block a user