mirror of
https://github.com/moku-project/Moku.git
synced 2026-06-13 09:19:56 -05:00
Feat: Shift from Stable to Preview (WIP)
This commit is contained in:
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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
@@ -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[];
|
||||
}
|
||||
}
|
||||
@@ -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
@@ -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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user