Skip to content

Commit bde22e3

Browse files
author
Ruslan
committed
refactor: moved functionality to util
1 parent 8556bc8 commit bde22e3

File tree

3 files changed

+31
-43
lines changed

3 files changed

+31
-43
lines changed

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

Lines changed: 8 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import {
1111
EntityQueryEndpointName,
1212
} from '../types';
1313
import { createEntityInstance } from './create-entity-instance';
14+
import { findEntityInPages } from './find-entity-in-pages';
1415
import { mergeEntity } from './merge-entity';
1516

1617
export const createEntityApiUtils = <
@@ -88,22 +89,11 @@ export const createEntityApiUtils = <
8889
);
8990
}
9091
} else if ('pages' in endpointData && Array.isArray(endpointData.pages)) {
91-
let existingItemIndex = -1;
92-
const existingPageIndex = endpointData.pages.findIndex((page) => {
93-
const itemIndex = page.data.findIndex((item) => item.id === entityData.id);
92+
const { pageIndex, itemIndex } = findEntityInPages(endpointData.pages, entityData.id);
9493

95-
if (itemIndex !== -1) {
96-
existingItemIndex = itemIndex;
97-
98-
return true;
99-
}
100-
101-
return false;
102-
});
103-
104-
if (existingPageIndex > -1 && existingItemIndex > -1) {
105-
endpointData.pages[existingPageIndex].data[existingItemIndex] = mergeEntity(
106-
endpointData.pages[existingPageIndex].data[existingItemIndex],
94+
if (pageIndex > -1 && itemIndex > -1) {
95+
endpointData.pages[pageIndex].data[itemIndex] = mergeEntity(
96+
endpointData.pages[pageIndex].data[itemIndex],
10797
existingEntity,
10898
);
10999
}
@@ -155,21 +145,10 @@ export const createEntityApiUtils = <
155145
endpointData.pagination.total--;
156146
}
157147
} else if ('pages' in endpointData && Array.isArray(endpointData.pages)) {
158-
let existingItemIndex = -1;
159-
const existingPageIndex = endpointData.pages.findIndex((page) => {
160-
const itemIndex = page.data.findIndex((item) => item.id === id);
161-
162-
if (itemIndex !== -1) {
163-
existingItemIndex = itemIndex;
164-
165-
return true;
166-
}
167-
168-
return false;
169-
});
148+
const { pageIndex, itemIndex } = findEntityInPages(endpointData.pages, id);
170149

171-
if (existingPageIndex > -1 && existingItemIndex > -1) {
172-
endpointData.pages[existingPageIndex].data.splice(existingItemIndex, 1);
150+
if (pageIndex > -1 && itemIndex > -1) {
151+
endpointData.pages[pageIndex].data.splice(itemIndex, 1);
173152
endpointData.pages.filter((pages) => !!pages.data.length);
174153

175154
for (let i = 0; i < endpointData.pages.length; i++) {

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

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,26 @@
1-
// export const findEntityInPages = (
2-
// pages: Array<any>,
3-
// entityId: unknown,
4-
// ): { pageIndex: number; itemIndex: number } | null => {
5-
// let existingItemIndex = -1;
1+
import { Draft } from 'immer';
2+
import { BaseEntity, PaginationResponse } from '../models';
63

7-
// const existingPageIndex = pages.findIndex((page) => {
8-
// const itemIndex = page.data.findIndex((item: { id: unkown }) => item.id === entityId);
4+
export const findEntityInPages = <
5+
TEntity extends BaseEntity,
6+
TSearchResponse extends PaginationResponse<TEntity> = PaginationResponse<TEntity>,
7+
>(
8+
pages: Array<TSearchResponse> | Draft<Array<TSearchResponse>>,
9+
entityId: unknown,
10+
): { pageIndex: number; itemIndex: number } => {
11+
let itemIndex = -1;
912

10-
// if (itemIndex !== -1) {
11-
// existingItemIndex = itemIndex;
13+
const pageIndex = pages.findIndex((page) => {
14+
const foundItemIndex = page.data.findIndex((item: { id: unknown }) => item.id === entityId);
1215

13-
// return true;
14-
// }
16+
if (itemIndex !== -1) {
17+
itemIndex = foundItemIndex;
1518

16-
// return false;
17-
// });
18-
// };
19+
return true;
20+
}
21+
22+
return false;
23+
});
24+
25+
return { itemIndex, pageIndex };
26+
};

src/utils/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,5 @@ export * from './merge-entity';
1212
export * from './prepare-request-params';
1313
export * from './prepare-server-side-request-headers';
1414
export * from './setup-refetch-listeners';
15+
export * from './find-entity-in-pages';
1516
export * from './store';

0 commit comments

Comments
 (0)