@mic-rexjs/usecases-react 2.1.4 → 2.2.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.
Files changed (47) hide show
  1. package/dist/index.min.js +1 -1
  2. package/es/components/UseCaseFragment/index.d.ts +2 -2
  3. package/es/components/UseCaseFragment/types.d.ts +3 -3
  4. package/es/configs/defaultUseCaseContext/index.d.ts +3 -1
  5. package/es/configs/defaultUseCaseContext/types.d.ts +7 -5
  6. package/es/configs/useCaseContextReferenceMap/types.d.ts +2 -2
  7. package/es/hooks/useArgumentTypes/index.js +2 -5
  8. package/es/hooks/useContextualItem/index.d.ts +1 -1
  9. package/es/hooks/useContextualItem/index.js +1 -1
  10. package/es/hooks/useEntity/index.js +1 -1
  11. package/es/hooks/useGlobalUseCase/index.js +2 -2
  12. package/es/hooks/useGlobalUseCase/index.test.js +23 -7
  13. package/es/hooks/useGlobalUseCase/types.d.ts +2 -4
  14. package/es/hooks/useProvider/index.d.ts +2 -2
  15. package/es/hooks/useProvider/index.js +2 -1
  16. package/es/hooks/useUseCase/index.js +10 -12
  17. package/es/hooks/useUseCase/index.test.js +68 -105
  18. package/es/hooks/useUseCase/types.d.ts +19 -45
  19. package/es/hooks/useUseCaseContext/index.d.ts +2 -3
  20. package/es/hooks/useUseCaseContext/index.js +3 -8
  21. package/es/hooks/useUseCaseContext/index.test.js +2 -30
  22. package/es/hooks/useUseCaseStatuses/index.d.ts +2 -2
  23. package/es/hooks/useUseCaseStatuses/index.js +3 -3
  24. package/es/index.d.ts +1 -1
  25. package/es/methods/fillArguments/index.d.ts +2 -2
  26. package/es/methods/fillArguments/index.js +0 -9
  27. package/es/methods/fillArguments/types.d.ts +3 -3
  28. package/es/methods/initEntityReducers/index.d.ts +2 -2
  29. package/lib/hooks/useArgumentTypes/index.js +2 -5
  30. package/lib/hooks/useContextualItem/index.js +1 -1
  31. package/lib/hooks/useEntity/index.js +1 -1
  32. package/lib/hooks/useGlobalUseCase/index.js +2 -2
  33. package/lib/hooks/useGlobalUseCase/index.test.js +18 -7
  34. package/lib/hooks/useProvider/index.js +4 -2
  35. package/lib/hooks/useUseCase/index.js +12 -12
  36. package/lib/hooks/useUseCase/index.test.js +147 -182
  37. package/lib/hooks/useUseCaseContext/index.js +2 -8
  38. package/lib/hooks/useUseCaseContext/index.test.js +8 -36
  39. package/lib/hooks/useUseCaseStatuses/index.js +3 -3
  40. package/lib/methods/fillArguments/index.js +0 -3
  41. package/package.json +3 -3
  42. package/es/enums/UseCaseModeErrors/index.d.ts +0 -4
  43. package/es/enums/UseCaseModeErrors/index.js +0 -5
  44. package/es/hooks/useSafeMode/index.d.ts +0 -3
  45. package/es/hooks/useSafeMode/index.js +0 -18
  46. package/lib/enums/UseCaseModeErrors/index.js +0 -11
  47. package/lib/hooks/useSafeMode/index.js +0 -24
@@ -3,9 +3,8 @@ import { usecaseContextReferenceMap } from '../../configs/useCaseContextReferenc
3
3
  import { createContext } from 'react';
4
4
  import { useUnmount } from 'ahooks';
5
5
  import { UseCaseArgumentTypes } from '../../enums/UseCaseArgumentTypes';
