diff --git a/src/lib/requests/RequestManager.ts b/src/lib/requests/RequestManager.ts index fa96b5ee..ab567551 100644 --- a/src/lib/requests/RequestManager.ts +++ b/src/lib/requests/RequestManager.ts @@ -102,6 +102,7 @@ import { SetGlobalMetadataMutation, SetGlobalMetadataMutationVariables, SetMangaMetadataMutation, + SetMangaMetadataMutationVariables, SortOrder, SourcePreferenceChangeInput, StartDownloaderMutation, @@ -781,12 +782,16 @@ export class RequestManager { return this.doRequestNew(GQLMethod.USE_QUERY, GET_GLOBAL_METADATAS, {}, options); } - public setGlobalMetadata(key: string, value: any): AbortableApolloMutationResponse { + public setGlobalMetadata( + key: string, + value: any, + options?: MutationOptions, + ): AbortableApolloMutationResponse { return this.doRequestNew( GQLMethod.MUTATION, SET_GLOBAL_METADATA, { input: { meta: { key, value: `${value}` } } }, - { refetchQueries: [GET_GLOBAL_METADATA, GET_GLOBAL_METADATAS] }, + { refetchQueries: [GET_GLOBAL_METADATA, GET_GLOBAL_METADATAS], ...options }, ); } @@ -816,24 +821,26 @@ export class RequestManager { public installExternalExtension( extensionFile: File, + options?: MutationOptions, ): AbortableApolloMutationResponse { return this.doRequestNew( GQLMethod.MUTATION, INSTALL_EXTERNAL_EXTENSION, { file: extensionFile }, - { refetchQueries: [GET_EXTENSION, GET_EXTENSIONS] }, + { refetchQueries: [GET_EXTENSION, GET_EXTENSIONS], ...options }, ); } public updateExtension( id: string, patch: UpdateExtensionPatchInput, + options?: MutationOptions, ): AbortableApolloMutationResponse { return this.doRequestNew( GQLMethod.MUTATION, UPDATE_EXTENSION, { input: { id, patch } }, - { refetchQueries: [GET_EXTENSION, GET_EXTENSIONS, GET_SOURCES] }, + { refetchQueries: [GET_EXTENSION, GET_EXTENSIONS, GET_SOURCES], ...options }, ); } @@ -1160,6 +1167,7 @@ export class RequestManager { mangaId: number, key: string, value: any, + options?: MutationOptions, ): AbortableApolloMutationResponse { return this.doRequestNew( GQLMethod.MUTATION, @@ -1167,7 +1175,7 @@ export class RequestManager { { input: { meta: { mangaId, key, value: `${value}` } }, }, - { refetchQueries: [GET_MANGA, GET_MANGAS, GET_CATEGORY_MANGAS, GET_SOURCE_MANGAS_FETCH] }, + { refetchQueries: [GET_MANGA, GET_MANGAS, GET_CATEGORY_MANGAS, GET_SOURCE_MANGAS_FETCH], ...options }, ); } @@ -1237,6 +1245,7 @@ export class RequestManager { public getChapter( mangaId: number | string, chapterIndex: number | string, + options?: QueryOptions, ): AbortabaleApolloQueryResponse< Omit & { chapter: GetChaptersQuery['chapters']['nodes'][number] } > { @@ -1250,6 +1259,7 @@ export class RequestManager { { condition: { mangaId: Number(mangaId), sourceOrder: Number(chapterIndex) }, }, + options, ); return { @@ -1283,33 +1293,40 @@ export class RequestManager { ); } - public deleteDownloadedChapter(id: number): AbortableApolloMutationResponse { + public deleteDownloadedChapter( + id: number, + options?: MutationOptions, + ): AbortableApolloMutationResponse { return this.doRequestNew( GQLMethod.MUTATION, DELETE_DOWNLOADED_CHAPTER, { input: { id } }, - { refetchQueries: [GET_MANGA, GET_MANGAS, GET_CATEGORY_MANGAS, GET_CHAPTERS] }, + { refetchQueries: [GET_MANGA, GET_MANGAS, GET_CATEGORY_MANGAS, GET_CHAPTERS], ...options }, ); } - public deleteDownloadedChapters(ids: number[]): AbortableApolloMutationResponse { + public deleteDownloadedChapters( + ids: number[], + options?: MutationOptions, + ): AbortableApolloMutationResponse { return this.doRequestNew( GQLMethod.MUTATION, DELETE_DOWNLOADED_CHAPTERS, { input: { ids } }, - { refetchQueries: [GET_MANGA, GET_MANGAS, GET_CATEGORY_MANGAS, GET_CHAPTERS] }, + { refetchQueries: [GET_MANGA, GET_MANGAS, GET_CATEGORY_MANGAS, GET_CHAPTERS], ...options }, ); } public updateChapter( id: number, patch: UpdateChapterPatchInput, + options?: MutationOptions, ): AbortableApolloMutationResponse { return this.doRequestNew( GQLMethod.MUTATION, UPDATE_CHAPTER, { input: { id, patch } }, - { refetchQueries: [GET_MANGA, GET_MANGAS, GET_CATEGORY_MANGAS, GET_CHAPTER, GET_CHAPTERS] }, + { refetchQueries: [GET_MANGA, GET_MANGAS, GET_CATEGORY_MANGAS, GET_CHAPTER, GET_CHAPTERS], ...options }, ); } @@ -1317,12 +1334,13 @@ export class RequestManager { chapterId: number, key: string, value: any, + options?: MutationOptions, ): AbortableApolloMutationResponse { return this.doRequestNew( GQLMethod.MUTATION, SET_CHAPTER_METADATA, { input: { meta: { chapterId, key, value: `${value}` } } }, - { refetchQueries: [GET_CHAPTER, GET_CHAPTERS] }, + { refetchQueries: [GET_CHAPTER, GET_CHAPTERS], ...options }, ); } @@ -1336,36 +1354,51 @@ export class RequestManager { public updateChapters( ids: number[], patch: UpdateChapterPatchInput, + options?: MutationOptions, ): AbortableApolloMutationResponse { return this.doRequestNew( GQLMethod.MUTATION, UPDATE_CHAPTERS, { input: { ids, patch } }, - { refetchQueries: [GET_MANGA, GET_MANGAS, GET_CATEGORY_MANGAS, GET_CHAPTER, GET_CHAPTERS] }, + { refetchQueries: [GET_MANGA, GET_MANGAS, GET_CATEGORY_MANGAS, GET_CHAPTER, GET_CHAPTERS], ...options }, ); } - public useGetCategories(): AbortableApolloUseQueryResponse { - return this.doRequestNew(GQLMethod.USE_QUERY, GET_CATEGORIES, { - orderBy: CategoryOrderBy.Order, - }); + public useGetCategories( + options?: QueryHookOptions, + ): AbortableApolloUseQueryResponse { + return this.doRequestNew( + GQLMethod.USE_QUERY, + GET_CATEGORIES, + { + orderBy: CategoryOrderBy.Order, + }, + options, + ); } - public createCategory(input: CreateCategoryInput): AbortableApolloMutationResponse { + public createCategory( + input: CreateCategoryInput, + options?: MutationOptions, + ): AbortableApolloMutationResponse { return this.doRequestNew( GQLMethod.MUTATION, CREATE_CATEGORY, { input }, - { refetchQueries: [GET_CATEGORIES] }, + { refetchQueries: [GET_CATEGORIES], ...options }, ); } - public reorderCategory(id: number, position: number): AbortableApolloMutationResponse { + public reorderCategory( + id: number, + position: number, + options?: MutationOptions, + ): AbortableApolloMutationResponse { return this.doRequestNew( GQLMethod.MUTATION, UPDATE_CATEGORY_ORDER, { input: { id, position } }, - { refetchQueries: [GET_CATEGORIES] }, + { refetchQueries: [GET_CATEGORIES], ...options }, ); } @@ -1376,24 +1409,28 @@ export class RequestManager { return this.doRequestNew(GQLMethod.USE_QUERY, GET_CATEGORY_MANGAS, { id }, options); } - public deleteCategory(categoryId: number): AbortableApolloMutationResponse { + public deleteCategory( + categoryId: number, + options?: MutationOptions, + ): AbortableApolloMutationResponse { return this.doRequestNew( GQLMethod.MUTATION, DELETE_CATEGORY, { input: { categoryId } }, - { refetchQueries: [GET_MANGA, GET_MANGAS, GET_CATEGORIES] }, + { refetchQueries: [GET_MANGA, GET_MANGAS, GET_CATEGORIES], ...options }, ); } public updateCategory( id: number, patch: UpdateCategoryPatchInput, + options?: MutationOptions, ): AbortableApolloMutationResponse { return this.doRequestNew( GQLMethod.MUTATION, UPDATE_CATEGORY, { input: { id, patch } }, - { refetchQueries: [GET_CATEGORY, GET_CATEGORIES] }, + { refetchQueries: [GET_CATEGORY, GET_CATEGORIES], ...options }, ); } @@ -1401,12 +1438,13 @@ export class RequestManager { categoryId: number, key: string, value: any, + options?: MutationOptions, ): AbortableApolloMutationResponse { return this.doRequestNew( GQLMethod.MUTATION, SET_CATEGORY_METADATA, { input: { meta: { categoryId, key, value: `${value}` } } }, - { refetchQueries: [GET_MANGA, GET_MANGAS, GET_CATEGORY, GET_CATEGORIES] }, + { refetchQueries: [GET_MANGA, GET_MANGAS, GET_CATEGORY, GET_CATEGORIES], ...options }, ); } @@ -1433,78 +1471,97 @@ export class RequestManager { return this.getValidUrlFor('backup/export/file'); } - public startDownloads(): AbortableApolloMutationResponse { + public startDownloads( + options?: MutationOptions, + ): AbortableApolloMutationResponse { return this.doRequestNew( GQLMethod.MUTATION, START_DOWNLOADER, {}, + options, ); } - public stopDownloads(): AbortableApolloMutationResponse { + public stopDownloads( + options?: MutationOptions, + ): AbortableApolloMutationResponse { return this.doRequestNew( GQLMethod.MUTATION, STOP_DOWNLOADER, {}, + options, ); } - public clearDownloads(): AbortableApolloMutationResponse { + public clearDownloads( + options?: MutationOptions, + ): AbortableApolloMutationResponse { return this.doRequestNew( GQLMethod.MUTATION, CLEAR_DOWNLOADER, {}, - { refetchQueries: [GET_DOWNLOAD_STATUS] }, + { refetchQueries: [GET_DOWNLOAD_STATUS], ...options }, ); } - public addChapterToDownloadQueue(id: number): AbortableApolloMutationResponse { + public addChapterToDownloadQueue( + id: number, + options?: MutationOptions, + ): AbortableApolloMutationResponse { return this.doRequestNew( GQLMethod.MUTATION, ENQUEUE_CHAPTER_DOWNLOAD, { input: { id } }, - { refetchQueries: [GET_DOWNLOAD_STATUS] }, + { refetchQueries: [GET_DOWNLOAD_STATUS], ...options }, ); } - public removeChapterFromDownloadQueue(id: number): AbortableApolloMutationResponse { + public removeChapterFromDownloadQueue( + id: number, + options?: MutationOptions, + ): AbortableApolloMutationResponse { return this.doRequestNew( GQLMethod.MUTATION, DEQUEUE_CHAPTER_DOWNLOAD, { input: { id } }, - { refetchQueries: [GET_DOWNLOAD_STATUS] }, + { refetchQueries: [GET_DOWNLOAD_STATUS], ...options }, ); } public reorderChapterInDownloadQueue( chapterId: number, position: number, + options?: MutationOptions, ): AbortableApolloMutationResponse { return this.doRequestNew( GQLMethod.MUTATION, REORDER_CHAPTER_DOWNLOAD, { input: { chapterId, to: position } }, - { refetchQueries: [GET_DOWNLOAD_STATUS] }, + { refetchQueries: [GET_DOWNLOAD_STATUS], ...options }, ); } - public addChaptersToDownloadQueue(ids: number[]): AbortableApolloMutationResponse { + public addChaptersToDownloadQueue( + ids: number[], + options?: MutationOptions, + ): AbortableApolloMutationResponse { return this.doRequestNew( GQLMethod.MUTATION, ENQUEUE_CHAPTER_DOWNLOADS, { input: { ids } }, - { refetchQueries: [GET_DOWNLOAD_STATUS] }, + { refetchQueries: [GET_DOWNLOAD_STATUS], ...options }, ); } public removeChaptersFromDownloadQueue( ids: number[], + options?: MutationOptions, ): AbortableApolloMutationResponse { return this.doRequestNew( GQLMethod.MUTATION, DEQUEUE_CHAPTER_DOWNLOADS, { input: { ids } }, - { refetchQueries: [GET_DOWNLOAD_STATUS] }, + { refetchQueries: [GET_DOWNLOAD_STATUS], ...options }, ); } @@ -1541,33 +1598,45 @@ export class RequestManager { } as typeof result; } - public startGlobalUpdate(): AbortableApolloMutationResponse; - - public startGlobalUpdate(categories: number[]): AbortableApolloMutationResponse; + public startGlobalUpdate( + categories?: undefined, + options?: MutationOptions, + ): AbortableApolloMutationResponse; public startGlobalUpdate( - categories?: number[], - ): AbortableApolloMutationResponse { + categories: number[], + options?: MutationOptions, + ): AbortableApolloMutationResponse; + + public startGlobalUpdate< + Data extends UpdateLibraryMangasMutation | UpdateCategoryMangasMutation, + Variables extends UpdateLibraryMangasMutationVariables | UpdateCategoryMangasMutationVariables, + >(categories?: number[], options?: MutationOptions): AbortableApolloMutationResponse { if (categories?.length) { return this.doRequestNew( GQLMethod.MUTATION, UPDATE_CATEGORY_MANGAS, { input: { categories } }, - ); + options as MutationOptions, + ) as AbortableApolloMutationResponse; } return this.doRequestNew( GQLMethod.MUTATION, UPDATE_LIBRARY_MANGAS, {}, - ); + options as MutationOptions, + ) as AbortableApolloMutationResponse; } - public resetGlobalUpdate(): AbortableApolloMutationResponse { + public resetGlobalUpdate( + options?: MutationOptions, + ): AbortableApolloMutationResponse { return this.doRequestNew( GQLMethod.MUTATION, STOP_UPDATER, {}, + options, ); }