@txo/service-graphql-react 2.5.21 → 2.6.0

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.6.0](https://github.com/technology-studio/service-graphql-react/compare/v2.5.22...v2.6.0) (2024-05-02)
2
+
3
+
4
+ ### Features
5
+
6
+ * add observable context to prevent refetching data or updating views when not observed ([#721](https://github.com/technology-studio/service-graphql-react/issues/721)) ([357ca5b](https://github.com/technology-studio/service-graphql-react/commit/357ca5bc9c8431cda7b38b9f63353f2e72aed7f2))
7
+
8
+ ## [2.5.22](https://github.com/technology-studio/service-graphql-react/compare/v2.5.21...v2.5.22) (2024-05-01)
9
+
10
+
11
+ ### Bug fixes
12
+
13
+ * **deps:** update dependency type-fest to ^4.18.1 ([9310c2d](https://github.com/technology-studio/service-graphql-react/commit/9310c2d2ab5fc4a962b1df4bad3bd9f47abd552f))
14
+
1
15
  ## [2.5.21](https://github.com/technology-studio/service-graphql-react/compare/v2.5.20...v2.5.21) (2024-04-30)
2
16
 
3
17
 
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @Author: Erik Slovak <erik.slovak@technologystudio.sk>
3
+ * @Date: 2024-04-30T09:31:07+02:00
4
+ * @Copyright: Technology Studio
5
+ **/
6
+ /// <reference types="react" />
7
+ export declare const ObservableContext: import("react").Context<boolean>;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ /**
3
+ * @Author: Erik Slovak <erik.slovak@technologystudio.sk>
4
+ * @Date: 2024-04-30T09:31:07+02:00
5
+ * @Copyright: Technology Studio
6
+ **/
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.ObservableContext = void 0;
9
+ const react_1 = require("react");
10
+ exports.ObservableContext = (0, react_1.createContext)(true);
11
+ //# sourceMappingURL=ObservableContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObservableContext.js","sourceRoot":"","sources":["../../src/Api/ObservableContext.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,iCAAqC;AAExB,QAAA,iBAAiB,GAAG,IAAA,qBAAa,EAAU,IAAI,CAAC,CAAA"}
@@ -19,6 +19,7 @@ const service_error_handler_react_1 = require("@txo-peer-dep/service-error-handl
19
19
  const ContextHelper_1 = require("../Api/ContextHelper");
20
20
  const OperationHelper_1 = require("../Api/OperationHelper");
21
21
  const PromiseHelper_1 = require("../Api/PromiseHelper");
22
+ const ObservableContext_1 = require("../Api/ObservableContext");
22
23
  const calculateContext = (query, variables) => ((0, ContextHelper_1.serviceContext)((0, OperationHelper_1.getName)(query), variables ?? {}));
23
24
  const isServiceErrorListEqual = (a, b) => {
24
25
  if (a.length !== b.length) {
@@ -31,13 +32,24 @@ const isServiceErrorListEqual = (a, b) => {
31
32
  };
32
33
  // TODO: find a better way to parse type of dataPath (from attribute)
33
34
  const useServiceQuery = (queryDocument, options) => {
34
- const { dataPath, options: queryOptions, } = options;
35
+ const { dataPath, options: _queryOptions, } = options;
36
+ const observable = (0, react_1.useContext)(ObservableContext_1.ObservableContext);
37
+ const isSkipped = ((_queryOptions?.skip) ?? false) || !observable;
38
+ const queryOptions = (0, hooks_react_1.useMemoObject)({
39
+ ..._queryOptions,
40
+ skip: isSkipped,
41
+ });
35
42
  const query = (0, client_1.useQuery)(queryDocument, queryOptions);
36
43
  const shownExceptionListRef = (0, react_1.useRef)([]);
37
44
  const { addServiceErrorException, removeServiceErrorException, } = (0, react_1.useContext)(service_error_handler_react_1.ErrorHandlerContext);
38
45
  const [fetchMoreFetching, setFetchMoreFetching] = (0, react_1.useState)(false);
39
46
  const memoizedVariables = (0, hooks_react_1.useMemoObject)(queryOptions?.variables);
40
47
  const memoizedQuery = (0, hooks_react_1.useMemoObject)(query);
48
+ const recentData = (0, react_1.useRef)(memoizedQuery.data);
49
+ if (!isSkipped) {
50
+ recentData.current = memoizedQuery.data;
51
+ }
52
+ const data = recentData.current ?? null;
41
53
  const context = (0, react_1.useMemo)(() => (calculateContext(queryDocument, memoizedVariables)), [queryDocument, memoizedVariables]);
42
54
  const exception = (0, react_1.useMemo)(() => {
43
55
  const operationName = (0, OperationHelper_1.getName)(queryDocument);
@@ -90,13 +102,14 @@ const useServiceQuery = (queryDocument, options) => {
90
102
  }, [addServiceErrorException, context, memoizedQuery, queryDocument, setFetchMoreFetching]);
91
103
  return (0, react_1.useMemo)(() => ({
92
104
  query: memoizedQuery,
93
- data: (0, lodash_get_1.default)(memoizedQuery.data, dataPath),
105
+ // eslint-disable-next-line @typescript-eslint/no-confusing-void-expression
106
+ data: (0, lodash_get_1.default)(data, dataPath),
94
107
  fetching: memoizedQuery.loading,
95
108
  fetchMoreFetching,
96
109
  promiselessRefetch,
97
110
  fetchMore,
98
111
  exception,
99
- }), [memoizedQuery, dataPath, fetchMoreFetching, promiselessRefetch, fetchMore, exception]);
112
+ }), [memoizedQuery, data, dataPath, fetchMoreFetching, promiselessRefetch, fetchMore, exception]);
100
113
  };
101
114
  exports.useServiceQuery = useServiceQuery;
102
115
  //# sourceMappingURL=UseServiceQuery.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"UseServiceQuery.js","sourceRoot":"","sources":["../../src/Hooks/UseServiceQuery.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;AAEH,iCAOc;AASd,2CAEuB;AACvB,4DAA4B;AAO5B,oDAE0B;AAC1B,mEAA6D;AAC7D,kDAEyB;AACzB,2FAA+E;AAG/E,wDAAqD;AACrD,4DAAgD;AAChD,wDAAsD;AAEtD,MAAM,gBAAgB,GAAG,CAAC,KAAmB,EAAE,SAA8C,EAAU,EAAE,CAAC,CACxG,IAAA,8BAAc,EAAC,IAAA,yBAAO,EAAC,KAAK,CAAC,EAAE,SAAS,IAAI,EAAE,CAAC,CAChD,CAAA;AAgBD,MAAM,uBAAuB,GAAG,CAAC,CAAiB,EAAE,CAAiB,EAAW,EAAE;IAChF,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAA;IACd,CAAC;IACD,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QACpG,OAAO,IAAI,CAAA;IACb,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED,qEAAqE;AAC9D,MAAM,eAAe,GAAG,CAM3B,aAAkD,EAClD,OAAkD,EACyB,EAAE;IAC/E,MAAM,EACJ,QAAQ,EACR,OAAO,EAAE,YAAY,GACtB,GAAG,OAAO,CAAA;IACX,MAAM,KAAK,GAAkC,IAAA,iBAAQ,EAAmB,aAAa,EAAE,YAAY,CAAC,CAAA;IACpG,MAAM,qBAAqB,GAAG,IAAA,cAAM,EAA4B,EAAE,CAAC,CAAA;IACnE,MAAM,EACJ,wBAAwB,EACxB,2BAA2B,GAC5B,GAAG,IAAA,kBAAU,EAAC,iDAAmB,CAAC,CAAA;IACnC,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAA;IACjE,MAAM,iBAAiB,GAAG,IAAA,2BAAa,EAAC,YAAY,EAAE,SAAS,CAAC,CAAA;IAChE,MAAM,aAAa,GAAG,IAAA,2BAAa,EAAwC,KAAK,CAAC,CAAA;IACjF,MAAM,OAAO,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,CAC5B,gBAAgB,CAAC,aAAa,EAAE,iBAAiB,CAAC,CACnD,EAAE,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC,CAAA;IACtC,MAAM,SAAS,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;QAC7B,MAAM,aAAa,GAAG,IAAA,yBAAO,EAAC,aAAa,CAAC,CAAA;QAC5C,IAAI,aAAa,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;YAChC,MAAM,SAAS,GAAG,+BAAa,CAAC,MAAM,CAAC,uBAAuB,CAAC,aAAa,CAAC,KAAK,EAAE;gBAClF,OAAO;gBACP,aAAa;aACd,CAAC,CAAA;YACF,MAAM,SAAS,GAAG,IAAI,oCAAqB,CAAC;gBAC1C,gBAAgB,EAAE,SAAS;gBAC3B,WAAW,EAAE,aAAa;gBAC1B,OAAO;aACR,CAAC,CAAA;YACF,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC,CAAA;IAC3C,IAAA,uBAAe,EAAC,GAAG,EAAE;QACnB,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAC/E,uBAAuB,CAAC,cAAc,CAAC,gBAAgB,EAAE,SAAS,CAAC,gBAAgB,CAAC,CACrF,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC;YACZ,wBAAwB,CAAC,SAAS,CAAC,CAAA;YACnC,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAC/C,CAAC;QACD,OAAO,GAAG,EAAE;YACV,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,2BAA2B,CAAC,OAAO,CAAC,CAAA;QAC7D,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,wBAAwB,EAAE,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,aAAa,EAAE,2BAA2B,CAAC,CAAC,CAAA;IAEjH,MAAM,kBAAkB,GAAG,IAAA,mBAAW,EAAC,CAAC,GAAG,IAA8C,EAAE,EAAE;QAC3F,IAAA,+BAAe,EAAC,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;IACjD,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAA;IAEnB,MAAM,SAAS,GAAmC,IAAA,mBAAW,EAAC,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE;QAC9E,oBAAoB,CAAC,IAAI,CAAC,CAAA;QAC1B,OAAO,CACL,MAAM,aAAa,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;aACnC,KAAK,CAAC,CAAC,KAAkB,EAAE,EAAE;YAC5B,MAAM,aAAa,GAAG,IAAA,yBAAO,EAAC,aAAa,CAAC,CAAA;YAC5C,MAAM,SAAS,GAAG,+BAAa,CAAC,MAAM,CAAC,uBAAuB,CAAC,KAAK,EAAE;gBACpE,OAAO;gBACP,aAAa;aACd,CAAC,CAAA;YACF,MAAM,SAAS,GAAG,IAAI,oCAAqB,CAAC;gBAC1C,gBAAgB,EAAE,SAAS;gBAC3B,WAAW,EAAE,aAAa;gBAC1B,OAAO;aACR,CAAC,CAAA;YACF,wBAAwB,CAAC,SAAS,CAAC,CAAA;YACnC,MAAM,KAAK,CAAA;QACb,CAAC,CAAC;aACD,OAAO,CAAC,GAAG,EAAE;YACZ,oBAAoB,CAAC,KAAK,CAAC,CAAA;QAC7B,CAAC,CAAC,CACL,CAAA;IACH,CAAC,EAAE,CAAC,wBAAwB,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,oBAAoB,CAAC,CAAC,CAAA;IAE3F,OAAO,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,CAAC;QACpB,KAAK,EAAE,aAAa;QACpB,IAAI,EAAE,IAAA,oBAAG,EAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAgC;QACtE,QAAQ,EAAE,aAAa,CAAC,OAAO;QAC/B,iBAAiB;QACjB,kBAAkB;QAClB,SAAS;QACT,SAAS;KACV,CAAC,EAAE,CAAC,aAAa,EAAE,QAAQ,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAA;AAC7F,CAAC,CAAA;AA1FY,QAAA,eAAe,mBA0F3B"}
1
+ {"version":3,"file":"UseServiceQuery.js","sourceRoot":"","sources":["../../src/Hooks/UseServiceQuery.ts"],"names":[],"mappings":"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"}
package/lib/index.d.ts CHANGED
@@ -5,6 +5,7 @@
5
5
  **/
6
6
  export { getName } from './Api/OperationHelper';
7
7
  export * from './Api/ErrorMapHelper';
8
+ export * from './Api/ObservableContext';
8
9
  export * from './Api/PromiseHelper';
9
10
  export * from './Hooks/UseServiceMutation';
10
11
  export { useServiceQuery, type QueryServiceProp, } from './Hooks/UseServiceQuery';
package/lib/index.js CHANGED
@@ -23,6 +23,7 @@ exports.useServiceQuery = exports.getName = void 0;
23
23
  var OperationHelper_1 = require("./Api/OperationHelper");
24
24
  Object.defineProperty(exports, "getName", { enumerable: true, get: function () { return OperationHelper_1.getName; } });
25
25
  __exportStar(require("./Api/ErrorMapHelper"), exports);
26
+ __exportStar(require("./Api/ObservableContext"), exports);
26
27
  __exportStar(require("./Api/PromiseHelper"), exports);
27
28
  __exportStar(require("./Hooks/UseServiceMutation"), exports);
28
29
  var UseServiceQuery_1 = require("./Hooks/UseServiceQuery");
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;AAEH,yDAA+C;AAAtC,0GAAA,OAAO,OAAA;AAChB,uDAAoC;AACpC,sDAAmC;AACnC,6DAA0C;AAC1C,2DAGgC;AAF9B,kHAAA,eAAe,OAAA;AAGjB,gDAA6B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;AAEH,yDAA+C;AAAtC,0GAAA,OAAO,OAAA;AAChB,uDAAoC;AACpC,0DAAuC;AACvC,sDAAmC;AACnC,6DAA0C;AAC1C,2DAGgC;AAF9B,kHAAA,eAAe,OAAA;AAGjB,gDAA6B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@txo/service-graphql-react",
3
- "version": "2.5.21",
3
+ "version": "2.6.0",
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.18.0"
46
+ "type-fest": "^4.18.1"
47
47
  },
48
48
  "peerDependencies": {
49
49
  "@apollo/client": "^3.10.1",
@@ -66,7 +66,7 @@
66
66
  "@types/node-fetch": "^2.6.11",
67
67
  "@types/react": "^18.3.1",
68
68
  "concurrently": "^8.2.2",
69
- "eslint-config-txo-typescript-react": "^2.0.52",
69
+ "eslint-config-txo-typescript-react": "^2.0.53",
70
70
  "graphql": "^16.8.1",
71
71
  "husky": "^9.0.11",
72
72
  "jest": "^29.7.0",
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @Author: Erik Slovak <erik.slovak@technologystudio.sk>
3
+ * @Date: 2024-04-30T09:31:07+02:00
4
+ * @Copyright: Technology Studio
5
+ **/
6
+
7
+ import { createContext } from 'react'
8
+
9
+ export const ObservableContext = createContext<boolean>(true)
@@ -43,6 +43,7 @@ import type { Typify } from '@txo/types'
43
43
  import { serviceContext } from '../Api/ContextHelper'
44
44
  import { getName } from '../Api/OperationHelper'
45
45
  import { asyncToCallback } from '../Api/PromiseHelper'
46
+ import { ObservableContext } from '../Api/ObservableContext'
46
47
 
47
48
  const calculateContext = (query: DocumentNode, variables: Record<string, unknown> | undefined): string => (
48
49
  serviceContext(getName(query), variables ?? {})
@@ -84,8 +85,15 @@ export const useServiceQuery = <
84
85
  ): QueryServiceProp<ATTRIBUTES, DATA, Get<DATA, DATA_PATH>, CALL_ATTRIBUTES> => {
85
86
  const {
86
87
  dataPath,
87
- options: queryOptions,
88
+ options: _queryOptions,
88
89
  } = options
90
+
91
+ const observable = useContext(ObservableContext)
92
+ const isSkipped = ((_queryOptions?.skip) ?? false) || !observable
93
+ const queryOptions = useMemoObject({
94
+ ..._queryOptions,
95
+ skip: isSkipped,
96
+ })
89
97
  const query: QueryResult<DATA, ATTRIBUTES> = useQuery<DATA, ATTRIBUTES>(queryDocument, queryOptions)
90
98
  const shownExceptionListRef = useRef<(ServiceErrorException)[]>([])
91
99
  const {
@@ -95,6 +103,11 @@ export const useServiceQuery = <
95
103
  const [fetchMoreFetching, setFetchMoreFetching] = useState(false)
96
104
  const memoizedVariables = useMemoObject(queryOptions?.variables)
97
105
  const memoizedQuery = useMemoObject<Typify<QueryResult<DATA, ATTRIBUTES>>>(query)
106
+ const recentData = useRef(memoizedQuery.data)
107
+ if (!isSkipped) {
108
+ recentData.current = memoizedQuery.data
109
+ }
110
+ const data: DATA | null = recentData.current ?? null
98
111
  const context = useMemo(() => (
99
112
  calculateContext(queryDocument, memoizedVariables)
100
113
  ), [queryDocument, memoizedVariables])
@@ -156,11 +169,12 @@ export const useServiceQuery = <
156
169
 
157
170
  return useMemo(() => ({
158
171
  query: memoizedQuery,
159
- data: get(memoizedQuery.data, dataPath) as Get<DATA, DATA_PATH> | null,
172
+ // eslint-disable-next-line @typescript-eslint/no-confusing-void-expression
173
+ data: get(data, dataPath) as Get<DATA, DATA_PATH> | null,
160
174
  fetching: memoizedQuery.loading,
161
175
  fetchMoreFetching,
162
176
  promiselessRefetch,
163
177
  fetchMore,
164
178
  exception,
165
- }), [memoizedQuery, dataPath, fetchMoreFetching, promiselessRefetch, fetchMore, exception])
179
+ }), [memoizedQuery, data, dataPath, fetchMoreFetching, promiselessRefetch, fetchMore, exception])
166
180
  }
package/src/index.ts CHANGED
@@ -6,6 +6,7 @@
6
6
 
7
7
  export { getName } from './Api/OperationHelper'
8
8
  export * from './Api/ErrorMapHelper'
9
+ export * from './Api/ObservableContext'
9
10
  export * from './Api/PromiseHelper'
10
11
  export * from './Hooks/UseServiceMutation'
11
12
  export {