From 3973eda0897e2a1f080d2280b606d069faa3b27d Mon Sep 17 00:00:00 2001 From: schroda <50052685+schroda@users.noreply.github.com> Date: Thu, 11 Jan 2024 03:53:06 +0100 Subject: [PATCH] [ServerMapping][Codegen] Update to latest server gql MangaType changes (#546) --- src/components/MangaCard.tsx | 6 +- src/components/chapter/ChapterList.tsx | 4 +- src/lib/graphql/Fragments.ts | 15 +- src/lib/graphql/generated/apollo-helpers.ts | 97 ++++++- src/lib/graphql/generated/graphql.ts | 284 ++++++++++++++++++- src/lib/graphql/mutations/ChapterMutation.ts | 10 +- src/lib/requests/RequestManager.ts | 2 +- tools/scripts/codegenFormatter.ts | 13 +- versionToServerVersionMapping.json | 2 +- 9 files changed, 405 insertions(+), 28 deletions(-) diff --git a/src/components/MangaCard.tsx b/src/components/MangaCard.tsx index ebcceeda..459dab1f 100644 --- a/src/components/MangaCard.tsx +++ b/src/components/MangaCard.tsx @@ -85,7 +85,7 @@ export const MangaCard = (props: IProps) => { downloadCount, unreadCount: unread, inLibrary, - lastReadChapter, + latestReadChapter, chapters, } = manga; const thumbnailUrl = tmpThumbnailUrl ?? 'nonExistingMangaUrl'; @@ -95,8 +95,8 @@ export const MangaCard = (props: IProps) => { const mangaLinkTo = `/manga/${id}/`; - const nextChapterIndexToRead = (lastReadChapter?.sourceOrder ?? 0) + 1; - const isLatestChapterRead = chapters?.totalCount === lastReadChapter?.sourceOrder; + const nextChapterIndexToRead = (latestReadChapter?.sourceOrder ?? 0) + 1; + const isLatestChapterRead = chapters?.totalCount === latestReadChapter?.sourceOrder; if (gridLayout !== GridLayout.List) { return ( diff --git a/src/components/chapter/ChapterList.tsx b/src/components/chapter/ChapterList.tsx index da9d922d..9ec6acdb 100644 --- a/src/components/chapter/ChapterList.tsx +++ b/src/components/chapter/ChapterList.tsx @@ -78,8 +78,8 @@ export const ChapterList: React.FC = ({ manga, isRefreshing }) => { const visibleChapters = useMemo(() => filterAndSortChapters(chapters, options), [chapters, options]); - const nextChapterIndexToRead = (manga.lastReadChapter?.sourceOrder ?? 0) + 1; - const isLatestChapterRead = manga.chapters.totalCount === manga.lastReadChapter?.sourceOrder; + const nextChapterIndexToRead = (manga.latestReadChapter?.sourceOrder ?? 0) + 1; + const isLatestChapterRead = manga.chapters.totalCount === manga.latestReadChapter?.sourceOrder; const areAllChaptersRead = manga.unreadCount === 0; const areAllChaptersDownloaded = manga.downloadCount === manga.chapters.totalCount; diff --git a/src/lib/graphql/Fragments.ts b/src/lib/graphql/Fragments.ts index 9aa87bab..00c9b082 100644 --- a/src/lib/graphql/Fragments.ts +++ b/src/lib/graphql/Fragments.ts @@ -257,7 +257,6 @@ export const PARTIAL_MANGA_FIELDS = gql` `; export const FULL_CHAPTER_FIELDS = gql` - ${PARTIAL_MANGA_FIELDS} fragment FULL_CHAPTER_FIELDS on ChapterType { chapterNumber fetchedAt @@ -268,7 +267,10 @@ export const FULL_CHAPTER_FIELDS = gql` lastPageRead lastReadAt manga { - ...PARTIAL_MANGA_FIELDS + id + title + inLibrary + thumbnailUrl } meta { key @@ -292,6 +294,15 @@ export const FULL_MANGA_FIELDS = gql` lastReadChapter { ...FULL_CHAPTER_FIELDS } + latestReadChapter { + ...FULL_CHAPTER_FIELDS + } + latestFetchedChapter { + ...FULL_CHAPTER_FIELDS + } + latestUploadedChapter { + ...FULL_CHAPTER_FIELDS + } } `; diff --git a/src/lib/graphql/generated/apollo-helpers.ts b/src/lib/graphql/generated/apollo-helpers.ts index 67767d67..e140b786 100644 --- a/src/lib/graphql/generated/apollo-helpers.ts +++ b/src/lib/graphql/generated/apollo-helpers.ts @@ -26,6 +26,11 @@ export type BackupRestoreStatusFieldPolicy = { state?: FieldPolicy | FieldReadFunction, totalManga?: FieldPolicy | FieldReadFunction }; +export type BindTrackPayloadKeySpecifier = ('clientMutationId' | 'trackRecord' | BindTrackPayloadKeySpecifier)[]; +export type BindTrackPayloadFieldPolicy = { + clientMutationId?: FieldPolicy | FieldReadFunction, + trackRecord?: FieldPolicy | FieldReadFunction +}; export type CategoryEdgeKeySpecifier = ('cursor' | 'node' | CategoryEdgeKeySpecifier)[]; export type CategoryEdgeFieldPolicy = { cursor?: FieldPolicy | FieldReadFunction, @@ -338,6 +343,24 @@ export type ListPreferenceFieldPolicy = { title?: FieldPolicy | FieldReadFunction, visible?: FieldPolicy | FieldReadFunction }; +export type LoginTrackerCredentialsPayloadKeySpecifier = ('clientMutationId' | 'isLoggedIn' | 'tracker' | LoginTrackerCredentialsPayloadKeySpecifier)[]; +export type LoginTrackerCredentialsPayloadFieldPolicy = { + clientMutationId?: FieldPolicy | FieldReadFunction, + isLoggedIn?: FieldPolicy | FieldReadFunction, + tracker?: FieldPolicy | FieldReadFunction +}; +export type LoginTrackerOAuthPayloadKeySpecifier = ('clientMutationId' | 'isLoggedIn' | 'tracker' | LoginTrackerOAuthPayloadKeySpecifier)[]; +export type LoginTrackerOAuthPayloadFieldPolicy = { + clientMutationId?: FieldPolicy | FieldReadFunction, + isLoggedIn?: FieldPolicy | FieldReadFunction, + tracker?: FieldPolicy | FieldReadFunction +}; +export type LogoutTrackerPayloadKeySpecifier = ('clientMutationId' | 'isLoggedIn' | 'tracker' | LogoutTrackerPayloadKeySpecifier)[]; +export type LogoutTrackerPayloadFieldPolicy = { + clientMutationId?: FieldPolicy | FieldReadFunction, + isLoggedIn?: FieldPolicy | FieldReadFunction, + tracker?: FieldPolicy | FieldReadFunction +}; export type MangaEdgeKeySpecifier = ('cursor' | 'node' | MangaEdgeKeySpecifier)[]; export type MangaEdgeFieldPolicy = { cursor?: FieldPolicy | FieldReadFunction, @@ -357,7 +380,7 @@ export type MangaNodeListFieldPolicy = { pageInfo?: FieldPolicy | FieldReadFunction, totalCount?: FieldPolicy | FieldReadFunction }; -export type MangaTypeKeySpecifier = ('age' | 'artist' | 'author' | 'categories' | 'chapters' | 'chaptersAge' | 'chaptersLastFetchedAt' | 'description' | 'downloadCount' | 'genre' | 'id' | 'inLibrary' | 'inLibraryAt' | 'initialized' | 'lastFetchedAt' | 'lastReadChapter' | 'meta' | 'realUrl' | 'source' | 'sourceId' | 'status' | 'thumbnailUrl' | 'title' | 'unreadCount' | 'updateStrategy' | 'url' | MangaTypeKeySpecifier)[]; +export type MangaTypeKeySpecifier = ('age' | 'artist' | 'author' | 'categories' | 'chapters' | 'chaptersAge' | 'chaptersLastFetchedAt' | 'description' | 'downloadCount' | 'genre' | 'id' | 'inLibrary' | 'inLibraryAt' | 'initialized' | 'lastFetchedAt' | 'lastReadChapter' | 'latestFetchedChapter' | 'latestReadChapter' | 'latestUploadedChapter' | 'meta' | 'realUrl' | 'source' | 'sourceId' | 'status' | 'thumbnailUrl' | 'title' | 'trackRecords' | 'unreadCount' | 'updateStrategy' | 'url' | MangaTypeKeySpecifier)[]; export type MangaTypeFieldPolicy = { age?: FieldPolicy | FieldReadFunction, artist?: FieldPolicy | FieldReadFunction, @@ -375,6 +398,9 @@ export type MangaTypeFieldPolicy = { initialized?: FieldPolicy | FieldReadFunction, lastFetchedAt?: FieldPolicy | FieldReadFunction, lastReadChapter?: FieldPolicy | FieldReadFunction, + latestFetchedChapter?: FieldPolicy | FieldReadFunction, + latestReadChapter?: FieldPolicy | FieldReadFunction, + latestUploadedChapter?: FieldPolicy | FieldReadFunction, meta?: FieldPolicy | FieldReadFunction, realUrl?: FieldPolicy | FieldReadFunction, source?: FieldPolicy | FieldReadFunction, @@ -382,6 +408,7 @@ export type MangaTypeFieldPolicy = { status?: FieldPolicy | FieldReadFunction, thumbnailUrl?: FieldPolicy | FieldReadFunction, title?: FieldPolicy | FieldReadFunction, + trackRecords?: FieldPolicy | FieldReadFunction, unreadCount?: FieldPolicy | FieldReadFunction, updateStrategy?: FieldPolicy | FieldReadFunction, url?: FieldPolicy | FieldReadFunction @@ -409,8 +436,9 @@ export type MultiSelectListPreferenceFieldPolicy = { title?: FieldPolicy | FieldReadFunction, visible?: FieldPolicy | FieldReadFunction }; -export type MutationKeySpecifier = ('clearCachedImages' | 'clearDownloader' | 'createBackup' | 'createCategory' | 'deleteCategory' | 'deleteCategoryMeta' | 'deleteChapterMeta' | 'deleteDownloadedChapter' | 'deleteDownloadedChapters' | 'deleteGlobalMeta' | 'deleteMangaMeta' | 'dequeueChapterDownload' | 'dequeueChapterDownloads' | 'downloadAhead' | 'enqueueChapterDownload' | 'enqueueChapterDownloads' | 'fetchChapterPages' | 'fetchChapters' | 'fetchExtensions' | 'fetchManga' | 'fetchSourceManga' | 'installExternalExtension' | 'reorderChapterDownload' | 'resetSettings' | 'resetWebUIUpdateStatus' | 'restoreBackup' | 'setCategoryMeta' | 'setChapterMeta' | 'setGlobalMeta' | 'setMangaMeta' | 'setSettings' | 'startDownloader' | 'stopDownloader' | 'updateCategories' | 'updateCategory' | 'updateCategoryManga' | 'updateCategoryOrder' | 'updateChapter' | 'updateChapters' | 'updateExtension' | 'updateExtensions' | 'updateLibraryManga' | 'updateManga' | 'updateMangaCategories' | 'updateMangas' | 'updateMangasCategories' | 'updateSourcePreference' | 'updateStop' | 'updateWebUI' | MutationKeySpecifier)[]; +export type MutationKeySpecifier = ('bindTrack' | 'clearCachedImages' | 'clearDownloader' | 'createBackup' | 'createCategory' | 'deleteCategory' | 'deleteCategoryMeta' | 'deleteChapterMeta' | 'deleteDownloadedChapter' | 'deleteDownloadedChapters' | 'deleteGlobalMeta' | 'deleteMangaMeta' | 'dequeueChapterDownload' | 'dequeueChapterDownloads' | 'downloadAhead' | 'enqueueChapterDownload' | 'enqueueChapterDownloads' | 'fetchChapterPages' | 'fetchChapters' | 'fetchExtensions' | 'fetchManga' | 'fetchSourceManga' | 'installExternalExtension' | 'loginTrackerCredentials' | 'loginTrackerOAuth' | 'logoutTracker' | 'reorderChapterDownload' | 'resetSettings' | 'resetWebUIUpdateStatus' | 'restoreBackup' | 'setCategoryMeta' | 'setChapterMeta' | 'setGlobalMeta' | 'setMangaMeta' | 'setSettings' | 'startDownloader' | 'stopDownloader' | 'updateCategories' | 'updateCategory' | 'updateCategoryManga' | 'updateCategoryOrder' | 'updateChapter' | 'updateChapters' | 'updateExtension' | 'updateExtensions' | 'updateLibraryManga' | 'updateManga' | 'updateMangaCategories' | 'updateMangas' | 'updateMangasCategories' | 'updateSourcePreference' | 'updateStop' | 'updateTrack' | 'updateWebUI' | MutationKeySpecifier)[]; export type MutationFieldPolicy = { + bindTrack?: FieldPolicy | FieldReadFunction, clearCachedImages?: FieldPolicy | FieldReadFunction, clearDownloader?: FieldPolicy | FieldReadFunction, createBackup?: FieldPolicy | FieldReadFunction, @@ -433,6 +461,9 @@ export type MutationFieldPolicy = { fetchManga?: FieldPolicy | FieldReadFunction, fetchSourceManga?: FieldPolicy | FieldReadFunction, installExternalExtension?: FieldPolicy | FieldReadFunction, + loginTrackerCredentials?: FieldPolicy | FieldReadFunction, + loginTrackerOAuth?: FieldPolicy | FieldReadFunction, + logoutTracker?: FieldPolicy | FieldReadFunction, reorderChapterDownload?: FieldPolicy | FieldReadFunction, resetSettings?: FieldPolicy | FieldReadFunction, resetWebUIUpdateStatus?: FieldPolicy | FieldReadFunction, @@ -459,6 +490,7 @@ export type MutationFieldPolicy = { updateMangasCategories?: FieldPolicy | FieldReadFunction, updateSourcePreference?: FieldPolicy | FieldReadFunction, updateStop?: FieldPolicy | FieldReadFunction, + updateTrack?: FieldPolicy | FieldReadFunction, updateWebUI?: FieldPolicy | FieldReadFunction }; export type NodeListKeySpecifier = ('edges' | 'nodes' | 'pageInfo' | 'totalCount' | NodeListKeySpecifier)[]; @@ -512,9 +544,10 @@ export type PartialSettingsTypeFieldPolicy = { webUIInterface?: FieldPolicy | FieldReadFunction, webUIUpdateCheckInterval?: FieldPolicy | FieldReadFunction }; -export type QueryKeySpecifier = ('aboutServer' | 'aboutWebUI' | 'categories' | 'category' | 'chapter' | 'chapters' | 'checkForServerUpdates' | 'checkForWebUIUpdate' | 'downloadStatus' | 'extension' | 'extensions' | 'getWebUIUpdateStatus' | 'lastUpdateTimestamp' | 'manga' | 'mangas' | 'meta' | 'metas' | 'restoreStatus' | 'settings' | 'source' | 'sources' | 'updateStatus' | 'validateBackup' | QueryKeySpecifier)[]; +export type QueryKeySpecifier = ('aboutServer' | 'aboutWebUI' | 'categories' | 'category' | 'chapter' | 'chapters' | 'checkForServerUpdates' | 'checkForWebUIUpdate' | 'downloadStatus' | 'extension' | 'extensions' | 'getWebUIUpdateStatus' | 'lastUpdateTimestamp' | 'manga' | 'mangas' | 'meta' | 'metas' | 'restoreStatus' | 'searchTracker' | 'settings' | 'source' | 'sources' | 'trackRecord' | 'trackRecords' | 'tracker' | 'trackers' | 'updateStatus' | 'validateBackup' | QueryKeySpecifier)[]; export type QueryFieldPolicy = { - about?: FieldPolicy | FieldReadFunction, + aboutServer?: FieldPolicy | FieldReadFunction, + aboutWebUI?: FieldPolicy | FieldReadFunction, categories?: FieldPolicy | FieldReadFunction, category?: FieldPolicy> | FieldReadFunction>, chapter?: FieldPolicy> | FieldReadFunction>, @@ -531,9 +564,14 @@ export type QueryFieldPolicy = { meta?: FieldPolicy> | FieldReadFunction>, metas?: FieldPolicy | FieldReadFunction, restoreStatus?: FieldPolicy | FieldReadFunction, + searchTracker?: FieldPolicy | FieldReadFunction, settings?: FieldPolicy | FieldReadFunction, source?: FieldPolicy> | FieldReadFunction>, sources?: FieldPolicy | FieldReadFunction, + trackRecord?: FieldPolicy | FieldReadFunction, + trackRecords?: FieldPolicy | FieldReadFunction, + tracker?: FieldPolicy | FieldReadFunction, + trackers?: FieldPolicy | FieldReadFunction, updateStatus?: FieldPolicy> | FieldReadFunction>, validateBackup?: FieldPolicy | FieldReadFunction }; @@ -553,6 +591,10 @@ export type RestoreBackupPayloadFieldPolicy = { id?: FieldPolicy | FieldReadFunction, status?: FieldPolicy | FieldReadFunction }; +export type SearchTrackerPayloadKeySpecifier = ('trackSearches' | SearchTrackerPayloadKeySpecifier)[]; +export type SearchTrackerPayloadFieldPolicy = { + trackSearches?: FieldPolicy | FieldReadFunction +}; export type SelectFilterKeySpecifier = ('default' | 'name' | 'values' | SelectFilterKeySpecifier)[]; export type SelectFilterFieldPolicy = { default?: FieldPolicy | FieldReadFunction, @@ -761,6 +803,20 @@ export type TrackRecordTypeFieldPolicy = { totalChapters?: FieldPolicy | FieldReadFunction, tracker?: FieldPolicy | FieldReadFunction }; +export type TrackSearchTypeKeySpecifier = ('coverUrl' | 'mediaId' | 'publishingStatus' | 'publishingType' | 'startDate' | 'summary' | 'syncId' | 'title' | 'totalChapters' | 'tracker' | 'trackingUrl' | TrackSearchTypeKeySpecifier)[]; +export type TrackSearchTypeFieldPolicy = { + coverUrl?: FieldPolicy | FieldReadFunction, + mediaId?: FieldPolicy | FieldReadFunction, + publishingStatus?: FieldPolicy | FieldReadFunction, + publishingType?: FieldPolicy | FieldReadFunction, + startDate?: FieldPolicy | FieldReadFunction, + summary?: FieldPolicy | FieldReadFunction, + syncId?: FieldPolicy | FieldReadFunction, + title?: FieldPolicy | FieldReadFunction, + totalChapters?: FieldPolicy | FieldReadFunction, + tracker?: FieldPolicy | FieldReadFunction, + trackingUrl?: FieldPolicy | FieldReadFunction +}; export type TrackerEdgeKeySpecifier = ('cursor' | 'node' | TrackerEdgeKeySpecifier)[]; export type TrackerEdgeFieldPolicy = { cursor?: FieldPolicy | FieldReadFunction, @@ -881,6 +937,11 @@ export type UpdateStopPayloadKeySpecifier = ('clientMutationId' | UpdateStopPayl export type UpdateStopPayloadFieldPolicy = { clientMutationId?: FieldPolicy | FieldReadFunction }; +export type UpdateTrackPayloadKeySpecifier = ('clientMutationId' | 'trackRecord' | UpdateTrackPayloadKeySpecifier)[]; +export type UpdateTrackPayloadFieldPolicy = { + clientMutationId?: FieldPolicy | FieldReadFunction, + trackRecord?: FieldPolicy | FieldReadFunction +}; export type ValidateBackupResultKeySpecifier = ('missingSources' | ValidateBackupResultKeySpecifier)[]; export type ValidateBackupResultFieldPolicy = { missingSources?: FieldPolicy | FieldReadFunction @@ -925,6 +986,10 @@ export type StrictTypedTypePolicies = { keyFields?: false | BackupRestoreStatusKeySpecifier | (() => undefined | BackupRestoreStatusKeySpecifier), fields?: BackupRestoreStatusFieldPolicy, }, + BindTrackPayload?: Omit & { + keyFields?: false | BindTrackPayloadKeySpecifier | (() => undefined | BindTrackPayloadKeySpecifier), + fields?: BindTrackPayloadFieldPolicy, + }, CategoryEdge?: Omit & { keyFields?: false | CategoryEdgeKeySpecifier | (() => undefined | CategoryEdgeKeySpecifier), fields?: CategoryEdgeFieldPolicy, @@ -1117,6 +1182,18 @@ export type StrictTypedTypePolicies = { keyFields?: false | ListPreferenceKeySpecifier | (() => undefined | ListPreferenceKeySpecifier), fields?: ListPreferenceFieldPolicy, }, + LoginTrackerCredentialsPayload?: Omit & { + keyFields?: false | LoginTrackerCredentialsPayloadKeySpecifier | (() => undefined | LoginTrackerCredentialsPayloadKeySpecifier), + fields?: LoginTrackerCredentialsPayloadFieldPolicy, + }, + LoginTrackerOAuthPayload?: Omit & { + keyFields?: false | LoginTrackerOAuthPayloadKeySpecifier | (() => undefined | LoginTrackerOAuthPayloadKeySpecifier), + fields?: LoginTrackerOAuthPayloadFieldPolicy, + }, + LogoutTrackerPayload?: Omit & { + keyFields?: false | LogoutTrackerPayloadKeySpecifier | (() => undefined | LogoutTrackerPayloadKeySpecifier), + fields?: LogoutTrackerPayloadFieldPolicy, + }, MangaEdge?: Omit & { keyFields?: false | MangaEdgeKeySpecifier | (() => undefined | MangaEdgeKeySpecifier), fields?: MangaEdgeFieldPolicy, @@ -1177,6 +1254,10 @@ export type StrictTypedTypePolicies = { keyFields?: false | RestoreBackupPayloadKeySpecifier | (() => undefined | RestoreBackupPayloadKeySpecifier), fields?: RestoreBackupPayloadFieldPolicy, }, + SearchTrackerPayload?: Omit & { + keyFields?: false | SearchTrackerPayloadKeySpecifier | (() => undefined | SearchTrackerPayloadKeySpecifier), + fields?: SearchTrackerPayloadFieldPolicy, + }, SelectFilter?: Omit & { keyFields?: false | SelectFilterKeySpecifier | (() => undefined | SelectFilterKeySpecifier), fields?: SelectFilterFieldPolicy, @@ -1265,6 +1346,10 @@ export type StrictTypedTypePolicies = { keyFields?: false | TrackRecordTypeKeySpecifier | (() => undefined | TrackRecordTypeKeySpecifier), fields?: TrackRecordTypeFieldPolicy, }, + TrackSearchType?: Omit & { + keyFields?: false | TrackSearchTypeKeySpecifier | (() => undefined | TrackSearchTypeKeySpecifier), + fields?: TrackSearchTypeFieldPolicy, + }, TrackerEdge?: Omit & { keyFields?: false | TrackerEdgeKeySpecifier | (() => undefined | TrackerEdgeKeySpecifier), fields?: TrackerEdgeFieldPolicy, @@ -1353,6 +1438,10 @@ export type StrictTypedTypePolicies = { keyFields?: false | UpdateStopPayloadKeySpecifier | (() => undefined | UpdateStopPayloadKeySpecifier), fields?: UpdateStopPayloadFieldPolicy, }, + UpdateTrackPayload?: Omit & { + keyFields?: false | UpdateTrackPayloadKeySpecifier | (() => undefined | UpdateTrackPayloadKeySpecifier), + fields?: UpdateTrackPayloadFieldPolicy, + }, ValidateBackupResult?: Omit & { keyFields?: false | ValidateBackupResultKeySpecifier | (() => undefined | ValidateBackupResultKeySpecifier), fields?: ValidateBackupResultFieldPolicy, diff --git a/src/lib/graphql/generated/graphql.ts b/src/lib/graphql/generated/graphql.ts index 0fec42bb..2a0f571a 100644 --- a/src/lib/graphql/generated/graphql.ts +++ b/src/lib/graphql/generated/graphql.ts @@ -49,6 +49,18 @@ export type BackupRestoreStatus = { totalManga: Scalars['Int']['output']; }; +export type BindTrackInput = { + clientMutationId?: InputMaybe; + mangaId: Scalars['Int']['input']; + track: TrackSearchTypeInput; +}; + +export type BindTrackPayload = { + __typename?: 'BindTrackPayload'; + clientMutationId?: Maybe; + trackRecord: TrackRecordType; +}; + export type BooleanFilterInput = { distinctFrom?: InputMaybe; equalTo?: InputMaybe; @@ -407,6 +419,20 @@ export type DequeueChapterDownloadsPayload = { downloadStatus: DownloadStatus; }; +export type DoubleFilterInput = { + distinctFrom?: InputMaybe; + equalTo?: InputMaybe; + greaterThan?: InputMaybe; + greaterThanOrEqualTo?: InputMaybe; + in?: InputMaybe>; + isNull?: InputMaybe; + lessThan?: InputMaybe; + lessThanOrEqualTo?: InputMaybe; + notDistinctFrom?: InputMaybe; + notEqualTo?: InputMaybe; + notIn?: InputMaybe>; +}; + export type DownloadAheadInput = { clientMutationId?: InputMaybe; latestReadChapterIds?: InputMaybe>; @@ -741,6 +767,45 @@ export type ListPreference = { visible: Scalars['Boolean']['output']; }; +export type LoginTrackerCredentialsInput = { + clientMutationId?: InputMaybe; + password: Scalars['String']['input']; + trackerId: Scalars['Int']['input']; + username: Scalars['String']['input']; +}; + +export type LoginTrackerCredentialsPayload = { + __typename?: 'LoginTrackerCredentialsPayload'; + clientMutationId?: Maybe; + isLoggedIn: Scalars['Boolean']['output']; + tracker: TrackerType; +}; + +export type LoginTrackerOAuthInput = { + callbackUrl: Scalars['String']['input']; + clientMutationId?: InputMaybe; + trackerId: Scalars['Int']['input']; +}; + +export type LoginTrackerOAuthPayload = { + __typename?: 'LoginTrackerOAuthPayload'; + clientMutationId?: Maybe; + isLoggedIn: Scalars['Boolean']['output']; + tracker: TrackerType; +}; + +export type LogoutTrackerInput = { + clientMutationId?: InputMaybe; + trackerId: Scalars['Int']['input']; +}; + +export type LogoutTrackerPayload = { + __typename?: 'LogoutTrackerPayload'; + clientMutationId?: Maybe; + isLoggedIn: Scalars['Boolean']['output']; + tracker: TrackerType; +}; + export type LongFilterInput = { distinctFrom?: InputMaybe; equalTo?: InputMaybe; @@ -875,6 +940,9 @@ export type MangaType = { initialized: Scalars['Boolean']['output']; lastFetchedAt?: Maybe; lastReadChapter?: Maybe; + latestFetchedChapter?: Maybe; + latestReadChapter?: Maybe; + latestUploadedChapter?: Maybe; meta: Array; realUrl?: Maybe; source?: Maybe; @@ -882,6 +950,7 @@ export type MangaType = { status: MangaStatus; thumbnailUrl?: Maybe; title: Scalars['String']['output']; + trackRecords: TrackRecordNodeList; unreadCount: Scalars['Int']['output']; updateStrategy: UpdateStrategy; url: Scalars['String']['output']; @@ -932,6 +1001,7 @@ export type MultiSelectListPreference = { export type Mutation = { __typename?: 'Mutation'; + bindTrack: BindTrackPayload; clearCachedImages: ClearCachedImagesPayload; clearDownloader: ClearDownloaderPayload; createBackup: CreateBackupPayload; @@ -954,6 +1024,9 @@ export type Mutation = { fetchManga: FetchMangaPayload; fetchSourceManga: FetchSourceMangaPayload; installExternalExtension: InstallExternalExtensionPayload; + loginTrackerCredentials: LoginTrackerCredentialsPayload; + loginTrackerOAuth: LoginTrackerOAuthPayload; + logoutTracker: LogoutTrackerPayload; reorderChapterDownload: ReorderChapterDownloadPayload; resetSettings: ResetSettingsPayload; resetWebUIUpdateStatus: WebUiUpdateStatus; @@ -980,10 +1053,16 @@ export type Mutation = { updateMangasCategories: UpdateMangasCategoriesPayload; updateSourcePreference: UpdateSourcePreferencePayload; updateStop: UpdateStopPayload; + updateTrack: UpdateTrackPayload; updateWebUI: WebUiUpdatePayload; }; +export type MutationBindTrackArgs = { + input: BindTrackInput; +}; + + export type MutationClearCachedImagesArgs = { input: ClearCachedImagesInput; }; @@ -1094,6 +1173,21 @@ export type MutationInstallExternalExtensionArgs = { }; +export type MutationLoginTrackerCredentialsArgs = { + input: LoginTrackerCredentialsInput; +}; + + +export type MutationLoginTrackerOAuthArgs = { + input: LoginTrackerOAuthInput; +}; + + +export type MutationLogoutTrackerArgs = { + input: LogoutTrackerInput; +}; + + export type MutationReorderChapterDownloadArgs = { input: ReorderChapterDownloadInput; }; @@ -1219,6 +1313,11 @@ export type MutationUpdateStopArgs = { }; +export type MutationUpdateTrackArgs = { + input: UpdateTrackInput; +}; + + export type MutationUpdateWebUiArgs = { input: WebUiUpdateInput; }; @@ -1345,9 +1444,14 @@ export type Query = { meta: GlobalMetaType; metas: GlobalMetaNodeList; restoreStatus?: Maybe; + searchTracker: SearchTrackerPayload; settings: SettingsType; source: SourceType; sources: SourceNodeList; + trackRecord: TrackRecordType; + trackRecords: TrackRecordNodeList; + tracker: TrackerType; + trackers: TrackerNodeList; updateStatus: UpdateStatus; validateBackup: ValidateBackupResult; }; @@ -1448,6 +1552,11 @@ export type QueryRestoreStatusArgs = { }; +export type QuerySearchTrackerArgs = { + input: SearchTrackerInput; +}; + + export type QuerySourceArgs = { id: Scalars['LongString']['input']; }; @@ -1466,6 +1575,41 @@ export type QuerySourcesArgs = { }; +export type QueryTrackRecordArgs = { + id: Scalars['Int']['input']; +}; + + +export type QueryTrackRecordsArgs = { + after?: InputMaybe; + before?: InputMaybe; + condition?: InputMaybe; + filter?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe; + orderByType?: InputMaybe; +}; + + +export type QueryTrackerArgs = { + id: Scalars['Int']['input']; +}; + + +export type QueryTrackersArgs = { + after?: InputMaybe; + before?: InputMaybe; + condition?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe; + orderByType?: InputMaybe; +}; + + export type QueryValidateBackupArgs = { input: ValidateBackupInput; }; @@ -1504,6 +1648,16 @@ export type RestoreBackupPayload = { status?: Maybe; }; +export type SearchTrackerInput = { + query: Scalars['String']['input']; + trackerId: Scalars['Int']['input']; +}; + +export type SearchTrackerPayload = { + __typename?: 'SearchTrackerPayload'; + trackSearches: Array; +}; + export type SelectFilter = { __typename?: 'SelectFilter'; default: Scalars['Int']['output']; @@ -1816,12 +1970,47 @@ export type TextFilter = { name: Scalars['String']['output']; }; +export type TrackRecordConditionInput = { + finishDate?: InputMaybe; + id?: InputMaybe; + lastChapterRead?: InputMaybe; + libraryId?: InputMaybe; + mangaId?: InputMaybe; + remoteId?: InputMaybe; + remoteUrl?: InputMaybe; + score?: InputMaybe; + startDate?: InputMaybe; + status?: InputMaybe; + syncId?: InputMaybe; + title?: InputMaybe; + totalChapters?: InputMaybe; +}; + export type TrackRecordEdge = Edge & { __typename?: 'TrackRecordEdge'; cursor: Scalars['Cursor']['output']; node: TrackRecordType; }; +export type TrackRecordFilterInput = { + and?: InputMaybe>; + finishDate?: InputMaybe; + id?: InputMaybe; + lastChapterRead?: InputMaybe; + libraryId?: InputMaybe; + mangaId?: InputMaybe; + not?: InputMaybe; + or?: InputMaybe>; + remoteId?: InputMaybe; + remoteUrl?: InputMaybe; + score?: InputMaybe; + startDate?: InputMaybe; + status?: InputMaybe; + syncId?: InputMaybe; + title?: InputMaybe; + totalChapters?: InputMaybe; +}; + export type TrackRecordNodeList = NodeList & { __typename?: 'TrackRecordNodeList'; edges: Array; @@ -1830,6 +2019,19 @@ export type TrackRecordNodeList = NodeList & { totalCount: Scalars['Int']['output']; }; +export enum TrackRecordOrderBy { + FinishDate = 'FINISH_DATE', + Id = 'ID', + LastChapterRead = 'LAST_CHAPTER_READ', + MangaId = 'MANGA_ID', + RemoteId = 'REMOTE_ID', + Score = 'SCORE', + StartDate = 'START_DATE', + SyncId = 'SYNC_ID', + Title = 'TITLE', + TotalChapters = 'TOTAL_CHAPTERS' +} + export type TrackRecordType = { __typename?: 'TrackRecordType'; displayScore: Scalars['String']['output']; @@ -1850,6 +2052,41 @@ export type TrackRecordType = { tracker: TrackerType; }; +export type TrackSearchType = { + __typename?: 'TrackSearchType'; + coverUrl: Scalars['String']['output']; + mediaId: Scalars['LongString']['output']; + publishingStatus: Scalars['String']['output']; + publishingType: Scalars['String']['output']; + startDate: Scalars['String']['output']; + summary: Scalars['String']['output']; + syncId: Scalars['Int']['output']; + title: Scalars['String']['output']; + totalChapters: Scalars['Int']['output']; + tracker: TrackerType; + trackingUrl: Scalars['String']['output']; +}; + +export type TrackSearchTypeInput = { + coverUrl: Scalars['String']['input']; + mediaId: Scalars['LongString']['input']; + publishingStatus: Scalars['String']['input']; + publishingType: Scalars['String']['input']; + startDate: Scalars['String']['input']; + summary: Scalars['String']['input']; + syncId: Scalars['Int']['input']; + title: Scalars['String']['input']; + totalChapters: Scalars['Int']['input']; + trackingUrl: Scalars['String']['input']; +}; + +export type TrackerConditionInput = { + icon?: InputMaybe; + id?: InputMaybe; + isLoggedIn?: InputMaybe; + name?: InputMaybe; +}; + export type TrackerEdge = Edge & { __typename?: 'TrackerEdge'; cursor: Scalars['Cursor']['output']; @@ -1864,6 +2101,12 @@ export type TrackerNodeList = NodeList & { totalCount: Scalars['Int']['output']; }; +export enum TrackerOrderBy { + Id = 'ID', + IsLoggedIn = 'IS_LOGGED_IN', + Name = 'NAME' +} + export type TrackerType = { __typename?: 'TrackerType'; authUrl?: Maybe; @@ -2123,6 +2366,23 @@ export enum UpdateStrategy { OnlyFetchOnce = 'ONLY_FETCH_ONCE' } +export type UpdateTrackInput = { + clientMutationId?: InputMaybe; + finishDate?: InputMaybe; + lastChapterRead?: InputMaybe; + recordId: Scalars['Int']['input']; + scoreString?: InputMaybe; + startDate?: InputMaybe; + status?: InputMaybe; + unbind?: InputMaybe; +}; + +export type UpdateTrackPayload = { + __typename?: 'UpdateTrackPayload'; + clientMutationId?: Maybe; + trackRecord?: Maybe; +}; + export type ValidateBackupInput = { backup: Scalars['Upload']['input']; }; @@ -2200,9 +2460,9 @@ export type BaseMangaFieldsFragment = { __typename?: 'MangaType', artist?: strin export type PartialMangaFieldsFragment = { __typename?: 'MangaType', unreadCount: number, downloadCount: number, artist?: string | null, author?: string | null, chaptersLastFetchedAt?: any | null, description?: string | null, genre: Array, id: number, inLibrary: boolean, inLibraryAt: any, initialized: boolean, lastFetchedAt?: any | null, realUrl?: string | null, status: MangaStatus, thumbnailUrl?: string | null, title: string, url: string, categories: { __typename?: 'CategoryNodeList', totalCount: number, nodes: Array<{ __typename?: 'CategoryType', default: boolean, id: number, includeInUpdate: IncludeInUpdate, name: string, order: number, meta: Array<{ __typename?: 'CategoryMetaType', key: string, value: string }>, mangas: { __typename?: 'MangaNodeList', totalCount: number } }> }, chapters: { __typename?: 'ChapterNodeList', totalCount: number }, meta: Array<{ __typename?: 'MangaMetaType', key: string, value: string }>, source?: { __typename?: 'SourceType', displayName: string, iconUrl: string, id: any, isConfigurable: boolean, isNsfw: boolean, lang: string, name: string, supportsLatest: boolean, extension: { __typename?: 'ExtensionType', pkgName: string, repo?: string | null } } | null }; -export type FullChapterFieldsFragment = { __typename?: 'ChapterType', chapterNumber: number, fetchedAt: any, id: number, isBookmarked: boolean, isDownloaded: boolean, isRead: boolean, lastPageRead: number, lastReadAt: any, name: string, pageCount: number, realUrl?: string | null, scanlator?: string | null, sourceOrder: number, uploadDate: any, url: string, manga: { __typename?: 'MangaType', unreadCount: number, downloadCount: number, artist?: string | null, author?: string | null, chaptersLastFetchedAt?: any | null, description?: string | null, genre: Array, id: number, inLibrary: boolean, inLibraryAt: any, initialized: boolean, lastFetchedAt?: any | null, realUrl?: string | null, status: MangaStatus, thumbnailUrl?: string | null, title: string, url: string, categories: { __typename?: 'CategoryNodeList', totalCount: number, nodes: Array<{ __typename?: 'CategoryType', default: boolean, id: number, includeInUpdate: IncludeInUpdate, name: string, order: number, meta: Array<{ __typename?: 'CategoryMetaType', key: string, value: string }>, mangas: { __typename?: 'MangaNodeList', totalCount: number } }> }, chapters: { __typename?: 'ChapterNodeList', totalCount: number }, meta: Array<{ __typename?: 'MangaMetaType', key: string, value: string }>, source?: { __typename?: 'SourceType', displayName: string, iconUrl: string, id: any, isConfigurable: boolean, isNsfw: boolean, lang: string, name: string, supportsLatest: boolean, extension: { __typename?: 'ExtensionType', pkgName: string, repo?: string | null } } | null }, meta: Array<{ __typename?: 'ChapterMetaType', key: string, value: string }> }; +export type FullChapterFieldsFragment = { __typename?: 'ChapterType', chapterNumber: number, fetchedAt: any, id: number, isBookmarked: boolean, isDownloaded: boolean, isRead: boolean, lastPageRead: number, lastReadAt: any, name: string, pageCount: number, realUrl?: string | null, scanlator?: string | null, sourceOrder: number, uploadDate: any, url: string, manga: { __typename?: 'MangaType', id: number, title: string, inLibrary: boolean, thumbnailUrl?: string | null }, meta: Array<{ __typename?: 'ChapterMetaType', key: string, value: string }> }; -export type FullMangaFieldsFragment = { __typename?: 'MangaType', unreadCount: number, downloadCount: number, artist?: string | null, author?: string | null, chaptersLastFetchedAt?: any | null, description?: string | null, genre: Array, id: number, inLibrary: boolean, inLibraryAt: any, initialized: boolean, lastFetchedAt?: any | null, realUrl?: string | null, status: MangaStatus, thumbnailUrl?: string | null, title: string, url: string, lastReadChapter?: { __typename?: 'ChapterType', chapterNumber: number, fetchedAt: any, id: number, isBookmarked: boolean, isDownloaded: boolean, isRead: boolean, lastPageRead: number, lastReadAt: any, name: string, pageCount: number, realUrl?: string | null, scanlator?: string | null, sourceOrder: number, uploadDate: any, url: string, manga: { __typename?: 'MangaType', unreadCount: number, downloadCount: number, artist?: string | null, author?: string | null, chaptersLastFetchedAt?: any | null, description?: string | null, genre: Array, id: number, inLibrary: boolean, inLibraryAt: any, initialized: boolean, lastFetchedAt?: any | null, realUrl?: string | null, status: MangaStatus, thumbnailUrl?: string | null, title: string, url: string, categories: { __typename?: 'CategoryNodeList', totalCount: number, nodes: Array<{ __typename?: 'CategoryType', default: boolean, id: number, includeInUpdate: IncludeInUpdate, name: string, order: number, meta: Array<{ __typename?: 'CategoryMetaType', key: string, value: string }>, mangas: { __typename?: 'MangaNodeList', totalCount: number } }> }, chapters: { __typename?: 'ChapterNodeList', totalCount: number }, meta: Array<{ __typename?: 'MangaMetaType', key: string, value: string }>, source?: { __typename?: 'SourceType', displayName: string, iconUrl: string, id: any, isConfigurable: boolean, isNsfw: boolean, lang: string, name: string, supportsLatest: boolean, extension: { __typename?: 'ExtensionType', pkgName: string, repo?: string | null } } | null }, meta: Array<{ __typename?: 'ChapterMetaType', key: string, value: string }> } | null, categories: { __typename?: 'CategoryNodeList', totalCount: number, nodes: Array<{ __typename?: 'CategoryType', default: boolean, id: number, includeInUpdate: IncludeInUpdate, name: string, order: number, meta: Array<{ __typename?: 'CategoryMetaType', key: string, value: string }>, mangas: { __typename?: 'MangaNodeList', totalCount: number } }> }, chapters: { __typename?: 'ChapterNodeList', totalCount: number }, meta: Array<{ __typename?: 'MangaMetaType', key: string, value: string }>, source?: { __typename?: 'SourceType', displayName: string, iconUrl: string, id: any, isConfigurable: boolean, isNsfw: boolean, lang: string, name: string, supportsLatest: boolean, extension: { __typename?: 'ExtensionType', pkgName: string, repo?: string | null } } | null }; +export type FullMangaFieldsFragment = { __typename?: 'MangaType', unreadCount: number, downloadCount: number, artist?: string | null, author?: string | null, chaptersLastFetchedAt?: any | null, description?: string | null, genre: Array, id: number, inLibrary: boolean, inLibraryAt: any, initialized: boolean, lastFetchedAt?: any | null, realUrl?: string | null, status: MangaStatus, thumbnailUrl?: string | null, title: string, url: string, lastReadChapter?: { __typename?: 'ChapterType', chapterNumber: number, fetchedAt: any, id: number, isBookmarked: boolean, isDownloaded: boolean, isRead: boolean, lastPageRead: number, lastReadAt: any, name: string, pageCount: number, realUrl?: string | null, scanlator?: string | null, sourceOrder: number, uploadDate: any, url: string, manga: { __typename?: 'MangaType', id: number, title: string, inLibrary: boolean, thumbnailUrl?: string | null }, meta: Array<{ __typename?: 'ChapterMetaType', key: string, value: string }> } | null, latestReadChapter?: { __typename?: 'ChapterType', chapterNumber: number, fetchedAt: any, id: number, isBookmarked: boolean, isDownloaded: boolean, isRead: boolean, lastPageRead: number, lastReadAt: any, name: string, pageCount: number, realUrl?: string | null, scanlator?: string | null, sourceOrder: number, uploadDate: any, url: string, manga: { __typename?: 'MangaType', id: number, title: string, inLibrary: boolean, thumbnailUrl?: string | null }, meta: Array<{ __typename?: 'ChapterMetaType', key: string, value: string }> } | null, latestFetchedChapter?: { __typename?: 'ChapterType', chapterNumber: number, fetchedAt: any, id: number, isBookmarked: boolean, isDownloaded: boolean, isRead: boolean, lastPageRead: number, lastReadAt: any, name: string, pageCount: number, realUrl?: string | null, scanlator?: string | null, sourceOrder: number, uploadDate: any, url: string, manga: { __typename?: 'MangaType', id: number, title: string, inLibrary: boolean, thumbnailUrl?: string | null }, meta: Array<{ __typename?: 'ChapterMetaType', key: string, value: string }> } | null, latestUploadedChapter?: { __typename?: 'ChapterType', chapterNumber: number, fetchedAt: any, id: number, isBookmarked: boolean, isDownloaded: boolean, isRead: boolean, lastPageRead: number, lastReadAt: any, name: string, pageCount: number, realUrl?: string | null, scanlator?: string | null, sourceOrder: number, uploadDate: any, url: string, manga: { __typename?: 'MangaType', id: number, title: string, inLibrary: boolean, thumbnailUrl?: string | null }, meta: Array<{ __typename?: 'ChapterMetaType', key: string, value: string }> } | null, categories: { __typename?: 'CategoryNodeList', totalCount: number, nodes: Array<{ __typename?: 'CategoryType', default: boolean, id: number, includeInUpdate: IncludeInUpdate, name: string, order: number, meta: Array<{ __typename?: 'CategoryMetaType', key: string, value: string }>, mangas: { __typename?: 'MangaNodeList', totalCount: number } }> }, chapters: { __typename?: 'ChapterNodeList', totalCount: number }, meta: Array<{ __typename?: 'MangaMetaType', key: string, value: string }>, source?: { __typename?: 'SourceType', displayName: string, iconUrl: string, id: any, isConfigurable: boolean, isNsfw: boolean, lang: string, name: string, supportsLatest: boolean, extension: { __typename?: 'ExtensionType', pkgName: string, repo?: string | null } } | null }; export type UpdaterMangaFieldsFragment = { __typename?: 'MangaType', id: number, title: string, thumbnailUrl?: string | null }; @@ -2312,7 +2572,7 @@ export type GetMangaChaptersFetchMutationVariables = Exact<{ }>; -export type GetMangaChaptersFetchMutation = { __typename?: 'Mutation', fetchChapters: { __typename?: 'FetchChaptersPayload', clientMutationId?: string | null, chapters: Array<{ __typename?: 'ChapterType', chapterNumber: number, fetchedAt: any, id: number, isBookmarked: boolean, isDownloaded: boolean, isRead: boolean, lastPageRead: number, lastReadAt: any, name: string, pageCount: number, realUrl?: string | null, scanlator?: string | null, sourceOrder: number, uploadDate: any, url: string, manga: { __typename?: 'MangaType', unreadCount: number, downloadCount: number, artist?: string | null, author?: string | null, chaptersLastFetchedAt?: any | null, description?: string | null, genre: Array, id: number, inLibrary: boolean, inLibraryAt: any, initialized: boolean, lastFetchedAt?: any | null, realUrl?: string | null, status: MangaStatus, thumbnailUrl?: string | null, title: string, url: string, categories: { __typename?: 'CategoryNodeList', totalCount: number, nodes: Array<{ __typename?: 'CategoryType', default: boolean, id: number, includeInUpdate: IncludeInUpdate, name: string, order: number, meta: Array<{ __typename?: 'CategoryMetaType', key: string, value: string }>, mangas: { __typename?: 'MangaNodeList', totalCount: number } }> }, chapters: { __typename?: 'ChapterNodeList', totalCount: number }, meta: Array<{ __typename?: 'MangaMetaType', key: string, value: string }>, source?: { __typename?: 'SourceType', displayName: string, iconUrl: string, id: any, isConfigurable: boolean, isNsfw: boolean, lang: string, name: string, supportsLatest: boolean, extension: { __typename?: 'ExtensionType', pkgName: string, repo?: string | null } } | null }, meta: Array<{ __typename?: 'ChapterMetaType', key: string, value: string }> }> } }; +export type GetMangaChaptersFetchMutation = { __typename?: 'Mutation', fetchChapters: { __typename?: 'FetchChaptersPayload', clientMutationId?: string | null, chapters: Array<{ __typename?: 'ChapterType', chapterNumber: number, fetchedAt: any, id: number, isBookmarked: boolean, isDownloaded: boolean, isRead: boolean, lastPageRead: number, lastReadAt: any, name: string, pageCount: number, realUrl?: string | null, scanlator?: string | null, sourceOrder: number, uploadDate: any, url: string, manga: { __typename?: 'MangaType', id: number, title: string, inLibrary: boolean, thumbnailUrl?: string | null }, meta: Array<{ __typename?: 'ChapterMetaType', key: string, value: string }> }> } }; export type SetChapterMetadataMutationVariables = Exact<{ input: SetChapterMetaInput; @@ -2334,7 +2594,7 @@ export type UpdateChapterMutationVariables = Exact<{ }>; -export type UpdateChapterMutation = { __typename?: 'Mutation', updateChapter: { __typename?: 'UpdateChapterPayload', clientMutationId?: string | null, chapter: { __typename?: 'ChapterType', id: number, isBookmarked?: boolean, isRead?: boolean, lastReadAt?: any, lastPageRead?: number, manga?: { __typename?: 'MangaType', id: number, unreadCount: number, lastReadChapter?: { __typename?: 'ChapterType', id: number } | null } } }, deleteDownloadedChapter?: { __typename?: 'DeleteDownloadedChapterPayload', clientMutationId?: string | null, chapters: { __typename?: 'ChapterType', id: number, isDownloaded: boolean, manga: { __typename?: 'MangaType', id: number, downloadCount: number } } }, downloadAhead?: { __typename?: 'DownloadAheadPayload', clientMutationId?: string | null } }; +export type UpdateChapterMutation = { __typename?: 'Mutation', updateChapter: { __typename?: 'UpdateChapterPayload', clientMutationId?: string | null, chapter: { __typename?: 'ChapterType', id: number, isBookmarked?: boolean, isRead?: boolean, lastReadAt?: any, lastPageRead?: number, manga?: { __typename?: 'MangaType', id: number, unreadCount: number, lastReadChapter?: { __typename?: 'ChapterType', id: number } | null, latestReadChapter?: { __typename?: 'ChapterType', id: number } | null } } }, deleteDownloadedChapter?: { __typename?: 'DeleteDownloadedChapterPayload', clientMutationId?: string | null, chapters: { __typename?: 'ChapterType', id: number, isDownloaded: boolean, manga: { __typename?: 'MangaType', id: number, downloadCount: number } } }, downloadAhead?: { __typename?: 'DownloadAheadPayload', clientMutationId?: string | null } }; export type UpdateChaptersMutationVariables = Exact<{ input: UpdateChaptersInput; @@ -2344,12 +2604,12 @@ export type UpdateChaptersMutationVariables = Exact<{ chapterIdsToDelete: Array | Scalars['Int']['input']; deleteChapters: Scalars['Boolean']['input']; mangaIds: Array | Scalars['Int']['input']; - lastReadChapterIds: Array | Scalars['Int']['input']; + latestReadChapterIds: Array | Scalars['Int']['input']; downloadAhead: Scalars['Boolean']['input']; }>; -export type UpdateChaptersMutation = { __typename?: 'Mutation', updateChapters: { __typename?: 'UpdateChaptersPayload', clientMutationId?: string | null, chapters: Array<{ __typename?: 'ChapterType', id: number, isBookmarked?: boolean, isRead?: boolean, lastReadAt?: any, lastPageRead?: number, manga?: { __typename?: 'MangaType', id: number, unreadCount: number, lastReadChapter?: { __typename?: 'ChapterType', id: number } | null } }> }, deleteDownloadedChapters?: { __typename?: 'DeleteDownloadedChaptersPayload', clientMutationId?: string | null, chapters: Array<{ __typename?: 'ChapterType', id: number, isDownloaded: boolean, manga: { __typename?: 'MangaType', id: number, downloadCount: number } }> }, downloadAhead?: { __typename?: 'DownloadAheadPayload', clientMutationId?: string | null } }; +export type UpdateChaptersMutation = { __typename?: 'Mutation', updateChapters: { __typename?: 'UpdateChaptersPayload', clientMutationId?: string | null, chapters: Array<{ __typename?: 'ChapterType', id: number, isBookmarked?: boolean, isRead?: boolean, lastReadAt?: any, lastPageRead?: number, manga?: { __typename?: 'MangaType', id: number, unreadCount: number, lastReadChapter?: { __typename?: 'ChapterType', id: number } | null, latestReadChapter?: { __typename?: 'ChapterType', id: number } | null } }> }, deleteDownloadedChapters?: { __typename?: 'DeleteDownloadedChaptersPayload', clientMutationId?: string | null, chapters: Array<{ __typename?: 'ChapterType', id: number, isDownloaded: boolean, manga: { __typename?: 'MangaType', id: number, downloadCount: number } }> }, downloadAhead?: { __typename?: 'DownloadAheadPayload', clientMutationId?: string | null } }; export type ClearDownloaderMutationVariables = Exact<{ input?: InputMaybe; @@ -2489,7 +2749,7 @@ export type GetMangaFetchMutationVariables = Exact<{ }>; -export type GetMangaFetchMutation = { __typename?: 'Mutation', fetchManga: { __typename?: 'FetchMangaPayload', clientMutationId?: string | null, manga: { __typename?: 'MangaType', unreadCount: number, downloadCount: number, artist?: string | null, author?: string | null, chaptersLastFetchedAt?: any | null, description?: string | null, genre: Array, id: number, inLibrary: boolean, inLibraryAt: any, initialized: boolean, lastFetchedAt?: any | null, realUrl?: string | null, status: MangaStatus, thumbnailUrl?: string | null, title: string, url: string, lastReadChapter?: { __typename?: 'ChapterType', chapterNumber: number, fetchedAt: any, id: number, isBookmarked: boolean, isDownloaded: boolean, isRead: boolean, lastPageRead: number, lastReadAt: any, name: string, pageCount: number, realUrl?: string | null, scanlator?: string | null, sourceOrder: number, uploadDate: any, url: string, manga: { __typename?: 'MangaType', unreadCount: number, downloadCount: number, artist?: string | null, author?: string | null, chaptersLastFetchedAt?: any | null, description?: string | null, genre: Array, id: number, inLibrary: boolean, inLibraryAt: any, initialized: boolean, lastFetchedAt?: any | null, realUrl?: string | null, status: MangaStatus, thumbnailUrl?: string | null, title: string, url: string, categories: { __typename?: 'CategoryNodeList', totalCount: number, nodes: Array<{ __typename?: 'CategoryType', default: boolean, id: number, includeInUpdate: IncludeInUpdate, name: string, order: number, meta: Array<{ __typename?: 'CategoryMetaType', key: string, value: string }>, mangas: { __typename?: 'MangaNodeList', totalCount: number } }> }, chapters: { __typename?: 'ChapterNodeList', totalCount: number }, meta: Array<{ __typename?: 'MangaMetaType', key: string, value: string }>, source?: { __typename?: 'SourceType', displayName: string, iconUrl: string, id: any, isConfigurable: boolean, isNsfw: boolean, lang: string, name: string, supportsLatest: boolean, extension: { __typename?: 'ExtensionType', pkgName: string, repo?: string | null } } | null }, meta: Array<{ __typename?: 'ChapterMetaType', key: string, value: string }> } | null, categories: { __typename?: 'CategoryNodeList', totalCount: number, nodes: Array<{ __typename?: 'CategoryType', default: boolean, id: number, includeInUpdate: IncludeInUpdate, name: string, order: number, meta: Array<{ __typename?: 'CategoryMetaType', key: string, value: string }>, mangas: { __typename?: 'MangaNodeList', totalCount: number } }> }, chapters: { __typename?: 'ChapterNodeList', totalCount: number }, meta: Array<{ __typename?: 'MangaMetaType', key: string, value: string }>, source?: { __typename?: 'SourceType', displayName: string, iconUrl: string, id: any, isConfigurable: boolean, isNsfw: boolean, lang: string, name: string, supportsLatest: boolean, extension: { __typename?: 'ExtensionType', pkgName: string, repo?: string | null } } | null } } }; +export type GetMangaFetchMutation = { __typename?: 'Mutation', fetchManga: { __typename?: 'FetchMangaPayload', clientMutationId?: string | null, manga: { __typename?: 'MangaType', unreadCount: number, downloadCount: number, artist?: string | null, author?: string | null, chaptersLastFetchedAt?: any | null, description?: string | null, genre: Array, id: number, inLibrary: boolean, inLibraryAt: any, initialized: boolean, lastFetchedAt?: any | null, realUrl?: string | null, status: MangaStatus, thumbnailUrl?: string | null, title: string, url: string, lastReadChapter?: { __typename?: 'ChapterType', chapterNumber: number, fetchedAt: any, id: number, isBookmarked: boolean, isDownloaded: boolean, isRead: boolean, lastPageRead: number, lastReadAt: any, name: string, pageCount: number, realUrl?: string | null, scanlator?: string | null, sourceOrder: number, uploadDate: any, url: string, manga: { __typename?: 'MangaType', id: number, title: string, inLibrary: boolean, thumbnailUrl?: string | null }, meta: Array<{ __typename?: 'ChapterMetaType', key: string, value: string }> } | null, latestReadChapter?: { __typename?: 'ChapterType', chapterNumber: number, fetchedAt: any, id: number, isBookmarked: boolean, isDownloaded: boolean, isRead: boolean, lastPageRead: number, lastReadAt: any, name: string, pageCount: number, realUrl?: string | null, scanlator?: string | null, sourceOrder: number, uploadDate: any, url: string, manga: { __typename?: 'MangaType', id: number, title: string, inLibrary: boolean, thumbnailUrl?: string | null }, meta: Array<{ __typename?: 'ChapterMetaType', key: string, value: string }> } | null, latestFetchedChapter?: { __typename?: 'ChapterType', chapterNumber: number, fetchedAt: any, id: number, isBookmarked: boolean, isDownloaded: boolean, isRead: boolean, lastPageRead: number, lastReadAt: any, name: string, pageCount: number, realUrl?: string | null, scanlator?: string | null, sourceOrder: number, uploadDate: any, url: string, manga: { __typename?: 'MangaType', id: number, title: string, inLibrary: boolean, thumbnailUrl?: string | null }, meta: Array<{ __typename?: 'ChapterMetaType', key: string, value: string }> } | null, latestUploadedChapter?: { __typename?: 'ChapterType', chapterNumber: number, fetchedAt: any, id: number, isBookmarked: boolean, isDownloaded: boolean, isRead: boolean, lastPageRead: number, lastReadAt: any, name: string, pageCount: number, realUrl?: string | null, scanlator?: string | null, sourceOrder: number, uploadDate: any, url: string, manga: { __typename?: 'MangaType', id: number, title: string, inLibrary: boolean, thumbnailUrl?: string | null }, meta: Array<{ __typename?: 'ChapterMetaType', key: string, value: string }> } | null, categories: { __typename?: 'CategoryNodeList', totalCount: number, nodes: Array<{ __typename?: 'CategoryType', default: boolean, id: number, includeInUpdate: IncludeInUpdate, name: string, order: number, meta: Array<{ __typename?: 'CategoryMetaType', key: string, value: string }>, mangas: { __typename?: 'MangaNodeList', totalCount: number } }> }, chapters: { __typename?: 'ChapterNodeList', totalCount: number }, meta: Array<{ __typename?: 'MangaMetaType', key: string, value: string }>, source?: { __typename?: 'SourceType', displayName: string, iconUrl: string, id: any, isConfigurable: boolean, isNsfw: boolean, lang: string, name: string, supportsLatest: boolean, extension: { __typename?: 'ExtensionType', pkgName: string, repo?: string | null } } | null } } }; export type SetMangaMetadataMutationVariables = Exact<{ input: SetMangaMetaInput; @@ -2628,14 +2888,14 @@ export type GetCategoryMangasQueryVariables = Exact<{ }>; -export type GetCategoryMangasQuery = { __typename?: 'Query', category: { __typename?: 'CategoryType', mangas: { __typename?: 'MangaNodeList', totalCount: number, nodes: Array<{ __typename?: 'MangaType', unreadCount: number, downloadCount: number, artist?: string | null, author?: string | null, chaptersLastFetchedAt?: any | null, description?: string | null, genre: Array, id: number, inLibrary: boolean, inLibraryAt: any, initialized: boolean, lastFetchedAt?: any | null, realUrl?: string | null, status: MangaStatus, thumbnailUrl?: string | null, title: string, url: string, lastReadChapter?: { __typename?: 'ChapterType', chapterNumber: number, fetchedAt: any, id: number, isBookmarked: boolean, isDownloaded: boolean, isRead: boolean, lastPageRead: number, lastReadAt: any, name: string, pageCount: number, realUrl?: string | null, scanlator?: string | null, sourceOrder: number, uploadDate: any, url: string, manga: { __typename?: 'MangaType', unreadCount: number, downloadCount: number, artist?: string | null, author?: string | null, chaptersLastFetchedAt?: any | null, description?: string | null, genre: Array, id: number, inLibrary: boolean, inLibraryAt: any, initialized: boolean, lastFetchedAt?: any | null, realUrl?: string | null, status: MangaStatus, thumbnailUrl?: string | null, title: string, url: string, categories: { __typename?: 'CategoryNodeList', totalCount: number, nodes: Array<{ __typename?: 'CategoryType', default: boolean, id: number, includeInUpdate: IncludeInUpdate, name: string, order: number, meta: Array<{ __typename?: 'CategoryMetaType', key: string, value: string }>, mangas: { __typename?: 'MangaNodeList', totalCount: number } }> }, chapters: { __typename?: 'ChapterNodeList', totalCount: number }, meta: Array<{ __typename?: 'MangaMetaType', key: string, value: string }>, source?: { __typename?: 'SourceType', displayName: string, iconUrl: string, id: any, isConfigurable: boolean, isNsfw: boolean, lang: string, name: string, supportsLatest: boolean, extension: { __typename?: 'ExtensionType', pkgName: string, repo?: string | null } } | null }, meta: Array<{ __typename?: 'ChapterMetaType', key: string, value: string }> } | null, categories: { __typename?: 'CategoryNodeList', totalCount: number, nodes: Array<{ __typename?: 'CategoryType', default: boolean, id: number, includeInUpdate: IncludeInUpdate, name: string, order: number, meta: Array<{ __typename?: 'CategoryMetaType', key: string, value: string }>, mangas: { __typename?: 'MangaNodeList', totalCount: number } }> }, chapters: { __typename?: 'ChapterNodeList', totalCount: number }, meta: Array<{ __typename?: 'MangaMetaType', key: string, value: string }>, source?: { __typename?: 'SourceType', displayName: string, iconUrl: string, id: any, isConfigurable: boolean, isNsfw: boolean, lang: string, name: string, supportsLatest: boolean, extension: { __typename?: 'ExtensionType', pkgName: string, repo?: string | null } } | null }>, pageInfo: { __typename?: 'PageInfo', endCursor?: any | null, hasNextPage: boolean, hasPreviousPage: boolean, startCursor?: any | null } } } }; +export type GetCategoryMangasQuery = { __typename?: 'Query', category: { __typename?: 'CategoryType', mangas: { __typename?: 'MangaNodeList', totalCount: number, nodes: Array<{ __typename?: 'MangaType', unreadCount: number, downloadCount: number, artist?: string | null, author?: string | null, chaptersLastFetchedAt?: any | null, description?: string | null, genre: Array, id: number, inLibrary: boolean, inLibraryAt: any, initialized: boolean, lastFetchedAt?: any | null, realUrl?: string | null, status: MangaStatus, thumbnailUrl?: string | null, title: string, url: string, lastReadChapter?: { __typename?: 'ChapterType', chapterNumber: number, fetchedAt: any, id: number, isBookmarked: boolean, isDownloaded: boolean, isRead: boolean, lastPageRead: number, lastReadAt: any, name: string, pageCount: number, realUrl?: string | null, scanlator?: string | null, sourceOrder: number, uploadDate: any, url: string, manga: { __typename?: 'MangaType', id: number, title: string, inLibrary: boolean, thumbnailUrl?: string | null }, meta: Array<{ __typename?: 'ChapterMetaType', key: string, value: string }> } | null, latestReadChapter?: { __typename?: 'ChapterType', chapterNumber: number, fetchedAt: any, id: number, isBookmarked: boolean, isDownloaded: boolean, isRead: boolean, lastPageRead: number, lastReadAt: any, name: string, pageCount: number, realUrl?: string | null, scanlator?: string | null, sourceOrder: number, uploadDate: any, url: string, manga: { __typename?: 'MangaType', id: number, title: string, inLibrary: boolean, thumbnailUrl?: string | null }, meta: Array<{ __typename?: 'ChapterMetaType', key: string, value: string }> } | null, latestFetchedChapter?: { __typename?: 'ChapterType', chapterNumber: number, fetchedAt: any, id: number, isBookmarked: boolean, isDownloaded: boolean, isRead: boolean, lastPageRead: number, lastReadAt: any, name: string, pageCount: number, realUrl?: string | null, scanlator?: string | null, sourceOrder: number, uploadDate: any, url: string, manga: { __typename?: 'MangaType', id: number, title: string, inLibrary: boolean, thumbnailUrl?: string | null }, meta: Array<{ __typename?: 'ChapterMetaType', key: string, value: string }> } | null, latestUploadedChapter?: { __typename?: 'ChapterType', chapterNumber: number, fetchedAt: any, id: number, isBookmarked: boolean, isDownloaded: boolean, isRead: boolean, lastPageRead: number, lastReadAt: any, name: string, pageCount: number, realUrl?: string | null, scanlator?: string | null, sourceOrder: number, uploadDate: any, url: string, manga: { __typename?: 'MangaType', id: number, title: string, inLibrary: boolean, thumbnailUrl?: string | null }, meta: Array<{ __typename?: 'ChapterMetaType', key: string, value: string }> } | null, categories: { __typename?: 'CategoryNodeList', totalCount: number, nodes: Array<{ __typename?: 'CategoryType', default: boolean, id: number, includeInUpdate: IncludeInUpdate, name: string, order: number, meta: Array<{ __typename?: 'CategoryMetaType', key: string, value: string }>, mangas: { __typename?: 'MangaNodeList', totalCount: number } }> }, chapters: { __typename?: 'ChapterNodeList', totalCount: number }, meta: Array<{ __typename?: 'MangaMetaType', key: string, value: string }>, source?: { __typename?: 'SourceType', displayName: string, iconUrl: string, id: any, isConfigurable: boolean, isNsfw: boolean, lang: string, name: string, supportsLatest: boolean, extension: { __typename?: 'ExtensionType', pkgName: string, repo?: string | null } } | null }>, pageInfo: { __typename?: 'PageInfo', endCursor?: any | null, hasNextPage: boolean, hasPreviousPage: boolean, startCursor?: any | null } } } }; export type GetChapterQueryVariables = Exact<{ id: Scalars['Int']['input']; }>; -export type GetChapterQuery = { __typename?: 'Query', chapter: { __typename?: 'ChapterType', chapterNumber: number, fetchedAt: any, id: number, isBookmarked: boolean, isDownloaded: boolean, isRead: boolean, lastPageRead: number, lastReadAt: any, name: string, pageCount: number, realUrl?: string | null, scanlator?: string | null, sourceOrder: number, uploadDate: any, url: string, manga: { __typename?: 'MangaType', unreadCount: number, downloadCount: number, artist?: string | null, author?: string | null, chaptersLastFetchedAt?: any | null, description?: string | null, genre: Array, id: number, inLibrary: boolean, inLibraryAt: any, initialized: boolean, lastFetchedAt?: any | null, realUrl?: string | null, status: MangaStatus, thumbnailUrl?: string | null, title: string, url: string, categories: { __typename?: 'CategoryNodeList', totalCount: number, nodes: Array<{ __typename?: 'CategoryType', default: boolean, id: number, includeInUpdate: IncludeInUpdate, name: string, order: number, meta: Array<{ __typename?: 'CategoryMetaType', key: string, value: string }>, mangas: { __typename?: 'MangaNodeList', totalCount: number } }> }, chapters: { __typename?: 'ChapterNodeList', totalCount: number }, meta: Array<{ __typename?: 'MangaMetaType', key: string, value: string }>, source?: { __typename?: 'SourceType', displayName: string, iconUrl: string, id: any, isConfigurable: boolean, isNsfw: boolean, lang: string, name: string, supportsLatest: boolean, extension: { __typename?: 'ExtensionType', pkgName: string, repo?: string | null } } | null }, meta: Array<{ __typename?: 'ChapterMetaType', key: string, value: string }> } }; +export type GetChapterQuery = { __typename?: 'Query', chapter: { __typename?: 'ChapterType', chapterNumber: number, fetchedAt: any, id: number, isBookmarked: boolean, isDownloaded: boolean, isRead: boolean, lastPageRead: number, lastReadAt: any, name: string, pageCount: number, realUrl?: string | null, scanlator?: string | null, sourceOrder: number, uploadDate: any, url: string, manga: { __typename?: 'MangaType', id: number, title: string, inLibrary: boolean, thumbnailUrl?: string | null }, meta: Array<{ __typename?: 'ChapterMetaType', key: string, value: string }> } }; export type GetChaptersQueryVariables = Exact<{ after?: InputMaybe; @@ -2650,7 +2910,7 @@ export type GetChaptersQueryVariables = Exact<{ }>; -export type GetChaptersQuery = { __typename?: 'Query', chapters: { __typename?: 'ChapterNodeList', totalCount: number, nodes: Array<{ __typename?: 'ChapterType', chapterNumber: number, fetchedAt: any, id: number, isBookmarked: boolean, isDownloaded: boolean, isRead: boolean, lastPageRead: number, lastReadAt: any, name: string, pageCount: number, realUrl?: string | null, scanlator?: string | null, sourceOrder: number, uploadDate: any, url: string, manga: { __typename?: 'MangaType', unreadCount: number, downloadCount: number, artist?: string | null, author?: string | null, chaptersLastFetchedAt?: any | null, description?: string | null, genre: Array, id: number, inLibrary: boolean, inLibraryAt: any, initialized: boolean, lastFetchedAt?: any | null, realUrl?: string | null, status: MangaStatus, thumbnailUrl?: string | null, title: string, url: string, categories: { __typename?: 'CategoryNodeList', totalCount: number, nodes: Array<{ __typename?: 'CategoryType', default: boolean, id: number, includeInUpdate: IncludeInUpdate, name: string, order: number, meta: Array<{ __typename?: 'CategoryMetaType', key: string, value: string }>, mangas: { __typename?: 'MangaNodeList', totalCount: number } }> }, chapters: { __typename?: 'ChapterNodeList', totalCount: number }, meta: Array<{ __typename?: 'MangaMetaType', key: string, value: string }>, source?: { __typename?: 'SourceType', displayName: string, iconUrl: string, id: any, isConfigurable: boolean, isNsfw: boolean, lang: string, name: string, supportsLatest: boolean, extension: { __typename?: 'ExtensionType', pkgName: string, repo?: string | null } } | null }, meta: Array<{ __typename?: 'ChapterMetaType', key: string, value: string }> }>, pageInfo: { __typename?: 'PageInfo', endCursor?: any | null, hasNextPage: boolean, hasPreviousPage: boolean, startCursor?: any | null } } }; +export type GetChaptersQuery = { __typename?: 'Query', chapters: { __typename?: 'ChapterNodeList', totalCount: number, nodes: Array<{ __typename?: 'ChapterType', chapterNumber: number, fetchedAt: any, id: number, isBookmarked: boolean, isDownloaded: boolean, isRead: boolean, lastPageRead: number, lastReadAt: any, name: string, pageCount: number, realUrl?: string | null, scanlator?: string | null, sourceOrder: number, uploadDate: any, url: string, manga: { __typename?: 'MangaType', id: number, title: string, inLibrary: boolean, thumbnailUrl?: string | null }, meta: Array<{ __typename?: 'ChapterMetaType', key: string, value: string }> }>, pageInfo: { __typename?: 'PageInfo', endCursor?: any | null, hasNextPage: boolean, hasPreviousPage: boolean, startCursor?: any | null } } }; export type GetMangasChapterIdsWithStateQueryVariables = Exact<{ mangaIds: Array | Scalars['Int']['input']; @@ -2716,7 +2976,7 @@ export type GetMangaQueryVariables = Exact<{ }>; -export type GetMangaQuery = { __typename?: 'Query', manga: { __typename?: 'MangaType', unreadCount: number, downloadCount: number, artist?: string | null, author?: string | null, chaptersLastFetchedAt?: any | null, description?: string | null, genre: Array, id: number, inLibrary: boolean, inLibraryAt: any, initialized: boolean, lastFetchedAt?: any | null, realUrl?: string | null, status: MangaStatus, thumbnailUrl?: string | null, title: string, url: string, lastReadChapter?: { __typename?: 'ChapterType', chapterNumber: number, fetchedAt: any, id: number, isBookmarked: boolean, isDownloaded: boolean, isRead: boolean, lastPageRead: number, lastReadAt: any, name: string, pageCount: number, realUrl?: string | null, scanlator?: string | null, sourceOrder: number, uploadDate: any, url: string, manga: { __typename?: 'MangaType', unreadCount: number, downloadCount: number, artist?: string | null, author?: string | null, chaptersLastFetchedAt?: any | null, description?: string | null, genre: Array, id: number, inLibrary: boolean, inLibraryAt: any, initialized: boolean, lastFetchedAt?: any | null, realUrl?: string | null, status: MangaStatus, thumbnailUrl?: string | null, title: string, url: string, categories: { __typename?: 'CategoryNodeList', totalCount: number, nodes: Array<{ __typename?: 'CategoryType', default: boolean, id: number, includeInUpdate: IncludeInUpdate, name: string, order: number, meta: Array<{ __typename?: 'CategoryMetaType', key: string, value: string }>, mangas: { __typename?: 'MangaNodeList', totalCount: number } }> }, chapters: { __typename?: 'ChapterNodeList', totalCount: number }, meta: Array<{ __typename?: 'MangaMetaType', key: string, value: string }>, source?: { __typename?: 'SourceType', displayName: string, iconUrl: string, id: any, isConfigurable: boolean, isNsfw: boolean, lang: string, name: string, supportsLatest: boolean, extension: { __typename?: 'ExtensionType', pkgName: string, repo?: string | null } } | null }, meta: Array<{ __typename?: 'ChapterMetaType', key: string, value: string }> } | null, categories: { __typename?: 'CategoryNodeList', totalCount: number, nodes: Array<{ __typename?: 'CategoryType', default: boolean, id: number, includeInUpdate: IncludeInUpdate, name: string, order: number, meta: Array<{ __typename?: 'CategoryMetaType', key: string, value: string }>, mangas: { __typename?: 'MangaNodeList', totalCount: number } }> }, chapters: { __typename?: 'ChapterNodeList', totalCount: number }, meta: Array<{ __typename?: 'MangaMetaType', key: string, value: string }>, source?: { __typename?: 'SourceType', displayName: string, iconUrl: string, id: any, isConfigurable: boolean, isNsfw: boolean, lang: string, name: string, supportsLatest: boolean, extension: { __typename?: 'ExtensionType', pkgName: string, repo?: string | null } } | null } }; +export type GetMangaQuery = { __typename?: 'Query', manga: { __typename?: 'MangaType', unreadCount: number, downloadCount: number, artist?: string | null, author?: string | null, chaptersLastFetchedAt?: any | null, description?: string | null, genre: Array, id: number, inLibrary: boolean, inLibraryAt: any, initialized: boolean, lastFetchedAt?: any | null, realUrl?: string | null, status: MangaStatus, thumbnailUrl?: string | null, title: string, url: string, lastReadChapter?: { __typename?: 'ChapterType', chapterNumber: number, fetchedAt: any, id: number, isBookmarked: boolean, isDownloaded: boolean, isRead: boolean, lastPageRead: number, lastReadAt: any, name: string, pageCount: number, realUrl?: string | null, scanlator?: string | null, sourceOrder: number, uploadDate: any, url: string, manga: { __typename?: 'MangaType', id: number, title: string, inLibrary: boolean, thumbnailUrl?: string | null }, meta: Array<{ __typename?: 'ChapterMetaType', key: string, value: string }> } | null, latestReadChapter?: { __typename?: 'ChapterType', chapterNumber: number, fetchedAt: any, id: number, isBookmarked: boolean, isDownloaded: boolean, isRead: boolean, lastPageRead: number, lastReadAt: any, name: string, pageCount: number, realUrl?: string | null, scanlator?: string | null, sourceOrder: number, uploadDate: any, url: string, manga: { __typename?: 'MangaType', id: number, title: string, inLibrary: boolean, thumbnailUrl?: string | null }, meta: Array<{ __typename?: 'ChapterMetaType', key: string, value: string }> } | null, latestFetchedChapter?: { __typename?: 'ChapterType', chapterNumber: number, fetchedAt: any, id: number, isBookmarked: boolean, isDownloaded: boolean, isRead: boolean, lastPageRead: number, lastReadAt: any, name: string, pageCount: number, realUrl?: string | null, scanlator?: string | null, sourceOrder: number, uploadDate: any, url: string, manga: { __typename?: 'MangaType', id: number, title: string, inLibrary: boolean, thumbnailUrl?: string | null }, meta: Array<{ __typename?: 'ChapterMetaType', key: string, value: string }> } | null, latestUploadedChapter?: { __typename?: 'ChapterType', chapterNumber: number, fetchedAt: any, id: number, isBookmarked: boolean, isDownloaded: boolean, isRead: boolean, lastPageRead: number, lastReadAt: any, name: string, pageCount: number, realUrl?: string | null, scanlator?: string | null, sourceOrder: number, uploadDate: any, url: string, manga: { __typename?: 'MangaType', id: number, title: string, inLibrary: boolean, thumbnailUrl?: string | null }, meta: Array<{ __typename?: 'ChapterMetaType', key: string, value: string }> } | null, categories: { __typename?: 'CategoryNodeList', totalCount: number, nodes: Array<{ __typename?: 'CategoryType', default: boolean, id: number, includeInUpdate: IncludeInUpdate, name: string, order: number, meta: Array<{ __typename?: 'CategoryMetaType', key: string, value: string }>, mangas: { __typename?: 'MangaNodeList', totalCount: number } }> }, chapters: { __typename?: 'ChapterNodeList', totalCount: number }, meta: Array<{ __typename?: 'MangaMetaType', key: string, value: string }>, source?: { __typename?: 'SourceType', displayName: string, iconUrl: string, id: any, isConfigurable: boolean, isNsfw: boolean, lang: string, name: string, supportsLatest: boolean, extension: { __typename?: 'ExtensionType', pkgName: string, repo?: string | null } } | null } }; export type GetMangasQueryVariables = Exact<{ after?: InputMaybe; @@ -2731,7 +2991,7 @@ export type GetMangasQueryVariables = Exact<{ }>; -export type GetMangasQuery = { __typename?: 'Query', mangas: { __typename?: 'MangaNodeList', totalCount: number, nodes: Array<{ __typename?: 'MangaType', unreadCount: number, downloadCount: number, artist?: string | null, author?: string | null, chaptersLastFetchedAt?: any | null, description?: string | null, genre: Array, id: number, inLibrary: boolean, inLibraryAt: any, initialized: boolean, lastFetchedAt?: any | null, realUrl?: string | null, status: MangaStatus, thumbnailUrl?: string | null, title: string, url: string, lastReadChapter?: { __typename?: 'ChapterType', chapterNumber: number, fetchedAt: any, id: number, isBookmarked: boolean, isDownloaded: boolean, isRead: boolean, lastPageRead: number, lastReadAt: any, name: string, pageCount: number, realUrl?: string | null, scanlator?: string | null, sourceOrder: number, uploadDate: any, url: string, manga: { __typename?: 'MangaType', unreadCount: number, downloadCount: number, artist?: string | null, author?: string | null, chaptersLastFetchedAt?: any | null, description?: string | null, genre: Array, id: number, inLibrary: boolean, inLibraryAt: any, initialized: boolean, lastFetchedAt?: any | null, realUrl?: string | null, status: MangaStatus, thumbnailUrl?: string | null, title: string, url: string, categories: { __typename?: 'CategoryNodeList', totalCount: number, nodes: Array<{ __typename?: 'CategoryType', default: boolean, id: number, includeInUpdate: IncludeInUpdate, name: string, order: number, meta: Array<{ __typename?: 'CategoryMetaType', key: string, value: string }>, mangas: { __typename?: 'MangaNodeList', totalCount: number } }> }, chapters: { __typename?: 'ChapterNodeList', totalCount: number }, meta: Array<{ __typename?: 'MangaMetaType', key: string, value: string }>, source?: { __typename?: 'SourceType', displayName: string, iconUrl: string, id: any, isConfigurable: boolean, isNsfw: boolean, lang: string, name: string, supportsLatest: boolean, extension: { __typename?: 'ExtensionType', pkgName: string, repo?: string | null } } | null }, meta: Array<{ __typename?: 'ChapterMetaType', key: string, value: string }> } | null, categories: { __typename?: 'CategoryNodeList', totalCount: number, nodes: Array<{ __typename?: 'CategoryType', default: boolean, id: number, includeInUpdate: IncludeInUpdate, name: string, order: number, meta: Array<{ __typename?: 'CategoryMetaType', key: string, value: string }>, mangas: { __typename?: 'MangaNodeList', totalCount: number } }> }, chapters: { __typename?: 'ChapterNodeList', totalCount: number }, meta: Array<{ __typename?: 'MangaMetaType', key: string, value: string }>, source?: { __typename?: 'SourceType', displayName: string, iconUrl: string, id: any, isConfigurable: boolean, isNsfw: boolean, lang: string, name: string, supportsLatest: boolean, extension: { __typename?: 'ExtensionType', pkgName: string, repo?: string | null } } | null }>, pageInfo: { __typename?: 'PageInfo', endCursor?: any | null, hasNextPage: boolean, hasPreviousPage: boolean, startCursor?: any | null } } }; +export type GetMangasQuery = { __typename?: 'Query', mangas: { __typename?: 'MangaNodeList', totalCount: number, nodes: Array<{ __typename?: 'MangaType', unreadCount: number, downloadCount: number, artist?: string | null, author?: string | null, chaptersLastFetchedAt?: any | null, description?: string | null, genre: Array, id: number, inLibrary: boolean, inLibraryAt: any, initialized: boolean, lastFetchedAt?: any | null, realUrl?: string | null, status: MangaStatus, thumbnailUrl?: string | null, title: string, url: string, lastReadChapter?: { __typename?: 'ChapterType', chapterNumber: number, fetchedAt: any, id: number, isBookmarked: boolean, isDownloaded: boolean, isRead: boolean, lastPageRead: number, lastReadAt: any, name: string, pageCount: number, realUrl?: string | null, scanlator?: string | null, sourceOrder: number, uploadDate: any, url: string, manga: { __typename?: 'MangaType', id: number, title: string, inLibrary: boolean, thumbnailUrl?: string | null }, meta: Array<{ __typename?: 'ChapterMetaType', key: string, value: string }> } | null, latestReadChapter?: { __typename?: 'ChapterType', chapterNumber: number, fetchedAt: any, id: number, isBookmarked: boolean, isDownloaded: boolean, isRead: boolean, lastPageRead: number, lastReadAt: any, name: string, pageCount: number, realUrl?: string | null, scanlator?: string | null, sourceOrder: number, uploadDate: any, url: string, manga: { __typename?: 'MangaType', id: number, title: string, inLibrary: boolean, thumbnailUrl?: string | null }, meta: Array<{ __typename?: 'ChapterMetaType', key: string, value: string }> } | null, latestFetchedChapter?: { __typename?: 'ChapterType', chapterNumber: number, fetchedAt: any, id: number, isBookmarked: boolean, isDownloaded: boolean, isRead: boolean, lastPageRead: number, lastReadAt: any, name: string, pageCount: number, realUrl?: string | null, scanlator?: string | null, sourceOrder: number, uploadDate: any, url: string, manga: { __typename?: 'MangaType', id: number, title: string, inLibrary: boolean, thumbnailUrl?: string | null }, meta: Array<{ __typename?: 'ChapterMetaType', key: string, value: string }> } | null, latestUploadedChapter?: { __typename?: 'ChapterType', chapterNumber: number, fetchedAt: any, id: number, isBookmarked: boolean, isDownloaded: boolean, isRead: boolean, lastPageRead: number, lastReadAt: any, name: string, pageCount: number, realUrl?: string | null, scanlator?: string | null, sourceOrder: number, uploadDate: any, url: string, manga: { __typename?: 'MangaType', id: number, title: string, inLibrary: boolean, thumbnailUrl?: string | null }, meta: Array<{ __typename?: 'ChapterMetaType', key: string, value: string }> } | null, categories: { __typename?: 'CategoryNodeList', totalCount: number, nodes: Array<{ __typename?: 'CategoryType', default: boolean, id: number, includeInUpdate: IncludeInUpdate, name: string, order: number, meta: Array<{ __typename?: 'CategoryMetaType', key: string, value: string }>, mangas: { __typename?: 'MangaNodeList', totalCount: number } }> }, chapters: { __typename?: 'ChapterNodeList', totalCount: number }, meta: Array<{ __typename?: 'MangaMetaType', key: string, value: string }>, source?: { __typename?: 'SourceType', displayName: string, iconUrl: string, id: any, isConfigurable: boolean, isNsfw: boolean, lang: string, name: string, supportsLatest: boolean, extension: { __typename?: 'ExtensionType', pkgName: string, repo?: string | null } } | null }>, pageInfo: { __typename?: 'PageInfo', endCursor?: any | null, hasNextPage: boolean, hasPreviousPage: boolean, startCursor?: any | null } } }; export type GetAboutQueryVariables = Exact<{ [key: string]: never; }>; diff --git a/src/lib/graphql/mutations/ChapterMutation.ts b/src/lib/graphql/mutations/ChapterMutation.ts index e4a9fb77..a82a2939 100644 --- a/src/lib/graphql/mutations/ChapterMutation.ts +++ b/src/lib/graphql/mutations/ChapterMutation.ts @@ -107,6 +107,9 @@ export const UPDATE_CHAPTER = gql` lastReadChapter { id } + latestReadChapter { + id + } } } } @@ -136,7 +139,7 @@ export const UPDATE_CHAPTERS = gql` $chapterIdsToDelete: [Int!]! $deleteChapters: Boolean! $mangaIds: [Int!]! - $lastReadChapterIds: [Int!]! + $latestReadChapterIds: [Int!]! $downloadAhead: Boolean! ) { updateChapters(input: $input) { @@ -153,6 +156,9 @@ export const UPDATE_CHAPTERS = gql` lastReadChapter { id } + latestReadChapter { + id + } } } } @@ -167,7 +173,7 @@ export const UPDATE_CHAPTERS = gql` } } } - downloadAhead(input: { mangaIds: $mangaIds, latestReadChapterIds: $lastReadChapterIds }) + downloadAhead(input: { mangaIds: $mangaIds, latestReadChapterIds: $latestReadChapterIds }) @include(if: $downloadAhead) { clientMutationId } diff --git a/src/lib/requests/RequestManager.ts b/src/lib/requests/RequestManager.ts index fc719491..d9c06693 100644 --- a/src/lib/requests/RequestManager.ts +++ b/src/lib/requests/RequestManager.ts @@ -1684,7 +1684,7 @@ export class RequestManager { deleteChapters: !!chapterIdsToDelete.length, mangaIds, downloadAhead, - lastReadChapterIds: downloadAhead ? ids : [], + latestReadChapterIds: downloadAhead ? ids : [], }, options, ); diff --git a/tools/scripts/codegenFormatter.ts b/tools/scripts/codegenFormatter.ts index 7f749ac6..4607bb3f 100644 --- a/tools/scripts/codegenFormatter.ts +++ b/tools/scripts/codegenFormatter.ts @@ -81,14 +81,20 @@ const fixTypingOfQueryTypePolicies = format( \tmeta?: FieldPolicy | FieldReadFunction, \tmetas?: FieldPolicy | FieldReadFunction, \trestoreStatus?: FieldPolicy | FieldReadFunction, +\tsearchTracker?: FieldPolicy | FieldReadFunction, \tsettings?: FieldPolicy | FieldReadFunction, \tsource?: FieldPolicy | FieldReadFunction, \tsources?: FieldPolicy | FieldReadFunction, +\ttrackRecord?: FieldPolicy | FieldReadFunction, +\ttrackRecords?: FieldPolicy | FieldReadFunction, +\ttracker?: FieldPolicy | FieldReadFunction, +\ttrackers?: FieldPolicy | FieldReadFunction, \tupdateStatus?: FieldPolicy | FieldReadFunction, \tvalidateBackup?: FieldPolicy | FieldReadFunction };`, `export type QueryFieldPolicy = { -\tabout?: FieldPolicy | FieldReadFunction, +\taboutServer?: FieldPolicy | FieldReadFunction, +\taboutWebUI?: FieldPolicy | FieldReadFunction, \tcategories?: FieldPolicy | FieldReadFunction, \tcategory?: FieldPolicy> | FieldReadFunction>, \tchapter?: FieldPolicy> | FieldReadFunction>, @@ -105,9 +111,14 @@ const fixTypingOfQueryTypePolicies = format( \tmeta?: FieldPolicy> | FieldReadFunction>, \tmetas?: FieldPolicy | FieldReadFunction, \trestoreStatus?: FieldPolicy | FieldReadFunction, +\tsearchTracker?: FieldPolicy | FieldReadFunction, \tsettings?: FieldPolicy | FieldReadFunction, \tsource?: FieldPolicy> | FieldReadFunction>, \tsources?: FieldPolicy | FieldReadFunction, +\ttrackRecord?: FieldPolicy | FieldReadFunction, +\ttrackRecords?: FieldPolicy | FieldReadFunction, +\ttracker?: FieldPolicy | FieldReadFunction, +\ttrackers?: FieldPolicy | FieldReadFunction, \tupdateStatus?: FieldPolicy> | FieldReadFunction>, \tvalidateBackup?: FieldPolicy | FieldReadFunction };`, diff --git a/versionToServerVersionMapping.json b/versionToServerVersionMapping.json index 91fbdf0d..22cd4403 100644 --- a/versionToServerVersionMapping.json +++ b/versionToServerVersionMapping.json @@ -1,6 +1,6 @@ [ { "uiVersion": "PREVIEW", - "serverVersion": "r1444" + "serverVersion": "r1453" } ]