Fix typing after "apollo-client" update to v3.12.4

This commit is contained in:
schroda
2024-12-24 00:28:37 +01:00
parent 67de6c4789
commit 89cab26f73
3 changed files with 16 additions and 14 deletions

View File

@@ -25,7 +25,7 @@ import {
useQuery, useQuery,
useSubscription, useSubscription,
} from '@apollo/client'; } from '@apollo/client';
import { OperationVariables, Reference } from '@apollo/client/core'; import { MaybeMasked, OperationVariables, Reference } from '@apollo/client/core';
import { useEffect, useMemo, useRef, useState } from 'react'; import { useEffect, useMemo, useRef, useState } from 'react';
import { IRestClient, RestClient } from '@/lib/requests/client/RestClient.ts'; import { IRestClient, RestClient } from '@/lib/requests/client/RestClient.ts';
import { GraphQLClient } from '@/lib/requests/client/GraphQLClient.ts'; import { GraphQLClient } from '@/lib/requests/client/GraphQLClient.ts';
@@ -380,12 +380,12 @@ type AbortableRequest = { abortRequest: AbortController['abort'] };
type ImageRequest = { response: Promise<string>; cleanup: () => void } & AbortableRequest; type ImageRequest = { response: Promise<string>; cleanup: () => void } & AbortableRequest;
export type AbortabaleApolloQueryResponse<Data = any> = { export type AbortabaleApolloQueryResponse<Data = any> = {
response: Promise<ApolloQueryResult<Data>>; response: Promise<ApolloQueryResult<MaybeMasked<Data>>>;
} & AbortableRequest; } & AbortableRequest;
export type AbortableApolloUseQueryResponse< export type AbortableApolloUseQueryResponse<
Data = any, Data = any,
Variables extends OperationVariables = OperationVariables, Variables extends OperationVariables = OperationVariables,
> = QueryResult<Data, Variables> & AbortableRequest; > = QueryResult<MaybeMasked<Data>, Variables> & AbortableRequest;
export type AbortableApolloUseMutationResponse< export type AbortableApolloUseMutationResponse<
Data = any, Data = any,
Variables extends OperationVariables = OperationVariables, Variables extends OperationVariables = OperationVariables,
@@ -394,7 +394,7 @@ export type AbortableApolloUseMutationPaginatedResponse<
Data = any, Data = any,
Variables extends OperationVariables = OperationVariables, Variables extends OperationVariables = OperationVariables,
> = [ > = [
(page: number) => Promise<FetchResult<Data>>, (page: number) => Promise<FetchResult<MaybeMasked<Data>>>,
(Omit<MutationTuple<Data, Variables>[1], 'loading'> & (Omit<MutationTuple<Data, Variables>[1], 'loading'> &
AbortableRequest & { AbortableRequest & {
size: number; size: number;
@@ -413,7 +413,9 @@ export type AbortableApolloUseMutationPaginatedResponse<
isValidating: boolean; isValidating: boolean;
})[], })[],
]; ];
export type AbortableApolloMutationResponse<Data = any> = { response: Promise<FetchResult<Data>> } & AbortableRequest; export type AbortableApolloMutationResponse<Data = any> = {
response: Promise<FetchResult<MaybeMasked<Data>>>;
} & AbortableRequest;
const EXTENSION_LIST_CACHE_KEY = 'useExtensionListFetch'; const EXTENSION_LIST_CACHE_KEY = 'useExtensionListFetch';
@@ -517,9 +519,9 @@ export class RequestManager {
options: ApolloPaginatedMutationOptions<Data, Variables> | undefined, options: ApolloPaginatedMutationOptions<Data, Variables> | undefined,
checkIfCachedPageIsInvalid: ( checkIfCachedPageIsInvalid: (
cachedResult: AbortableApolloUseMutationPaginatedResponse<Data, Variables>[1][number] | undefined, cachedResult: AbortableApolloUseMutationPaginatedResponse<Data, Variables>[1][number] | undefined,
revalidatedResult: FetchResult<Data>, revalidatedResult: FetchResult<MaybeMasked<Data>>,
) => boolean, ) => boolean,
hasNextPage: (revalidatedResult: FetchResult<Data>) => boolean, hasNextPage: (revalidatedResult: FetchResult<MaybeMasked<Data>>) => boolean,
pageToRevalidate: number, pageToRevalidate: number,
maxPage: number, maxPage: number,
signal: AbortSignal, signal: AbortSignal,
@@ -656,7 +658,7 @@ export class RequestManager {
cacheResultsKey: string, cacheResultsKey: string,
cachedPages: Set<number>, cachedPages: Set<number>,
newPage: number, newPage: number,
): Promise<FetchResult<Data>> { ): Promise<FetchResult<MaybeMasked<Data>>> {
const basePaginatedResult: Partial<AbortableApolloUseMutationPaginatedResponse<Data, Variables>[1][number]> = { const basePaginatedResult: Partial<AbortableApolloUseMutationPaginatedResponse<Data, Variables>[1][number]> = {
size: newPage, size: newPage,
isLoading: false, isLoading: false,
@@ -664,7 +666,7 @@ export class RequestManager {
called: true, called: true,
}; };
let response: FetchResult<Data> = {}; let response: FetchResult<MaybeMasked<Data>> = {};
try { try {
const { signal, abortRequest } = this.createAbortController(); const { signal, abortRequest } = this.createAbortController();
setAbortRequest(abortRequest); setAbortRequest(abortRequest);
@@ -769,7 +771,7 @@ export class RequestManager {
cachedResults: AbortableApolloUseMutationPaginatedResponse<Data, Variables>[1][number][], cachedResults: AbortableApolloUseMutationPaginatedResponse<Data, Variables>[1][number][],
getVariablesFor: (page: number) => Variables, getVariablesFor: (page: number) => Variables,
paginatedResult: AbortableApolloUseMutationPaginatedResponse<Data, Variables>[1][number], paginatedResult: AbortableApolloUseMutationPaginatedResponse<Data, Variables>[1][number],
fetchPage: (page: number) => Promise<FetchResult<Data>>, fetchPage: (page: number) => Promise<FetchResult<MaybeMasked<Data>>>,
hasCachedResult: boolean, hasCachedResult: boolean,
createPaginatedResult: ( createPaginatedResult: (
result: Partial<AbortableApolloUseMutationPaginatedResponse<Data, Variables>[1][number]>, result: Partial<AbortableApolloUseMutationPaginatedResponse<Data, Variables>[1][number]>,

View File

@@ -8,7 +8,7 @@
import { t as translate } from 'i18next'; import { t as translate } from 'i18next';
import gql from 'graphql-tag'; import gql from 'graphql-tag';
import { DocumentNode } from '@apollo/client'; import { DocumentNode, Unmasked } from '@apollo/client';
import { makeToast } from '@/modules/core/utils/Toast.ts'; import { makeToast } from '@/modules/core/utils/Toast.ts';
import { requestManager } from '@/lib/requests/RequestManager.ts'; import { requestManager } from '@/lib/requests/RequestManager.ts';
import { getMetadataServerSettings } from '@/modules/settings/services/ServerSettingsMetadata.ts'; import { getMetadataServerSettings } from '@/modules/settings/services/ServerSettingsMetadata.ts';
@@ -108,7 +108,7 @@ export class Chapters {
id: number, id: number,
fragment: DocumentNode = CHAPTER_LIST_FIELDS, fragment: DocumentNode = CHAPTER_LIST_FIELDS,
fragmentName: string = 'CHAPTER_LIST_FIELDS', fragmentName: string = 'CHAPTER_LIST_FIELDS',
): T | null { ): Unmasked<T> | null {
return requestManager.graphQLClient.client.cache.readFragment<T>({ return requestManager.graphQLClient.client.cache.readFragment<T>({
id: requestManager.graphQLClient.client.cache.identify({ id: requestManager.graphQLClient.client.cache.identify({
__typename: 'ChapterType', __typename: 'ChapterType',

View File

@@ -7,7 +7,7 @@
*/ */
import { t as translate } from 'i18next'; import { t as translate } from 'i18next';
import { DocumentNode } from '@apollo/client/core'; import { DocumentNode, Unmasked } from '@apollo/client/core';
import { requestManager } from '@/lib/requests/RequestManager.ts'; import { requestManager } from '@/lib/requests/RequestManager.ts';
import { import {
ChapterConditionInput, ChapterConditionInput,
@@ -93,7 +93,7 @@ export class Mangas {
id: MangaIdInfo['id'], id: MangaIdInfo['id'],
fragment: DocumentNode = MANGA_BASE_FIELDS, fragment: DocumentNode = MANGA_BASE_FIELDS,
fragmentName: string = 'MANGA_BASE_FIELDS', fragmentName: string = 'MANGA_BASE_FIELDS',
): T | null { ): Unmasked<T> | null {
return requestManager.graphQLClient.client.cache.readFragment<T>({ return requestManager.graphQLClient.client.cache.readFragment<T>({
id: requestManager.graphQLClient.client.cache.identify({ id: requestManager.graphQLClient.client.cache.identify({
__typename: 'MangaType', __typename: 'MangaType',