generated from Dicken/dickendock
round71: Abfrage-Cache in localStorage gespiegelt - kein leerer Ladezustand mehr bei echtem Seiten-Reload
This commit is contained in:
@@ -16,7 +16,9 @@
|
||||
"@fortawesome/react-fontawesome": "^3.5.0",
|
||||
"@launchpad/shared": "workspace:*",
|
||||
"@launchpad/ui": "workspace:*",
|
||||
"@tanstack/react-query": "^5.51.23",
|
||||
"@tanstack/react-query": "5.101.2",
|
||||
"@tanstack/query-sync-storage-persister": "5.101.2",
|
||||
"@tanstack/react-query-persist-client": "5.101.2",
|
||||
"@tanstack/react-router": "^1.58.3",
|
||||
"react": "^18.3.1",
|
||||
"react-dom": "^18.3.1"
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
import React from "react";
|
||||
import ReactDOM from "react-dom/client";
|
||||
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
|
||||
import { QueryClient } from "@tanstack/react-query";
|
||||
import { PersistQueryClientProvider } from "@tanstack/react-query-persist-client";
|
||||
import { createSyncStoragePersister } from "@tanstack/query-sync-storage-persister";
|
||||
import { RouterProvider } from "@tanstack/react-router";
|
||||
import { router } from "./router.js";
|
||||
import "./index.css";
|
||||
@@ -31,10 +33,29 @@ const queryClient = new QueryClient({
|
||||
},
|
||||
});
|
||||
|
||||
// NEU: Ohne das hier verlor ein ECHTER Seiten-Reload (z. B. "Runterziehen
|
||||
// zum Aktualisieren" auf dem Handy) den kompletten Abfrage-Cache - alle
|
||||
// Daten (Dienste, Lesezeichen, Kategorien, "Zuletzt besucht", Einstellungen)
|
||||
// mussten neu vom Server geholt werden, bis dahin zeigte die Startseite
|
||||
// zwangsläufig einen leeren Lade-Platzhalter (siehe Bugreport-Screenshot).
|
||||
// Der Persister spiegelt den Cache zusätzlich in localStorage - beim
|
||||
// nächsten Laden wird SOFORT der zuletzt bekannte Stand angezeigt (keine
|
||||
// Lücke mehr), während im Hintergrund still neu geladen wird und die
|
||||
// Ansicht bei Abweichungen automatisch aktualisiert. maxAge begrenzt, wie
|
||||
// alt ein aus dem Speicher geladener Stand höchstens sein darf, bevor er
|
||||
// verworfen wird (dann normaler Ladevorgang wie bisher).
|
||||
const persister = createSyncStoragePersister({
|
||||
storage: window.localStorage,
|
||||
key: "launchpad-query-cache",
|
||||
});
|
||||
|
||||
ReactDOM.createRoot(document.getElementById("root")!).render(
|
||||
<React.StrictMode>
|
||||
<QueryClientProvider client={queryClient}>
|
||||
<PersistQueryClientProvider
|
||||
client={queryClient}
|
||||
persistOptions={{ persister, maxAge: 24 * 60 * 60 * 1000 }}
|
||||
>
|
||||
<RouterProvider router={router} />
|
||||
</QueryClientProvider>
|
||||
</PersistQueryClientProvider>
|
||||
</React.StrictMode>
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user