From 3b2d4cb0d5a519a963870581a7f19d625c5b68a6 Mon Sep 17 00:00:00 2001 From: Julien Froidefond Date: Wed, 26 Feb 2025 13:33:40 +0100 Subject: [PATCH] refacto: type mutu --- src/app/page.tsx | 3 ++- src/components/home/HomeContent.tsx | 15 ++++----------- src/contexts/PreferencesContext.tsx | 15 +-------------- src/lib/services/home.service.ts | 4 ++-- src/lib/services/preferences.service.ts | 15 +-------------- src/types/preferences.ts | 13 +++++++++++++ yarn.lock | 12 ++++++------ 7 files changed, 29 insertions(+), 48 deletions(-) create mode 100644 src/types/preferences.ts diff --git a/src/app/page.tsx b/src/app/page.tsx index e196e0e..8ce3f3c 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -4,6 +4,7 @@ import { redirect } from "next/navigation"; import { revalidatePath } from "next/cache"; import { withPageTiming } from "@/lib/hoc/withPageTiming"; import { ErrorMessage } from "@/components/ui/ErrorMessage"; +import { HomeData } from "@/lib/services/home.service"; async function refreshHome() { "use server"; @@ -20,7 +21,7 @@ async function refreshHome() { async function HomePage() { try { - const data = await HomeService.getHomeData(); + const data: HomeData = await HomeService.getHomeData(); return ; } catch (error) { diff --git a/src/components/home/HomeContent.tsx b/src/components/home/HomeContent.tsx index 5227f78..6f30f95 100644 --- a/src/components/home/HomeContent.tsx +++ b/src/components/home/HomeContent.tsx @@ -3,14 +3,7 @@ import { MediaRow } from "./MediaRow"; import { KomgaBook, KomgaSeries } from "@/types/komga"; import { RefreshButton } from "@/components/library/RefreshButton"; import { History, Sparkles, Clock, LibraryBig, BookOpen } from "lucide-react"; - -interface HomeData { - ongoing: KomgaSeries[]; - ongoingBooks: KomgaBook[]; - recentlyRead: KomgaBook[]; - onDeck: KomgaBook[]; - latestSeries: KomgaSeries[]; -} +import { HomeData } from "@/lib/services/home.service"; interface HomeContentProps { data: HomeData; @@ -30,7 +23,7 @@ export function HomeContent({ data, refreshHome }: HomeContentProps) { id, metadata: { title: metadata.title }, booksCount, - booksReadCount + booksReadCount, })); }; @@ -39,7 +32,7 @@ export function HomeContent({ data, refreshHome }: HomeContentProps) { id, metadata: { title: metadata.title }, booksCount, - booksReadCount + booksReadCount, })); }; @@ -51,7 +44,7 @@ export function HomeContent({ data, refreshHome }: HomeContentProps) { number: metadata.number, }, readProgress: readProgress || { page: 0 }, - media + media, })); }; diff --git a/src/contexts/PreferencesContext.tsx b/src/contexts/PreferencesContext.tsx index 6dc3620..b8c7b88 100644 --- a/src/contexts/PreferencesContext.tsx +++ b/src/contexts/PreferencesContext.tsx @@ -3,20 +3,7 @@ import React, { createContext, useContext, useEffect, useState } from "react"; import { ERROR_CODES } from "../constants/errorCodes"; import { AppError } from "../utils/errors"; - -export interface UserPreferences { - showThumbnails: boolean; - cacheMode: "memory" | "file"; - showOnlyUnread: boolean; - debug: boolean; -} - -const defaultPreferences: UserPreferences = { - showThumbnails: true, - cacheMode: "memory", - showOnlyUnread: false, - debug: false, -}; +import { UserPreferences, defaultPreferences } from "@/types/preferences"; interface PreferencesContextType { preferences: UserPreferences; diff --git a/src/lib/services/home.service.ts b/src/lib/services/home.service.ts index f70f362..967e6be 100644 --- a/src/lib/services/home.service.ts +++ b/src/lib/services/home.service.ts @@ -5,9 +5,9 @@ import { getServerCacheService } from "./server-cache.service"; import { ERROR_CODES } from "../../constants/errorCodes"; import { AppError } from "../../utils/errors"; -interface HomeData { +export interface HomeData { ongoing: KomgaSeries[]; - ongoingBooks: KomgaBook[]; // Nouveau champ + ongoingBooks: KomgaBook[]; recentlyRead: KomgaBook[]; onDeck: KomgaBook[]; latestSeries: KomgaSeries[]; diff --git a/src/lib/services/preferences.service.ts b/src/lib/services/preferences.service.ts index 5eba08c..e690508 100644 --- a/src/lib/services/preferences.service.ts +++ b/src/lib/services/preferences.service.ts @@ -2,26 +2,13 @@ import { PreferencesModel } from "@/lib/models/preferences.model"; import { AuthServerService } from "./auth-server.service"; import { ERROR_CODES } from "../../constants/errorCodes"; import { AppError } from "../../utils/errors"; +import { UserPreferences, defaultPreferences } from "@/types/preferences"; interface User { id: string; email: string; } -export interface UserPreferences { - showThumbnails: boolean; - cacheMode: "memory" | "file"; - showOnlyUnread: boolean; - debug: boolean; -} - -const defaultPreferences: UserPreferences = { - showThumbnails: true, - cacheMode: "memory", - showOnlyUnread: false, - debug: false, -}; - export class PreferencesService { static getCurrentUser(): User { const user = AuthServerService.getCurrentUser(); diff --git a/src/types/preferences.ts b/src/types/preferences.ts new file mode 100644 index 0000000..adf3b9f --- /dev/null +++ b/src/types/preferences.ts @@ -0,0 +1,13 @@ +export interface UserPreferences { + showThumbnails: boolean; + cacheMode: "memory" | "file"; + showOnlyUnread: boolean; + debug: boolean; +} + +export const defaultPreferences: UserPreferences = { + showThumbnails: true, + cacheMode: "memory", + showOnlyUnread: false, + debug: false, +} as const; diff --git a/yarn.lock b/yarn.lock index f9cc258..9aae664 100644 --- a/yarn.lock +++ b/yarn.lock @@ -226,7 +226,7 @@ "@jridgewell/gen-mapping@^0.3.2": version "0.3.8" - resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz#4f0e06362e01362f823d348f1872b08f666d8142" integrity sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA== dependencies: "@jridgewell/set-array" "^1.2.1" @@ -250,7 +250,7 @@ "@jridgewell/trace-mapping@^0.3.24": version "0.3.25" - resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== dependencies: "@jridgewell/resolve-uri" "^3.1.0" @@ -970,7 +970,7 @@ any-promise@^1.0.0: anymatch@~3.1.2: version "3.1.3" - resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== dependencies: normalize-path "^3.0.0" @@ -1008,7 +1008,7 @@ aria-hidden@^1.1.1: aria-query@^5.3.2: version "5.3.2" - resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.2.tgz#93f81a43480e33a338f19163a3d10a50c01dcd59" integrity sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw== array-buffer-byte-length@^1.0.1, array-buffer-byte-length@^1.0.2: @@ -1984,7 +1984,7 @@ fs.realpath@^1.0.0: fsevents@~2.3.2: version "2.3.3" - resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== function-bind@^1.1.2: @@ -3109,7 +3109,7 @@ pify@^2.3.0: pirates@^4.0.1: version "4.0.6" - resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== possible-typed-array-names@^1.0.0: