refactor: remove server-side data fetching for libraries and favorites in RootLayout, transitioning to client-side loading in Sidebar
This commit is contained in:
@@ -11,10 +11,6 @@ import "@/i18n/i18n"; // Import i18next configuration
|
|||||||
import { cookies } from "next/headers";
|
import { cookies } from "next/headers";
|
||||||
import { defaultPreferences } from "@/types/preferences";
|
import { defaultPreferences } from "@/types/preferences";
|
||||||
import type { UserPreferences } from "@/types/preferences";
|
import type { UserPreferences } from "@/types/preferences";
|
||||||
import type { KomgaLibrary, KomgaSeries } from "@/types/komga";
|
|
||||||
import { FavoriteService } from "@/lib/services/favorite.service";
|
|
||||||
import { LibraryService } from "@/lib/services/library.service";
|
|
||||||
import { SeriesService } from "@/lib/services/series.service";
|
|
||||||
|
|
||||||
const inter = Inter({ subsets: ["latin"], display: "swap", adjustFontFallback: false, preload: false });
|
const inter = Inter({ subsets: ["latin"], display: "swap", adjustFontFallback: false, preload: false });
|
||||||
|
|
||||||
@@ -70,30 +66,16 @@ export default async function RootLayout({ children }: { children: React.ReactNo
|
|||||||
const cookieStore = await cookies();
|
const cookieStore = await cookies();
|
||||||
const locale = cookieStore.get("NEXT_LOCALE")?.value || "fr";
|
const locale = cookieStore.get("NEXT_LOCALE")?.value || "fr";
|
||||||
|
|
||||||
// Récupération des données pour la sidebar côté serveur
|
// Les libraries et favorites sont chargés côté client par la Sidebar
|
||||||
let libraries: KomgaLibrary[] = [];
|
|
||||||
let favorites: KomgaSeries[] = [];
|
|
||||||
let preferences: UserPreferences = defaultPreferences;
|
let preferences: UserPreferences = defaultPreferences;
|
||||||
let userIsAdmin = false;
|
let userIsAdmin = false;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Tentative de chargement des données. Si l'utilisateur n'est pas authentifié,
|
const [preferencesData, isAdminCheck] = await Promise.allSettled([
|
||||||
// les services lanceront une erreur mais l'application continuera de fonctionner
|
|
||||||
const [librariesData, favoritesData, preferencesData, isAdminCheck] = await Promise.allSettled([
|
|
||||||
LibraryService.getLibraries(),
|
|
||||||
FavoriteService.getAllFavoriteIds(),
|
|
||||||
PreferencesService.getPreferences(),
|
PreferencesService.getPreferences(),
|
||||||
import("@/lib/auth-utils").then((m) => m.isAdmin()),
|
import("@/lib/auth-utils").then((m) => m.isAdmin()),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
if (librariesData.status === "fulfilled") {
|
|
||||||
libraries = librariesData.value;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (favoritesData.status === "fulfilled") {
|
|
||||||
favorites = await SeriesService.getMultipleSeries(favoritesData.value);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (preferencesData.status === "fulfilled") {
|
if (preferencesData.status === "fulfilled") {
|
||||||
preferences = preferencesData.value;
|
preferences = preferencesData.value;
|
||||||
}
|
}
|
||||||
@@ -102,7 +84,7 @@ export default async function RootLayout({ children }: { children: React.ReactNo
|
|||||||
userIsAdmin = isAdminCheck.value;
|
userIsAdmin = isAdminCheck.value;
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("Erreur lors du chargement des données de la sidebar:", error);
|
console.error("Erreur lors du chargement des préférences:", error);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@@ -169,8 +151,8 @@ export default async function RootLayout({ children }: { children: React.ReactNo
|
|||||||
<I18nProvider locale={locale}>
|
<I18nProvider locale={locale}>
|
||||||
<PreferencesProvider initialPreferences={preferences}>
|
<PreferencesProvider initialPreferences={preferences}>
|
||||||
<ClientLayout
|
<ClientLayout
|
||||||
initialLibraries={libraries}
|
initialLibraries={[]}
|
||||||
initialFavorites={favorites}
|
initialFavorites={[]}
|
||||||
userIsAdmin={userIsAdmin}
|
userIsAdmin={userIsAdmin}
|
||||||
>
|
>
|
||||||
{children}
|
{children}
|
||||||
|
|||||||
Reference in New Issue
Block a user