@zeniai/client-epic-state 5.1.71 → 5.1.72-betaRD1

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 (71) hide show
  1. package/lib/entity/jeSchedules/jeSchedulesPayload.d.ts +2 -0
  2. package/lib/entity/jeSchedules/jeSchedulesPayload.js +2 -0
  3. package/lib/entity/jeSchedules/jeSchedulesSelector.d.ts +4 -0
  4. package/lib/entity/jeSchedules/jeSchedulesSelector.js +11 -1
  5. package/lib/entity/jeSchedules/jeSchedulesState.d.ts +2 -0
  6. package/lib/entity/monthEndCloseChecks/monthEndCloseChecksPayload.d.ts +1 -0
  7. package/lib/entity/monthEndCloseChecks/monthEndCloseChecksPayload.js +1 -0
  8. package/lib/entity/monthEndCloseChecks/monthEndCloseChecksState.d.ts +1 -0
  9. package/lib/entity/transaction/payloadTypes/scheduleTransactionPayload.d.ts +2 -0
  10. package/lib/entity/transaction/payloadTypes/scheduleTransactionPayload.js +2 -0
  11. package/lib/entity/transaction/stateTypes/scheduleTransaction.d.ts +2 -0
  12. package/lib/epic.d.ts +5 -1
  13. package/lib/epic.js +5 -1
  14. package/lib/esm/entity/jeSchedules/jeSchedulesPayload.js +2 -0
  15. package/lib/esm/entity/jeSchedules/jeSchedulesSelector.js +11 -1
  16. package/lib/esm/entity/monthEndCloseChecks/monthEndCloseChecksPayload.js +1 -0
  17. package/lib/esm/entity/transaction/payloadTypes/scheduleTransactionPayload.js +2 -0
  18. package/lib/esm/epic.js +5 -1
  19. package/lib/esm/index.js +12 -6
  20. package/lib/esm/view/expenseAutomationView/epics/jeSchedule/fetchJeSchedulesEpic.js +23 -3
  21. package/lib/esm/view/expenseAutomationView/epics/jeSchedule/newSchedule/initializeNewScheduleEpic.js +21 -0
  22. package/lib/esm/view/expenseAutomationView/epics/jeSchedule/newSchedule/saveNewScheduleEpic.js +110 -0
  23. package/lib/esm/view/expenseAutomationView/epics/jeSchedule/newSchedule/searchTransactionsForNewScheduleEpic.js +73 -0
  24. package/lib/esm/view/expenseAutomationView/epics/jeSchedule/switchJESchedulesTabEpic.js +22 -0
  25. package/lib/esm/view/expenseAutomationView/helpers/newScheduleLocalDataHelper.js +140 -0
  26. package/lib/esm/view/expenseAutomationView/reducers/jeSchedulesViewReducer.js +133 -8
  27. package/lib/esm/view/expenseAutomationView/selectorTypes/jeNewScheduleViewSelectorTypes.js +1 -0
  28. package/lib/esm/view/expenseAutomationView/selectors/jeNewScheduleViewSelector.js +70 -0
  29. package/lib/esm/view/expenseAutomationView/selectors/jeSchedulesViewSelector.js +110 -15
  30. package/lib/esm/view/expenseAutomationView/types/jeSchedulesViewState.js +3 -6
  31. package/lib/esm/view/notificationPreferencesView/epics/saveNotificationPreferencesEpic.js +13 -16
  32. package/lib/esm/view/notificationPreferencesView/notificationPreferencesViewPayload.js +7 -2
  33. package/lib/esm/view/notificationPreferencesView/notificationPreferencesViewReducer.js +55 -10
  34. package/lib/esm/view/notificationPreferencesView/notificationPreferencesViewSelector.js +23 -13
  35. package/lib/esm/view/notificationPreferencesView/notificationPreferencesViewState.js +1 -0
  36. package/lib/index.d.ts +13 -9
  37. package/lib/index.js +72 -48
  38. package/lib/view/expenseAutomationView/epics/jeSchedule/fetchJeSchedulesEpic.d.ts +2 -2
  39. package/lib/view/expenseAutomationView/epics/jeSchedule/fetchJeSchedulesEpic.js +21 -1
  40. package/lib/view/expenseAutomationView/epics/jeSchedule/newSchedule/initializeNewScheduleEpic.d.ts +8 -0
  41. package/lib/view/expenseAutomationView/epics/jeSchedule/newSchedule/initializeNewScheduleEpic.js +25 -0
  42. package/lib/view/expenseAutomationView/epics/jeSchedule/newSchedule/saveNewScheduleEpic.d.ts +45 -0
  43. package/lib/view/expenseAutomationView/epics/jeSchedule/newSchedule/saveNewScheduleEpic.js +114 -0
  44. package/lib/view/expenseAutomationView/epics/jeSchedule/newSchedule/searchTransactionsForNewScheduleEpic.d.ts +8 -0
  45. package/lib/view/expenseAutomationView/epics/jeSchedule/newSchedule/searchTransactionsForNewScheduleEpic.js +77 -0
  46. package/lib/view/expenseAutomationView/epics/jeSchedule/switchJESchedulesTabEpic.d.ts +6 -0
  47. package/lib/view/expenseAutomationView/epics/jeSchedule/switchJESchedulesTabEpic.js +26 -0
  48. package/lib/view/expenseAutomationView/helpers/newScheduleLocalDataHelper.d.ts +36 -0
  49. package/lib/view/expenseAutomationView/helpers/newScheduleLocalDataHelper.js +145 -0
  50. package/lib/view/expenseAutomationView/payload/jeSchedulesPayload.d.ts +7 -1
  51. package/lib/view/expenseAutomationView/reducers/jeSchedulesViewReducer.d.ts +40 -9
  52. package/lib/view/expenseAutomationView/reducers/jeSchedulesViewReducer.js +134 -8
  53. package/lib/view/expenseAutomationView/selectorTypes/jeNewScheduleViewSelectorTypes.d.ts +25 -0
  54. package/lib/view/expenseAutomationView/selectorTypes/jeNewScheduleViewSelectorTypes.js +2 -0
  55. package/lib/view/expenseAutomationView/selectorTypes/jeSchedulesSelectorTypes.d.ts +31 -7
  56. package/lib/view/expenseAutomationView/selectors/jeNewScheduleViewSelector.d.ts +10 -0
  57. package/lib/view/expenseAutomationView/selectors/jeNewScheduleViewSelector.js +75 -0
  58. package/lib/view/expenseAutomationView/selectors/jeSchedulesViewSelector.d.ts +4 -1
  59. package/lib/view/expenseAutomationView/selectors/jeSchedulesViewSelector.js +112 -14
  60. package/lib/view/expenseAutomationView/types/jeSchedulesViewState.d.ts +53 -6
  61. package/lib/view/expenseAutomationView/types/jeSchedulesViewState.js +5 -8
  62. package/lib/view/notificationPreferencesView/epics/saveNotificationPreferencesEpic.d.ts +2 -8
  63. package/lib/view/notificationPreferencesView/epics/saveNotificationPreferencesEpic.js +10 -13
  64. package/lib/view/notificationPreferencesView/notificationPreferencesViewPayload.d.ts +2 -1
  65. package/lib/view/notificationPreferencesView/notificationPreferencesViewPayload.js +7 -2
  66. package/lib/view/notificationPreferencesView/notificationPreferencesViewReducer.d.ts +6 -1
  67. package/lib/view/notificationPreferencesView/notificationPreferencesViewReducer.js +56 -11
  68. package/lib/view/notificationPreferencesView/notificationPreferencesViewSelector.js +23 -15
  69. package/lib/view/notificationPreferencesView/notificationPreferencesViewState.d.ts +1 -0
  70. package/lib/view/notificationPreferencesView/notificationPreferencesViewState.js +1 -0
  71. package/package.json +1 -1