6
- import { UseCaseModes } from '../../enums/UseCaseModes';
7
6
  import { defaultUseCaseContext } from '../../configs/defaultUseCaseContext';
8
- export const useUseCaseContext = (usecase, argumentTypes = UseCaseArgumentTypes.None, mode = UseCaseModes.Normal) => {
7
+ export const useUseCaseContext = (usecase, argumentTypes = UseCaseArgumentTypes.None) => {
9
8
  const map = usecaseContextReferenceMap;
10
9
  const context = useConstant(() => {
11
10
  if (map.has(usecase)) {
@@ -17,12 +16,8 @@ export const useUseCaseContext = (usecase, argumentTypes = UseCaseArgumentTypes.
17
16
  });
18
17
  return value;
19
18
  }
20
- switch (true) {
21
- case (mode & UseCaseModes.Global) === UseCaseModes.Global:
22
- case (argumentTypes & UseCaseArgumentTypes.Entity) === UseCaseArgumentTypes.Entity:
23
- break;
24
- default:
25
- return defaultUseCaseContext;
19
+ if ((argumentTypes & UseCaseArgumentTypes.Entity) !== UseCaseArgumentTypes.Entity) {
20
+ return defaultUseCaseContext;
26
21
  }
27
22
  const ctx = createContext(null);
28
23
  map.set(usecase, {
@@ -3,7 +3,6 @@ import { renderHook } from '@testing-library/react';
3
3
  import { useUseCaseContext } from '.';
4
4
  import { defaultUseCaseContext } from '../../configs/defaultUseCaseContext';
5
5
  import { usecaseContextReferenceMap } from '../../configs/useCaseContextReferenceMap';
6
- import { UseCaseModes } from '../../enums/UseCaseModes';
7
6
  import { UseCaseArgumentTypes } from '../../enums/UseCaseArgumentTypes';
8
7
  const testUseCase = () => {
9
8
  return {};
@@ -18,45 +17,18 @@ describe('useUseCaseContext', () => {
18
17
  });
19
18
  test('should return the default context if map has not saved a usecase with `UseCaseArgumentTypes.None` & `UseCaseModes.Normal`', () => {
20
19
  const { result } = renderHook(() => {
21
- return useUseCaseContext(testUseCase, UseCaseArgumentTypes.None, UseCaseModes.Normal);
20
+ return useUseCaseContext(testUseCase, UseCaseArgumentTypes.None);
22
21
  });
23
22
  const { current } = result;
24
23
  expect(current).toBe(defaultUseCaseContext);
25
24
  });
26
25
  test('should return a new context if map has not saved a usecase with `UseCaseArgumentTypes.Entity` & `UseCaseModes.Normal`', () => {
27
26
  const { result } = renderHook(() => {
28
- return useUseCaseContext(testUseCase, UseCaseArgumentTypes.Entity, UseCaseModes.Normal);
27
+ return useUseCaseContext(testUseCase, UseCaseArgumentTypes.Entity);
29
28
  });
30
29
  const { current } = result;
31
30
  expect(typeof current).toBe('object');
32
31
  });
33
- test('should return a new context if map has not saved a usecase with `UseCaseArgumentTypes.None` & `UseCaseModes.Global`', () => {
34
- const { result } = renderHook(() => {
35
- return useUseCaseContext(testUseCase, UseCaseArgumentTypes.None, UseCaseModes.Global);
36
- });
37
- const { current } = result;
38
- expect(typeof current).toBe('object');
39
- });
40
- test.each([
41
- {
42
- type: UseCaseArgumentTypes.Entity,
43
- mode: UseCaseModes.Normal,
44
- },
45
- {
46
- type: UseCaseArgumentTypes.None,
47
- mode: UseCaseModes.Global,
48
- },
49
- {
50
- type: UseCaseArgumentTypes.Entity,
51
- mode: UseCaseModes.Global,
52
- },
53
- ])('should return the existing context if map has save a usecase already', ({ type, mode }) => {
54
- const { result } = renderHook(() => {
55
- return useUseCaseContext(testUseCase, type, mode) === useUseCaseContext(testUseCase);
56
- });
57
- const { current: isSame } = result;
58
- expect(isSame).toBe(true);
59
- });
60
32
  test('check context reference times when mount/unmount a usecase', () => {
61
33
  const { unmount: unmount1 } = renderHook(() => {
62
34
  useUseCaseContext(testUseCase, UseCaseArgumentTypes.Entity);
@@ -2,5 +2,5 @@ import { UseCaseContextValue } from '../../configs/defaultUseCaseContext/types';
2
2
  import { UseCaseArgumentTypes } from '../../enums/UseCaseArgumentTypes';
3
3
  import { UseCaseModes } from '../../enums/UseCaseModes';
4
4
  import { UseCaseStatuses } from '../../enums/UseCaseStatuses';
5
- import { ReducerMap } from '@mic-rexjs/usecases';
6
- export declare const useUseCaseStatuses: <T, TReducers extends ReducerMap<import("@mic-rexjs/usecases").Reducer<unknown>>>(argumentTypes: UseCaseArgumentTypes, mode: UseCaseModes, contextValue: UseCaseContextValue<TReducers> | null) => UseCaseStatuses;
5
+ import { Reducers } from '@mic-rexjs/usecases';
6
+ export declare const useUseCaseStatuses: <T extends Reducers>(argumentTypes: UseCaseArgumentTypes, mode: UseCaseModes, contextValue: UseCaseContextValue<T> | null) => UseCaseStatuses;
@@ -9,11 +9,11 @@ export const useUseCaseStatuses = (argumentTypes, mode, contextValue) => {
9
9
  if ((argumentTypes & UseCaseArgumentTypes.Entity) === UseCaseArgumentTypes.Entity) {
10
10
  statuses |= UseCaseStatuses.EntityRootEnabled;
11
11
  }
12
- if (contextValue === null) {
13
- statuses |= UseCaseStatuses.RootEnabled;
12
+ if (contextValue) {
13
+ statuses |= UseCaseStatuses.ContextEnabled;
14
14
  }
15
15
  else {
16
- statuses |= UseCaseStatuses.ContextEnabled;
16
+ statuses |= UseCaseStatuses.RootEnabled;
17
17
  }
18
18
  if (store) {
19
19
  statuses |= UseCaseStatuses.EntityEnabled;
package/es/index.d.ts CHANGED
@@ -2,7 +2,7 @@ export { UseCaseFragment } from './components/UseCaseFragment';
2
2
  export { useUseCase } from './hooks/useUseCase';
3
3
  export { useGlobalUseCase } from './hooks/useGlobalUseCase';
4
4
  export { useStatelessUseCase } from './hooks/useStatelessUseCase';
5
- export type { RootCoreCollection, ContextualCoreCollection, CoreCollection, PseudoCoreCollection, } from './hooks/useUseCase/types';
5
+ export type { RootCoreCollection, ContextualCoreCollection, CoreCollection } from './hooks/useUseCase/types';
6
6
  export type { UseCaseHookOptions } from './hooks/useUseCase/types';
7
7
  export type { UseCaseProvider } from './hooks/useProvider/types';
8
8
  export type { UseCaseFragmentProps } from './components/UseCaseFragment/types';
@@ -1,5 +1,5 @@
1
1
  import { UseCaseHookParameters } from '../../hooks/useUseCase/types';
2
- import { ReducerMap } from '@mic-rexjs/usecases';
2
+ import { Reducers } from '@mic-rexjs/usecases';
3
3
  import { UseCaseHookFullParameters } from './types';
4
4
  import { UseCaseArgumentTypes } from '../../enums/UseCaseArgumentTypes';
5
- export declare const fillArguments: <T, TReducers extends ReducerMap<import("@mic-rexjs/usecases").Reducer<unknown>>, TUseCaseOptions extends object>(args: UseCaseHookParameters, argumentTypes: UseCaseArgumentTypes) => UseCaseHookFullParameters<T, TReducers, TUseCaseOptions>;
5
+ export declare const fillArguments: <T, TReducers extends Reducers, TUseCaseOptions extends object>(args: UseCaseHookParameters, argumentTypes: UseCaseArgumentTypes) => UseCaseHookFullParameters<T, TReducers, TUseCaseOptions>;
@@ -22,15 +22,6 @@ export const fillArguments = (args, argumentTypes) => {
22
22
  (arg4 || []),
23
23
  ];
24
24
  }
25
- if (hasMode) {
26
- return [
27
- null,
28
- arg1,
29
- arg2,
30
- (arg3 || {}),
31
- (arg4 || []),
32
- ];
33
- }
34
25
  return [
35
26
  null,
36
27
  arg1,
@@ -1,9 +1,9 @@
1
1
  import { UseCaseModes } from '../../enums/UseCaseModes';
2
2
  import { EntityGetter, UseCaseHookContextualOptions, UseCaseHookOptions } from '../../hooks/useUseCase/types';
3
- import { EntityReducerMap, EntityUseCase, ReducerMap, UseCase } from '@mic-rexjs/usecases';
4
- export type UseCaseHookFullParameters<T, TReducers extends ReducerMap, TUseCaseOptions extends object> = [
3
+ import { EntityReducers, EntityUseCase, Reducers, UseCase } from '@mic-rexjs/usecases';
4
+ export type UseCaseHookFullParameters<T, TReducers extends Reducers, TUseCaseOptions extends object> = [
5
5
  entity: T | EntityGetter<T>,
6
- usecase: UseCase<TReducers, TUseCaseOptions> | EntityUseCase<T, TReducers & EntityReducerMap<T>, TUseCaseOptions>,
6
+ usecase: UseCase<TReducers, TUseCaseOptions> | EntityUseCase<T, TReducers & EntityReducers<T>, TUseCaseOptions>,
7
7
  mode: UseCaseModes,
8
8
  options: TUseCaseOptions | UseCaseHookOptions<T, TUseCaseOptions> | UseCaseHookContextualOptions<T>,
9
9
  deps: unknown[]
@@ -1,4 +1,4 @@
1
- import { EntityReducerMap, EntityStore, EntityUseCase } from '@mic-rexjs/usecases';
1
+ import { EntityReducers, EntityStore, EntityUseCase } from '@mic-rexjs/usecases';
2
2
  import { UseCaseHookOptions } from '../../hooks/useUseCase/types';
3
3
  import { ContextualEntityReducers } from '../../configs/defaultUseCaseContext/types';
4
- export declare const initEntityReducers: <T, TEntityReducers extends EntityReducerMap<T>, TUseCaseOptions extends object = object>(usecase: EntityUseCase<T, TEntityReducers, TUseCaseOptions>, store: EntityStore<T>, options: UseCaseHookOptions<T, TUseCaseOptions>) => ContextualEntityReducers<T, TEntityReducers>;
4
+ export declare const initEntityReducers: <T, TEntityReducers extends EntityReducers<T>, TUseCaseOptions extends object = object>(usecase: EntityUseCase<T, TEntityReducers, TUseCaseOptions>, store: EntityStore<T>, options: UseCaseHookOptions<T, TUseCaseOptions>) => ContextualEntityReducers<T, TEntityReducers>;
@@ -18,12 +18,9 @@ var useArgumentTypes = exports.useArgumentTypes = function useArgumentTypes(args
18
18
  var type2 = (0, _typeof2["default"])(arg2);
19
19
  if (type2 === 'function') {
20
20
  types |= _UseCaseArgumentTypes.UseCaseArgumentTypes.Entity;
21
- }
22
- switch ('number') {
23
- case type2:
24
- case (0, _typeof2["default"])(arg3):
21
+ if (typeof arg3 === 'number') {
25
22
  types |= _UseCaseArgumentTypes.UseCaseArgumentTypes.Mode;
26
- break;
23
+ }
27
24
  }
28
25
  return types;
29
26
  });
@@ -7,7 +7,7 @@ exports.useContextualItem = void 0;
7
7
  var _ahooks = require("ahooks");
8
8
  var _UseCaseStatuses = require("../../enums/UseCaseStatuses");
9
9
  var _useMemoizedCall = require("../useMemoizedCall");
10
- var useContextualItem = exports.useContextualItem = function useContextualItem(statuses, contextItem, createFactory) {
10
+ var useContextualItem = exports.useContextualItem = function useContextualItem(contextItem, statuses, createFactory) {
11
11
  var deps = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];
12
12
  var create = (0, _useMemoizedCall.useMemoizedCall)(createFactory, deps);
13
13
  return (0, _ahooks.useCreation)(function () {
@@ -22,7 +22,7 @@ var useEntity = exports.useEntity = function useEntity(statuses, rootEntity, con
22
22
  var renderingEntity = (0, _getRenderingEntity.getRenderingEntity)(statuses, entityState, rootEntity, contextEntity);
23
23
  var optionsRef = (0, _ahooks.useLatest)(options);
24
24
  var entityRootEnabled = (statuses & _UseCaseStatuses.UseCaseStatuses.EntityRootEnabled) === _UseCaseStatuses.UseCaseStatuses.EntityRootEnabled;
25
- var store = (0, _useContextualItem.useContextualItem)(statuses, contextStore, function () {
25
+ var store = (0, _useContextualItem.useContextualItem)(contextStore, statuses, function () {
26
26
  if (!entityRootEnabled) {
27
27
  return new _usecases.EntityStore(null);
28
28
  }
@@ -6,6 +6,6 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.useGlobalUseCase = void 0;
7
7
  var _useUseCase = require("../useUseCase");
8
8
  var _UseCaseModes = require("../../enums/UseCaseModes");
9
- var useGlobalUseCase = exports.useGlobalUseCase = function useGlobalUseCase(useCase, options, deps) {
10
- return (0, _useUseCase.useUseCase)(useCase, _UseCaseModes.UseCaseModes.Global, options, deps);
9
+ var useGlobalUseCase = exports.useGlobalUseCase = function useGlobalUseCase(entity, useCase, options, deps) {
10
+ return (0, _useUseCase.useUseCase)(entity, useCase, _UseCaseModes.UseCaseModes.Global, options, deps);
11
11
  };
@@ -1,26 +1,37 @@
1
1
  "use strict";
2
2
 
3
3
  var _typeof = require("@babel/runtime/helpers/typeof");
4
- var _ = require(".");
4
+ var _usecases = require("@mic-rexjs/usecases");
5
5
  var _globals = require("@jest/globals");
6
6
  var _UseCaseModes = require("../../enums/UseCaseModes");
7
7
  var _react = require("@testing-library/react");
8
8
  var useUseCaseModule = _interopRequireWildcard(require("../useUseCase"));
9
+ var _ = require(".");
9
10
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
10
11
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
11
- var mathUseCase = function mathUseCase() {
12
- return {};
12
+ var numberUseCase = function numberUseCase() {
13
+ return (0, _usecases.entityUseCase)();
13
14
  };
14
15
  (0, _globals.describe)('useGlobalUseCase', function () {
15
- (0, _globals.describe)('`useGlobalUseCase` should work the same as `GlobalPseudoCoreCollectionHook`', function () {
16
- (0, _globals.test)('check `useUseCase` has received correct arguments', function () {
16
+ (0, _globals.describe)('`useGlobalUseCase` should work the same as `RootCoreCollectionHook`', function () {
17
+ (0, _globals.test)('should pass `UseCaseModes.Global` to `useUseCase`', function () {
17
18
  var useMockedUseCase = _globals.jest.fn();
18
19
  _globals.jest.spyOn(useUseCaseModule, 'useUseCase').mockImplementation(useMockedUseCase);
19
20
  (0, _react.renderHook)(function () {
20
- (0, _.useGlobalUseCase)(mathUseCase);
21
+ (0, _.useGlobalUseCase)(1, numberUseCase);
21
22
  });
22
- (0, _globals.expect)(useMockedUseCase).toHaveBeenCalledWith(mathUseCase, _UseCaseModes.UseCaseModes.Global, void 0, void 0);
23
+ (0, _globals.expect)(useMockedUseCase).toHaveBeenCalledWith(1, numberUseCase, _UseCaseModes.UseCaseModes.Global, void 0, void 0);
23
24
  _globals.jest.spyOn(useUseCaseModule, 'useUseCase').mockRestore();
24
25
  });
26
+ (0, _globals.test)('should should return `CoreCollection` with Provider', function () {
27
+ var _renderHook = (0, _react.renderHook)(function () {
28
+ return (0, _.useGlobalUseCase)(1, numberUseCase);
29
+ }),
30
+ result = _renderHook.result;
31
+ var current = result.current;
32
+ (0, _globals.expect)(current).toEqual([1, {
33
+ setEntity: _globals.expect.any(Function)
34
+ }, _globals.expect.any(Function), void 0, void 0]);
35
+ });
25
36
  });
26
37
  });
@@ -18,11 +18,13 @@ var useProvider = exports.useProvider = function useProvider(statuses, context,
18
18
  if ((statuses & _UseCaseStatuses.UseCaseStatuses.EntityEnabled) === _UseCaseStatuses.UseCaseStatuses.EntityEnabled) {
19
19
  return {
20
20
  store: store,
21
- reducers: reducers
21
+ reducers: reducers,
22
+ statuses: statuses
22
23
  };
23
24
  }
24
25
  return {
25
- reducers: reducers
26
+ reducers: reducers,
27
+ statuses: statuses
26
28
  };
27
29
  }, [statuses, entity, store, reducers]);
28
30
  var contextValueRef = (0, _ahooks.useLatest)(contextValue);
@@ -20,8 +20,8 @@ var _UseCaseStatuses = require("../../enums/UseCaseStatuses");
20
20
  var _useEntity3 = require("../useEntity");
21
21
  var _useContextualItem = require("../useContextualItem");
22
22
  var _cacheCalls = require("../../methods/cacheCalls");
23
- var _useSafeMode = require("../useSafeMode");
24
23
  var useUseCase = exports.useUseCase = function useUseCase() {
24
+ var isRenderingRef = (0, _useIsRenderingRef.useIsRenderingRef)();
25
25
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
26
26
  args[_key] = arguments[_key];
27
27
  }
@@ -30,21 +30,21 @@ var useUseCase = exports.useUseCase = function useUseCase() {
30
30
  var _fullArguments = (0, _slicedToArray2["default"])(fullArguments, 5),
31
31
  unsafeEntity = _fullArguments[0],
32
32
  unsafeUsecase = _fullArguments[1],
33
- unsafeMode = _fullArguments[2],
33
+ mode = _fullArguments[2],
34
34
  options = _fullArguments[3],
35
35
  deps = _fullArguments[4];
36
36
  var unkownUsecase = (0, _useConstantFn.useConstantFn)(unsafeUsecase);
37
37
  var usecase = unkownUsecase;
38
38
  var entityUseCase = unkownUsecase;
39
- var isRenderingRef = (0, _useIsRenderingRef.useIsRenderingRef)();
40
- var mode = (0, _useSafeMode.useSafeMode)(unsafeMode, argumentTypes);
41
- var context = (0, _useUseCaseContext.useUseCaseContext)(unkownUsecase, argumentTypes, mode);
39
+ var context = (0, _useUseCaseContext.useUseCaseContext)(unkownUsecase, argumentTypes);
42
40
  var contextValue = (0, _react.useContext)(context);
43
41
  var entityContextValue = contextValue;
44
42
  var statuses = (0, _useUseCaseStatuses.useUseCaseStatuses)(argumentTypes, mode, contextValue);
45
43
  var _ref = contextValue || {},
46
44
  _ref$reducers = _ref.reducers,
47
- contextReducers = _ref$reducers === void 0 ? null : _ref$reducers;
45
+ contextReducers = _ref$reducers === void 0 ? null : _ref$reducers,
46
+ _ref$statuses = _ref.statuses,
47
+ contextStatueses = _ref$statuses === void 0 ? _UseCaseStatuses.UseCaseStatuses.None : _ref$statuses;
48
48
  var _ref2 = entityContextValue || {},
49
49
  _ref2$store = _ref2.store,
50
50
  contextStore = _ref2$store === void 0 ? null : _ref2$store;
@@ -52,7 +52,7 @@ var useUseCase = exports.useUseCase = function useUseCase() {
52
52
  _useEntity2 = (0, _slicedToArray2["default"])(_useEntity, 2),
53
53
  entity = _useEntity2[0],
54
54
  store = _useEntity2[1];
55
- var reducers = (0, _useContextualItem.useContextualItem)(statuses, contextReducers, function () {
55
+ var reducers = (0, _useContextualItem.useContextualItem)(contextReducers, statuses, function () {
56
56
  if ((statuses & _UseCaseStatuses.UseCaseStatuses.EntityEnabled) !== _UseCaseStatuses.UseCaseStatuses.EntityEnabled) {
57
57
  return usecase(options);
58
58
  }
@@ -61,13 +61,10 @@ var useUseCase = exports.useUseCase = function useUseCase() {
61
61
  }, deps);
62
62
  var Provider = (0, _useProvider.useProvider)(statuses, context, store, reducers);
63
63
  return (0, _ahooks.useCreation)(function () {
64
- if ((statuses & _UseCaseStatuses.UseCaseStatuses.ContextEnabled) !== _UseCaseStatuses.UseCaseStatuses.ContextEnabled) {
64
+ if ((statuses & _UseCaseStatuses.UseCaseStatuses.EntityEnabled) !== _UseCaseStatuses.UseCaseStatuses.EntityEnabled) {
65
65
  return reducers;
66
66
  }
67
67
  var rootEnabled = (statuses & _UseCaseStatuses.UseCaseStatuses.RootEnabled) === _UseCaseStatuses.UseCaseStatuses.RootEnabled;
68
- if ((statuses & _UseCaseStatuses.UseCaseStatuses.EntityEnabled) !== _UseCaseStatuses.UseCaseStatuses.EntityEnabled) {
69
- return rootEnabled ? [reducers, Provider] : reducers;
70
- }
71
68
  var cachedReducers = (0, _cacheCalls.cacheCalls)(reducers, {
72
69
  onShouldCache: function onShouldCache() {
73
70
  return isRenderingRef.current;
@@ -76,6 +73,9 @@ var useUseCase = exports.useUseCase = function useUseCase() {
76
73
  if (rootEnabled) {
77
74
  return [entity, cachedReducers, Provider];
78
75
  }
76
+ if ((contextStatueses & _UseCaseStatuses.UseCaseStatuses.GlobalEnabled) === _UseCaseStatuses.UseCaseStatuses.GlobalEnabled) {
77
+ return cachedReducers;
78
+ }
79
79
  return [entity, cachedReducers];
80
- }, [statuses, entity, reducers, Provider, isRenderingRef]);
80
+ }, [statuses, contextStatueses, entity, reducers, Provider, isRenderingRef]);
81
81
  };