Skip to content

Commit 8556bc8

Browse files
author
Ruslan
committed
refactor: implemented review related fixes
1 parent a6a8362 commit 8556bc8

File tree

5 files changed

+37
-17
lines changed

5 files changed

+37
-17
lines changed

src/create-entity-api.ts

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,6 @@ export function createEntityApi<
180180
},
181181
providesTags: (response) => getEntityTags(entityName, response, getEntityId),
182182
}),
183-
184183
/**
185184
* Creates a query endpoint for infinite searching entities. Behaves similar to `search`:
186185
* - A query endpoint that requests `GET /{baseEndpoint}` for searching entities.
@@ -232,8 +231,18 @@ export function createEntityApi<
232231
}
233232
},
234233
}),
235-
236-
searchList: builder.infiniteQuery<TSearchResponse & { minPage?: number }, TSearchRequest, number>({
234+
/**
235+
* Creates a query endpoint for infinite searching entities.
236+
* - A query endpoint that requests `GET /{baseEndpoint}` for searching entities.
237+
* - Accepts request params described by `entitySearchRequestConstructor` and returns `entitySearchResponseConstructor` extending `PaginationRequest` and `PaginationResponse` respectively.
238+
* But accumulates data from newly requested pages.
239+
* This query can be used with `useSearchPaginatedInfiniteQuery` hook to implement infinite scrolling lists.
240+
* It supports loading data in both directions using `fetchNextPage` and `fetchPreviousPage` callbacks, and provides other useful props.
241+
*
242+
* @param {TSearchRequest} params - The parameters for searching the entities.
243+
* @return {Promise<InfiniteData<TSearchResponse, number>>} A promise that resolves to the search result.
244+
*/
245+
searchPaginated: builder.infiniteQuery<TSearchResponse, TSearchRequest, number>({
237246
infiniteQueryOptions: {
238247
initialPageParam: 1,
239248

src/hooks/use-infinite-query.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import { BaseEntity, PaginationRequest, PaginationResponse } from '../models';
88
import { EntityApi, EntityMutationEndpointName } from '../types';
99

1010
/**
11-
* @deprecated This hook will be removed. Instead, use 'useSearchInfiniteQuery' hook in your entity API directly
11+
* @deprecated This hook will be removed. Instead, use 'useSearchPaginatedInfiniteQuery' hook in your entity API directly
1212
*/
1313
export const useInfiniteQuery = <
1414
TEntity extends BaseEntity,

src/types/entity-api.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,10 @@ export type EntityEndpointsDefinitions<
2222
create: MutationDefinition<Partial<TEntity>, BaseQueryFunction, string, TEntity>;
2323
search: QueryDefinition<TSearchRequest, BaseQueryFunction, string, TSearchResponse>;
2424
searchInfinite: QueryDefinition<TSearchRequest, BaseQueryFunction, string, TSearchResponse & { minPage?: number }>;
25-
searchList: InfiniteQueryDefinition<
25+
/**
26+
* @deprecated This endpoint will be removed. Instead, use 'useSearchPaginatedInfiniteQuery' hook in your entity API
27+
*/
28+
searchPaginated: InfiniteQueryDefinition<
2629
TSearchRequest,
2730
number,
2831
BaseQueryFunction,

src/utils/create-entity-api-utils.ts

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -75,12 +75,7 @@ export const createEntityApiUtils = <
7575
| (TSearchResponse & {
7676
minPage?: number;
7777
})
78-
| InfiniteData<
79-
TSearchResponse & {
80-
minPage?: number;
81-
},
82-
number
83-
>
78+
| InfiniteData<TSearchResponse, number>
8479
>;
8580

8681
if ('data' in endpointData && Array.isArray(endpointData.data)) {
@@ -149,12 +144,7 @@ export const createEntityApiUtils = <
149144
| (TSearchResponse & {
150145
minPage?: number;
151146
})
152-
| InfiniteData<
153-
TSearchResponse & {
154-
minPage?: number;
155-
},
156-
number
157-
>
147+
| InfiniteData<TSearchResponse, number>
158148
>;
159149

160150
if ('data' in endpointData && Array.isArray(endpointData.data)) {

src/utils/find-entity-in-pages.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
// export const findEntityInPages = (
2+
// pages: Array<any>,
3+
// entityId: unknown,
4+
// ): { pageIndex: number; itemIndex: number } | null => {
5+
// let existingItemIndex = -1;
6+
7+
// const existingPageIndex = pages.findIndex((page) => {
8+
// const itemIndex = page.data.findIndex((item: { id: unkown }) => item.id === entityId);
9+
10+
// if (itemIndex !== -1) {
11+
// existingItemIndex = itemIndex;
12+
13+
// return true;
14+
// }
15+
16+
// return false;
17+
// });
18+
// };

0 commit comments

Comments
 (0)