@@ -1,32 +1,40 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.hasUnsavedNotificationPreferences = exports.getNotificationLocalOverrides = exports.getEffectiveNotificationPreferences = exports.getNotificationPreferencesSaveState = void 0;
4
+ const toolkit_1 = require("@reduxjs/toolkit");
4
5
  const getView = (state) => state.notificationPreferencesViewState;
5
6
  const getNotificationPreferencesSaveState = (state) => getView(state).savePreferencesState;
6
7
  exports.getNotificationPreferencesSaveState = getNotificationPreferencesSaveState;
7
- const getEffectiveNotificationPreferences = (state) => {
8
- const view = getView(state);
9
- const mergedEventEnabledByChannel = { ...view.preferences.eventEnabledByChannel };
10
- Object.entries(view.localOverrides.eventEnabledByChannel).forEach(([eventId, channels]) => {
8
+ // Memoised on `preferences` + `localOverrides` so the merged shape keeps a
9
+ // stable reference while neither input changes — a plain function would
10
+ // allocate a fresh object on every call and re-render every `useSelector`
11
+ // consumer on any unrelated dispatch.
12
+ exports.getEffectiveNotificationPreferences = (0, toolkit_1.createSelector)((state) => getView(state).preferences, (state) => getView(state).localOverrides, (preferences, localOverrides) => {
13
+ const mergedEventEnabledByChannel = { ...preferences.eventEnabledByChannel };
14
+ Object.entries(localOverrides.eventEnabledByChannel).forEach(([eventId, channels]) => {
11
15
  mergedEventEnabledByChannel[eventId] = {
12
- ...(view.preferences.eventEnabledByChannel[eventId] ?? {}),
16
+ ...(preferences.eventEnabledByChannel[eventId] ?? {}),
17
+ ...channels,
18
+ };
19
+ });
20
+ const mergedGroupChannelEnabledByGroupId = { ...preferences.groupChannelEnabledByGroupId };
21
+ Object.entries(localOverrides.groupChannelEnabledByGroupId).forEach(([groupId, channels]) => {
22
+ mergedGroupChannelEnabledByGroupId[groupId] = {
23
+ ...(preferences.groupChannelEnabledByGroupId[groupId] ?? {}),
13
24
  ...channels,
14
25
  };
15
26
  });
16
27
  return {
17
28
  eventEnabledByChannel: mergedEventEnabledByChannel,
29
+ groupChannelEnabledByGroupId: mergedGroupChannelEnabledByGroupId,
18
30
  groupFrequencyByGroupId: {
19
- ...view.preferences.groupFrequencyByGroupId,
20
- ...view.localOverrides.groupFrequencyByGroupId,
31
+ ...preferences.groupFrequencyByGroupId,
32
+ ...localOverrides.groupFrequencyByGroupId,
21
33
  },
22
34
  };
23
- };
24
- exports.getEffectiveNotificationPreferences = getEffectiveNotificationPreferences;
35
+ });
25
36
  const getNotificationLocalOverrides = (state) => getView(state).localOverrides;
26
37
  exports.getNotificationLocalOverrides = getNotificationLocalOverrides;
27
- const hasUnsavedNotificationPreferences = (state) => {
28
- const overrides = getView(state).localOverrides;
29
- return (Object.keys(overrides.eventEnabledByChannel).length > 0 ||
30
- Object.keys(overrides.groupFrequencyByGroupId).length > 0);
31
- };
32
- exports.hasUnsavedNotificationPreferences = hasUnsavedNotificationPreferences;
38
+ exports.hasUnsavedNotificationPreferences = (0, toolkit_1.createSelector)((state) => getView(state).localOverrides, (localOverrides) => Object.keys(localOverrides.eventEnabledByChannel).length > 0 ||
39
+ Object.keys(localOverrides.groupChannelEnabledByGroupId).length > 0 ||
40
+ Object.keys(localOverrides.groupFrequencyByGroupId).length > 0);
@@ -2,6 +2,7 @@ import { FetchStateAndError } from '../../commonStateTypes/common';
2
2
  import { NotificationChannel, NotificationFrequency } from '../../entity/notificationRegistry/notificationRegistryState';
3
3
  export interface NotificationPreferences {
4
4
  eventEnabledByChannel: Record<string, Partial<Record<NotificationChannel, boolean>>>;
5
+ groupChannelEnabledByGroupId: Record<string, Partial<Record<NotificationChannel, boolean>>>;
5
6
  groupFrequencyByGroupId: Record<string, NotificationFrequency>;
6
7
  }
7
8
  export interface NotificationPreferencesViewState {
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.emptyNotificationPreferences = void 0;
4
4
  const emptyNotificationPreferences = () => ({
5
5
  eventEnabledByChannel: {},
6
+ groupChannelEnabledByGroupId: {},
6
7
  groupFrequencyByGroupId: {},
7
8
  });
8
9
  exports.emptyNotificationPreferences = emptyNotificationPreferences;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zeniai/client-epic-state",
3
- "version": "5.1.71",
3
+ "version": "5.1.72-betaRD1",
4
4
  "description": "Shared module between Web & Mobile containing required abstractions for state management, async network communication. ",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib/esm/index.js",