@txo/service-graphql-react 2.4.1 → 2.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,17 @@
1
+ ## [2.5.1](https://github.com/technology-studio/service-graphql-react/compare/v2.5.0...v2.5.1) (2024-03-04)
2
+
3
+
4
+ ### Bug fixes
5
+
6
+ * **deps:** update dependency type-fest to ^4.11.0 ([60731a2](https://github.com/technology-studio/service-graphql-react/commit/60731a24e5103ea117aa5cb808e4105c9ba18ba9))
7
+
8
+ ## [2.5.0](https://github.com/technology-studio/service-graphql-react/compare/v2.4.1...v2.5.0) (2024-02-28)
9
+
10
+
11
+ ### Features
12
+
13
+ * add fetchMore fetching ([#658](https://github.com/technology-studio/service-graphql-react/issues/658)) ([1648a6f](https://github.com/technology-studio/service-graphql-react/commit/1648a6fa1ab1e8df0192a5450ce79dec5c279950))
14
+
1
15
  ## [2.4.1](https://github.com/technology-studio/service-graphql-react/compare/v2.4.0...v2.4.1) (2024-02-26)
2
16
 
3
17
 
@@ -10,6 +10,7 @@ export type QueryServiceProp<ATTRIBUTES extends OperationVariables, DATA, MAPPED
10
10
  query: QueryResult<DATA, ATTRIBUTES>;
11
11
  promiselessRefetch: (variables?: Partial<ATTRIBUTES>) => void;
12
12
  fetchMore: QueryResult<DATA, ATTRIBUTES>['fetchMore'];
13
+ fetchMoreFetching: boolean;
13
14
  };
14
15
  type QueryOptions<DATA, ATTRIBUTES extends OperationVariables, DATA_PATH extends string> = {
15
16
  options?: QueryHookOptions<DATA, ATTRIBUTES>;
@@ -35,6 +35,7 @@ const useServiceQuery = (queryDocument, options) => {
35
35
  const query = (0, client_1.useQuery)(queryDocument, queryOptions);
36
36
  const shownExceptionListRef = (0, react_1.useRef)([]);
37
37
  const { addServiceErrorException, removeServiceErrorException, } = (0, react_1.useContext)(service_error_handler_react_1.ErrorHandlerContext);
38
+ const [fetchMoreFetching, setFetchMoreFetching] = (0, react_1.useState)(false);
38
39
  const memoizedVariables = (0, hooks_react_1.useMemoObject)(queryOptions?.variables);
39
40
  const memoizedQuery = (0, hooks_react_1.useMemoObject)(query);
40
41
  const context = (0, react_1.useMemo)(() => (calculateContext(queryDocument, memoizedVariables)), [queryDocument, memoizedVariables]);
@@ -66,28 +67,36 @@ const useServiceQuery = (queryDocument, options) => {
66
67
  const promiselessRefetch = (0, react_1.useCallback)((...args) => {
67
68
  (0, PromiseHelper_1.asyncToCallback)(memoizedQuery.refetch(...args));
68
69
  }, [memoizedQuery]);
69
- const fetchMore = (0, react_1.useCallback)(async (...args) => (await memoizedQuery.fetchMore(...args).catch((error) => {
70
- const operationName = (0, OperationHelper_1.getName)(queryDocument);
71
- const errorList = service_graphql_1.configManager.config.errorResponseTranslator(error, {
72
- context,
73
- operationName,
74
- });
75
- const exception = new service_prop_1.ServiceErrorException({
76
- serviceErrorList: errorList,
77
- serviceName: operationName,
78
- context,
79
- });
80
- addServiceErrorException(exception);
81
- throw error;
82
- })), [addServiceErrorException, context, memoizedQuery, queryDocument]);
70
+ const fetchMore = (0, react_1.useCallback)(async (...args) => {
71
+ setFetchMoreFetching(true);
72
+ return (await memoizedQuery.fetchMore(...args)
73
+ .catch((error) => {
74
+ const operationName = (0, OperationHelper_1.getName)(queryDocument);
75
+ const errorList = service_graphql_1.configManager.config.errorResponseTranslator(error, {
76
+ context,
77
+ operationName,
78
+ });
79
+ const exception = new service_prop_1.ServiceErrorException({
80
+ serviceErrorList: errorList,
81
+ serviceName: operationName,
82
+ context,
83
+ });
84
+ addServiceErrorException(exception);
85
+ throw error;
86
+ })
87
+ .finally(() => {
88
+ setFetchMoreFetching(false);
89
+ }));
90
+ }, [addServiceErrorException, context, memoizedQuery, queryDocument, setFetchMoreFetching]);
83
91
  return (0, react_1.useMemo)(() => ({
84
92
  query: memoizedQuery,
85
93
  data: (0, lodash_get_1.default)(memoizedQuery.data, dataPath),
86
94
  fetching: memoizedQuery.loading,
95
+ fetchMoreFetching,
87
96
  promiselessRefetch,
88
97
  fetchMore,
89
98
  exception,
90
- }), [memoizedQuery, dataPath, promiselessRefetch, fetchMore, exception]);
99
+ }), [memoizedQuery, dataPath, fetchMoreFetching, promiselessRefetch, fetchMore, exception]);
91
100
  };
92
101
  exports.useServiceQuery = useServiceQuery;
93
102
  //# sourceMappingURL=UseServiceQuery.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"UseServiceQuery.js","sourceRoot":"","sources":["../../src/Hooks/UseServiceQuery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"UseServiceQuery.js","sourceRoot":"","sources":["../../src/Hooks/UseServiceQuery.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@txo/service-graphql-react",
3
- "version": "2.4.1",
3
+ "version": "2.5.1",
4
4
  "description": "Technology Studio - Service graphql react",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
@@ -43,7 +43,7 @@
43
43
  "@txo/types": "^1.7.0",
44
44
  "lodash.get": "^4.4.2",
45
45
  "lodash.set": "^4.3.2",
46
- "type-fest": "^4.10.3"
46
+ "type-fest": "^4.11.0"
47
47
  },
48
48
  "peerDependencies": {
49
49
  "@apollo/client": "^3.9.5",
@@ -64,9 +64,9 @@
64
64
  "@types/lodash.get": "^4.4.9",
65
65
  "@types/lodash.set": "^4.3.9",
66
66
  "@types/node-fetch": "^2.6.11",
67
- "@types/react": "^18.2.58",
67
+ "@types/react": "^18.2.61",
68
68
  "concurrently": "^8.2.2",
69
- "eslint-config-txo-typescript-react": "^2.0.40",
69
+ "eslint-config-txo-typescript-react": "^2.0.41",
70
70
  "graphql": "^16.8.1",
71
71
  "husky": "^8.0.3",
72
72
  "jest": "^29.7.0",
@@ -10,6 +10,7 @@ import {
10
10
  useLayoutEffect,
11
11
  useMemo,
12
12
  useRef,
13
+ useState,
13
14
  } from 'react'
14
15
  import type {
15
16
  DocumentNode,
@@ -53,6 +54,7 @@ export type QueryServiceProp<ATTRIBUTES extends OperationVariables, DATA, MAPPED
53
54
  query: QueryResult<DATA, ATTRIBUTES>,
54
55
  promiselessRefetch: (variables?: Partial<ATTRIBUTES>) => void,
55
56
  fetchMore: QueryResult<DATA, ATTRIBUTES>['fetchMore'],
57
+ fetchMoreFetching: boolean,
56
58
  }
57
59
 
58
60
  type QueryOptions<DATA, ATTRIBUTES extends OperationVariables, DATA_PATH extends string> = {
@@ -90,6 +92,7 @@ export const useServiceQuery = <
90
92
  addServiceErrorException,
91
93
  removeServiceErrorException,
92
94
  } = useContext(ErrorHandlerContext)
95
+ const [fetchMoreFetching, setFetchMoreFetching] = useState(false)
93
96
  const memoizedVariables = useMemoObject(queryOptions?.variables)
94
97
  const memoizedQuery = useMemoObject<Typify<QueryResult<DATA, ATTRIBUTES>>>(query)
95
98
  const context = useMemo(() => (
@@ -127,29 +130,37 @@ export const useServiceQuery = <
127
130
  asyncToCallback(memoizedQuery.refetch(...args))
128
131
  }, [memoizedQuery])
129
132
 
130
- const fetchMore: QueryResult<DATA>['fetchMore'] = useCallback(async (...args) => (
131
- await memoizedQuery.fetchMore(...args).catch((error: ApolloError) => {
132
- const operationName = getName(queryDocument)
133
- const errorList = configManager.config.errorResponseTranslator(error, {
134
- context,
135
- operationName,
136
- })
137
- const exception = new ServiceErrorException({
138
- serviceErrorList: errorList,
139
- serviceName: operationName,
140
- context,
141
- })
142
- addServiceErrorException(exception)
143
- throw error
144
- })
145
- ), [addServiceErrorException, context, memoizedQuery, queryDocument])
133
+ const fetchMore: QueryResult<DATA>['fetchMore'] = useCallback(async (...args) => {
134
+ setFetchMoreFetching(true)
135
+ return (
136
+ await memoizedQuery.fetchMore(...args)
137
+ .catch((error: ApolloError) => {
138
+ const operationName = getName(queryDocument)
139
+ const errorList = configManager.config.errorResponseTranslator(error, {
140
+ context,
141
+ operationName,
142
+ })
143
+ const exception = new ServiceErrorException({
144
+ serviceErrorList: errorList,
145
+ serviceName: operationName,
146
+ context,
147
+ })
148
+ addServiceErrorException(exception)
149
+ throw error
150
+ })
151
+ .finally(() => {
152
+ setFetchMoreFetching(false)
153
+ })
154
+ )
155
+ }, [addServiceErrorException, context, memoizedQuery, queryDocument, setFetchMoreFetching])
146
156
 
147
157
  return useMemo(() => ({
148
158
  query: memoizedQuery,
149
159
  data: get(memoizedQuery.data, dataPath) as Get<DATA, DATA_PATH> | null,
150
160
  fetching: memoizedQuery.loading,
161
+ fetchMoreFetching,
151
162
  promiselessRefetch,
152
163
  fetchMore,
153
164
  exception,
154
- }), [memoizedQuery, dataPath, promiselessRefetch, fetchMore, exception])
165
+ }), [memoizedQuery, dataPath, fetchMoreFetching, promiselessRefetch, fetchMore, exception])
155
166
  }