Feat: Shift from Stable to Preview (WIP)

This commit is contained in:
Youwes09
2026-04-30 01:04:56 -05:00
parent 4d3dfdbec6
commit 79cb2f7c56
43 changed files with 1140 additions and 956 deletions
+41
View File
@@ -18,4 +18,45 @@ export interface DownloadStatus {
export interface Connection<T> {
nodes: T[];
}
export interface PageInfo {
hasNextPage: boolean;
}
export interface PaginatedConnection<T> extends Connection<T> {
pageInfo: PageInfo;
totalCount?: number;
}
export interface MetaEntry {
key: string;
value: string;
}
export interface UpdaterJobsInfo {
isRunning: boolean;
finishedJobs: number;
totalJobs: number;
skippedMangasCount: number;
skippedCategoriesCount: number;
}
export interface UpdateStatus {
jobsInfo: UpdaterJobsInfo;
}
export interface AboutServer {
name: string;
version: string;
buildType: string;
buildTime: string;
github: string;
discord: string;
}
export interface ServerUpdateEntry {
channel: string;
tag: string;
url: string;
}
+5 -1
View File
@@ -8,8 +8,12 @@ export interface Chapter {
isBookmarked: boolean;
pageCount: number;
mangaId: number;
fetchedAt?: string;
uploadDate?: string | null;
realUrl?: string | null;
url?: string;
lastPageRead?: number;
lastReadAt?: string;
scanlator?: string | null;
}
manga?: { id: number; title: string; thumbnailUrl: string; inLibrary: boolean } | null;
}
+4 -1
View File
@@ -5,6 +5,9 @@ export interface Source {
displayName: string;
iconUrl: string;
isNsfw: boolean;
isConfigurable: boolean;
supportsLatest: boolean;
baseUrl?: string | null;
}
export interface Extension {
@@ -17,4 +20,4 @@ export interface Extension {
isObsolete: boolean;
hasUpdate: boolean;
iconUrl: string;
}
}
+27 -2
View File
@@ -8,20 +8,45 @@ export interface Category {
mangas?: { nodes: Manga[] };
}
export interface ChapterRef {
id: number;
chapterNumber: number;
uploadDate?: string;
lastPageRead?: number;
}
export interface Manga {
id: number;
title: string;
thumbnailUrl: string;
inLibrary: boolean;
initialized?: boolean;
downloadCount?: number;
unreadCount?: number;
chapterCount?: number;
bookmarkCount?: number;
hasDuplicateChapters?: boolean;
chapters?: { totalCount: number };
description?: string | null;
status?: string | null;
author?: string | null;
artist?: string | null;
genre?: string[];
realUrl?: string | null;
url?: string;
sourceId?: string;
inLibraryAt?: string | null;
lastFetchedAt?: string | null;
chaptersLastFetchedAt?: string | null;
thumbnailUrlLastFetched?: string | null;
age?: string | null;
chaptersAge?: string | null;
updateStrategy?: "ALWAYS_UPDATE" | "ONLY_FETCH_ONCE";
latestFetchedChapter?: ChapterRef | null;
latestUploadedChapter?: ChapterRef | null;
latestReadChapter?: ChapterRef | null;
lastReadChapter?: ChapterRef | null;
firstUnreadChapter?: ChapterRef | null;
highestNumberedChapter?: ChapterRef | null;
source?: { id: string; name: string; displayName: string } | null;
}
@@ -31,4 +56,4 @@ export interface MangaDetail extends Manga {
artist: string | null;
status: string | null;
genre: string[];
}
}
+4 -2
View File
@@ -51,6 +51,7 @@ export interface MangaPrefs {
deleteDelayHours: number; maxKeepChapters: number; pauseUpdates: boolean;
refreshInterval: "global" | "daily" | "weekly" | "manual";
preferredScanlator: string; scanlatorFilter: string[];
scanlatorBlacklist: string[]; scanlatorForce: boolean;
autoDownloadScanlators: string[];
coverUrl?: string;
}
@@ -59,6 +60,7 @@ export const DEFAULT_MANGA_PREFS: MangaPrefs = {
autoDownload: false, downloadAhead: 0, deleteOnRead: false,
deleteDelayHours: 0, maxKeepChapters: 0, pauseUpdates: false,
refreshInterval: "global", preferredScanlator: "", scanlatorFilter: [],
scanlatorBlacklist: [], scanlatorForce: false,
autoDownloadScanlators: [],
};
@@ -102,7 +104,7 @@ export interface Settings {
socksProxyEnabled: boolean; socksProxyHost: string; socksProxyPort: string;
socksProxyVersion: number; socksProxyUsername: string; socksProxyPassword: string;
flareSolverrEnabled: boolean; flareSolverrUrl: string; flareSolverrTimeout: number;
flareSolverrSessionName: string; flareSolverrSessionTtl: number; flareSolverrFallback: boolean;
flareSolverrSessionName: string; flareSolverrSessionTtl: number; flareSolverrAsResponseFallback: boolean;
appLockEnabled: boolean; appLockPin: string;
customThemes: CustomTheme[]; hiddenCategoryIds: number[];
defaultLibraryCategoryId: number | null; savedIsDefaultCategory: boolean;
@@ -145,7 +147,7 @@ export const DEFAULT_SETTINGS: Settings = {
socksProxyVersion: 5, socksProxyUsername: "", socksProxyPassword: "",
flareSolverrEnabled: false, flareSolverrUrl: "http://localhost:8191",
flareSolverrTimeout: 60, flareSolverrSessionName: "moku",
flareSolverrSessionTtl: 15, flareSolverrFallback: false,
flareSolverrSessionTtl: 15, flareSolverrAsResponseFallback: false,
appLockEnabled: false, appLockPin: "",
customThemes: [], hiddenCategoryIds: [], defaultLibraryCategoryId: null,
savedIsDefaultCategory: false,
+11 -4
View File
@@ -8,8 +8,11 @@ export interface Tracker {
name: string;
icon: string;
isLoggedIn: boolean;
isTokenExpired: boolean;
authUrl: string | null;
supportsPrivateTracking: boolean;
supportsReadingDates: boolean;
supportsTrackDeletion: boolean;
scores: string[];
statuses: TrackerStatus[];
}
@@ -17,17 +20,21 @@ export interface Tracker {
export interface TrackRecord {
id: number;
trackerId: number;
mangaId: number;
remoteId: string;
libraryId: string | null;
title: string;
status: number;
score: number;
displayScore: string;
lastChapterRead: number;
totalChapters: number;
remoteUrl: string | null;
startDate: string | null;
finishDate: string | null;
remoteUrl: string;
startDate: string;
finishDate: string;
private: boolean;
manga?: { id: number; title: string; thumbnailUrl: string; inLibrary?: boolean } | null;
tracker?: Pick<Tracker, "id" | "name" | "icon" | "isLoggedIn" | "statuses"> | null;
}
export interface TrackSearch {
@@ -42,4 +49,4 @@ export interface TrackSearch {
startDate: string | null;
totalChapters: number;
trackingUrl: string | null;
}
}