@servicetitan/notifications 28.5.1 → 29.0.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 (182) hide show
  1. package/dist/__tests__/intercept.test.d.ts +2 -0
  2. package/dist/__tests__/intercept.test.d.ts.map +1 -0
  3. package/dist/__tests__/intercept.test.js +13 -0
  4. package/dist/__tests__/intercept.test.js.map +1 -0
  5. package/dist/__tests__/notifications-service.test.d.ts +2 -0
  6. package/dist/__tests__/notifications-service.test.d.ts.map +1 -0
  7. package/dist/__tests__/notifications-service.test.js +42 -0
  8. package/dist/__tests__/notifications-service.test.js.map +1 -0
  9. package/dist/api/notifications.api.d.ts +2 -2
  10. package/dist/api/notifications.api.d.ts.map +1 -1
  11. package/dist/common.d.ts +4 -22
  12. package/dist/common.d.ts.map +1 -1
  13. package/dist/common.js +4 -11
  14. package/dist/common.js.map +1 -1
  15. package/dist/components/__tests__/notifications.test.d.ts +2 -0
  16. package/dist/components/__tests__/notifications.test.d.ts.map +1 -0
  17. package/dist/components/__tests__/notifications.test.js +93 -0
  18. package/dist/components/__tests__/notifications.test.js.map +1 -0
  19. package/dist/components/notifications.d.ts +8 -1
  20. package/dist/components/notifications.d.ts.map +1 -1
  21. package/dist/components/notifications.js +43 -23
  22. package/dist/components/notifications.js.map +1 -1
  23. package/dist/demo/action-button-preview.d.ts.map +1 -1
  24. package/dist/demo/action-button-preview.js +2 -2
  25. package/dist/demo/action-button-preview.js.map +1 -1
  26. package/dist/demo/basic-preview.d.ts.map +1 -1
  27. package/dist/demo/basic-preview.js +1 -1
  28. package/dist/demo/basic-preview.js.map +1 -1
  29. package/dist/demo/container.d.ts +1 -3
  30. package/dist/demo/container.d.ts.map +1 -1
  31. package/dist/demo/container.js.map +1 -1
  32. package/dist/demo/duration-preview.d.ts.map +1 -1
  33. package/dist/demo/duration-preview.js +2 -2
  34. package/dist/demo/duration-preview.js.map +1 -1
  35. package/dist/demo/multiline-message-preview.d.ts.map +1 -1
  36. package/dist/demo/multiline-message-preview.js +2 -2
  37. package/dist/demo/multiline-message-preview.js.map +1 -1
  38. package/dist/demo/prevent-duplicates-preview.d.ts.map +1 -1
  39. package/dist/demo/prevent-duplicates-preview.js +2 -2
  40. package/dist/demo/prevent-duplicates-preview.js.map +1 -1
  41. package/dist/demo/progress-preview.d.ts.map +1 -1
  42. package/dist/demo/progress-preview.js +2 -2
  43. package/dist/demo/progress-preview.js.map +1 -1
  44. package/dist/demo/server-custom-preview.d.ts +1 -1
  45. package/dist/demo/server-custom-preview.d.ts.map +1 -1
  46. package/dist/demo/server-custom-preview.js +21 -7
  47. package/dist/demo/server-custom-preview.js.map +1 -1
  48. package/dist/demo/server-custom.d.ts +0 -1
  49. package/dist/demo/server-custom.d.ts.map +1 -1
  50. package/dist/demo/server-custom.js +25 -21
  51. package/dist/demo/server-custom.js.map +1 -1
  52. package/dist/demo/server-default.d.ts.map +1 -1
  53. package/dist/demo/server-default.js +1 -1
  54. package/dist/demo/server-default.js.map +1 -1
  55. package/dist/demo/status-variations-preview.d.ts.map +1 -1
  56. package/dist/demo/status-variations-preview.js +2 -2
  57. package/dist/demo/status-variations-preview.js.map +1 -1
  58. package/dist/demo/status-variations.d.ts.map +1 -1
  59. package/dist/demo/status-variations.js.map +1 -1
  60. package/dist/index.d.ts +3 -4
  61. package/dist/index.d.ts.map +1 -1
  62. package/dist/index.js +3 -4
  63. package/dist/index.js.map +1 -1
  64. package/dist/intercept.d.ts +4 -0
  65. package/dist/intercept.d.ts.map +1 -0
  66. package/dist/intercept.js +5 -0
  67. package/dist/intercept.js.map +1 -0
  68. package/dist/notifications-channel.d.ts +2 -6
  69. package/dist/notifications-channel.d.ts.map +1 -1
  70. package/dist/notifications-channel.js.map +1 -1
  71. package/dist/notifications-service.d.ts +10 -8
  72. package/dist/notifications-service.d.ts.map +1 -1
  73. package/dist/notifications-service.js.map +1 -1
  74. package/dist/notifications.stories.d.ts +14 -0
  75. package/dist/notifications.stories.d.ts.map +1 -0
  76. package/dist/notifications.stories.js +20 -0
  77. package/dist/notifications.stories.js.map +1 -0
  78. package/dist/stores/__mocks__/mock-notifications-channel.d.ts +11 -0
  79. package/dist/stores/__mocks__/mock-notifications-channel.d.ts.map +1 -0
  80. package/dist/stores/__mocks__/mock-notifications-channel.js +36 -0
  81. package/dist/stores/__mocks__/mock-notifications-channel.js.map +1 -0
  82. package/dist/stores/__tests__/notifications.store.test.d.ts +2 -0
  83. package/dist/stores/__tests__/notifications.store.test.d.ts.map +1 -0
  84. package/dist/stores/__tests__/notifications.store.test.js +360 -0
  85. package/dist/stores/__tests__/notifications.store.test.js.map +1 -0
  86. package/dist/stores/notifications.store.d.ts +20 -8
  87. package/dist/stores/notifications.store.d.ts.map +1 -1
  88. package/dist/stores/notifications.store.js +156 -45
  89. package/dist/stores/notifications.store.js.map +1 -1
  90. package/dist/utils/__tests__/date-from-string.test.d.ts +2 -0
  91. package/dist/utils/__tests__/date-from-string.test.d.ts.map +1 -0
  92. package/dist/utils/__tests__/date-from-string.test.js +39 -0
  93. package/dist/utils/__tests__/date-from-string.test.js.map +1 -0
  94. package/dist/utils/__tests__/use-compatible-navigate.test.d.ts +2 -0
  95. package/dist/utils/__tests__/use-compatible-navigate.test.d.ts.map +1 -0
  96. package/dist/utils/__tests__/use-compatible-navigate.test.js +27 -0
  97. package/dist/utils/__tests__/use-compatible-navigate.test.js.map +1 -0
  98. package/dist/utils/date-from-string.d.ts.map +1 -0
  99. package/dist/utils/date-from-string.js +19 -0
  100. package/dist/utils/date-from-string.js.map +1 -0
  101. package/package.json +6 -6
  102. package/src/__tests__/intercept.test.ts +18 -0
  103. package/src/__tests__/notifications-service.test.ts +62 -0
  104. package/src/api/notifications.api.ts +2 -2
  105. package/src/common.ts +12 -27
  106. package/src/components/__tests__/notifications.test.tsx +107 -0
  107. package/src/components/notifications.tsx +59 -36
  108. package/src/demo/action-button-preview.tsx +4 -6
  109. package/src/demo/basic-preview.tsx +2 -4
  110. package/src/demo/container.tsx +1 -4
  111. package/src/demo/duration-preview.tsx +4 -6
  112. package/src/demo/multiline-message-preview.tsx +3 -9
  113. package/src/demo/prevent-duplicates-preview.tsx +3 -9
  114. package/src/demo/progress-preview.tsx +3 -9
  115. package/src/demo/server-custom-preview.tsx +17 -14
  116. package/src/demo/server-custom.tsx +30 -29
  117. package/src/demo/server-default.tsx +1 -3
  118. package/src/demo/status-variations-preview.tsx +4 -6
  119. package/src/demo/status-variations.tsx +0 -1
  120. package/src/index.ts +13 -4
  121. package/src/intercept.ts +14 -0
  122. package/src/notifications-channel.ts +2 -6
  123. package/src/notifications-service.ts +14 -42
  124. package/src/stores/__mocks__/mock-notifications-channel.ts +31 -0
  125. package/src/stores/__tests__/notifications.store.test.ts +458 -0
  126. package/src/stores/notifications.store.ts +178 -53
  127. package/src/utils/__tests__/date-from-string.test.ts +53 -0
  128. package/src/utils/__tests__/use-compatible-navigate.test.ts +43 -0
  129. package/src/utils/date-from-string.ts +22 -0
  130. package/dist/components/__tests__/container.test.d.ts +0 -2
  131. package/dist/components/__tests__/container.test.d.ts.map +0 -1
  132. package/dist/components/__tests__/container.test.js +0 -59
  133. package/dist/components/__tests__/container.test.js.map +0 -1
  134. package/dist/components/container.d.ts +0 -3
  135. package/dist/components/container.d.ts.map +0 -1
  136. package/dist/components/container.js +0 -26
  137. package/dist/components/container.js.map +0 -1
  138. package/dist/components/default-notification.d.ts +0 -7
  139. package/dist/components/default-notification.d.ts.map +0 -1
  140. package/dist/components/default-notification.js +0 -26
  141. package/dist/components/default-notification.js.map +0 -1
  142. package/dist/components/default-notification.module.css +0 -3
  143. package/dist/components/no-ssr.d.ts +0 -5
  144. package/dist/components/no-ssr.d.ts.map +0 -1
  145. package/dist/components/no-ssr.js +0 -9
  146. package/dist/components/no-ssr.js.map +0 -1
  147. package/dist/components/notifications-unwrapped.d.ts +0 -3
  148. package/dist/components/notifications-unwrapped.d.ts.map +0 -1
  149. package/dist/components/notifications-unwrapped.js +0 -27
  150. package/dist/components/notifications-unwrapped.js.map +0 -1
  151. package/dist/components/shadow-dom.d.ts +0 -3
  152. package/dist/components/shadow-dom.d.ts.map +0 -1
  153. package/dist/components/shadow-dom.js +0 -41
  154. package/dist/components/shadow-dom.js.map +0 -1
  155. package/dist/components/use-style-sheets.d.ts +0 -2
  156. package/dist/components/use-style-sheets.d.ts.map +0 -1
  157. package/dist/components/use-style-sheets.js +0 -15
  158. package/dist/components/use-style-sheets.js.map +0 -1
  159. package/dist/create-element.d.ts +0 -2
  160. package/dist/create-element.d.ts.map +0 -1
  161. package/dist/create-element.js +0 -8
  162. package/dist/create-element.js.map +0 -1
  163. package/dist/date-from-string.d.ts.map +0 -1
  164. package/dist/date-from-string.js +0 -27
  165. package/dist/date-from-string.js.map +0 -1
  166. package/dist/register.d.ts +0 -3
  167. package/dist/register.d.ts.map +0 -1
  168. package/dist/register.js +0 -5
  169. package/dist/register.js.map +0 -1
  170. package/src/components/__tests__/container.test.tsx +0 -71
  171. package/src/components/container.tsx +0 -35
  172. package/src/components/default-notification.module.css +0 -3
  173. package/src/components/default-notification.module.css.d.ts +0 -4
  174. package/src/components/default-notification.tsx +0 -59
  175. package/src/components/no-ssr.tsx +0 -11
  176. package/src/components/notifications-unwrapped.tsx +0 -51
  177. package/src/components/shadow-dom.tsx +0 -53
  178. package/src/components/use-style-sheets.ts +0 -19
  179. package/src/create-element.ts +0 -12
  180. package/src/date-from-string.ts +0 -30
  181. package/src/register.ts +0 -6
  182. /package/dist/{date-from-string.d.ts → utils/date-from-string.d.ts} +0 -0
@@ -0,0 +1,360 @@
1
+ var __rest = (this && this.__rest) || function (s, e) {
2
+ var t = {};
3
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
+ t[p] = s[p];
5
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
+ t[p[i]] = s[p[i]];
9
+ }
10
+ return t;
11
+ };
12
+ import { toast } from '@servicetitan/anvil2';
13
+ import { NotificationProcessStatus, } from '../../api/notifications.api';
14
+ import { Status } from '../../common';
15
+ import { MockNotificationsChannel } from '../__mocks__/mock-notifications-channel';
16
+ import { NotificationsStore } from '../notifications.store';
17
+ jest.mock('@servicetitan/anvil2', () => ({
18
+ toast: {
19
+ info: jest.fn(makeId),
20
+ success: jest.fn(),
21
+ warning: jest.fn(),
22
+ danger: jest.fn(),
23
+ update: jest.fn(),
24
+ dismiss: jest.fn(),
25
+ },
26
+ }));
27
+ class MockNotificationsApi {
28
+ constructor() {
29
+ Object.defineProperty(this, "getNotifications", {
30
+ enumerable: true,
31
+ configurable: true,
32
+ writable: true,
33
+ value: jest.fn().mockResolvedValue({ data: [] })
34
+ });
35
+ Object.defineProperty(this, "getNotification", {
36
+ enumerable: true,
37
+ configurable: true,
38
+ writable: true,
39
+ value: jest.fn()
40
+ });
41
+ Object.defineProperty(this, "changeIsReadProperty", {
42
+ enumerable: true,
43
+ configurable: true,
44
+ writable: true,
45
+ value: jest.fn()
46
+ });
47
+ }
48
+ }
49
+ function makeId() {
50
+ return Math.round(1e6 * Math.random()).toString(36);
51
+ }
52
+ function getServerStatusName(status) {
53
+ return {
54
+ [NotificationProcessStatus.Info]: 'Info',
55
+ [NotificationProcessStatus.InProgress]: 'InProgress',
56
+ [NotificationProcessStatus.Failure]: 'Failure',
57
+ [NotificationProcessStatus.Success]: 'Success',
58
+ }[status];
59
+ }
60
+ describe(NotificationsStore.name, () => {
61
+ let store;
62
+ beforeEach(() => {
63
+ store = undefined;
64
+ jest.clearAllMocks();
65
+ jest.useFakeTimers();
66
+ });
67
+ afterEach(() => {
68
+ store === null || store === void 0 ? void 0 : store.dispose();
69
+ jest.useRealTimers();
70
+ });
71
+ describe('when notification is added', () => {
72
+ let options;
73
+ let preventDuplicates;
74
+ beforeEach(() => {
75
+ options = { title: 'Foo', message: 'bar', duration: 0, progress: 0 };
76
+ preventDuplicates = undefined;
77
+ });
78
+ const subject = () => {
79
+ if (!store) {
80
+ store = new NotificationsStore();
81
+ store.initialize(0);
82
+ }
83
+ store.add(options, preventDuplicates);
84
+ };
85
+ function itAddsToast({ method = 'info' } = {}) {
86
+ test(`adds ${method} toast`, () => {
87
+ subject();
88
+ const { status } = options, toastOptions = __rest(options, ["status"]);
89
+ expect(toast[method]).toHaveBeenCalledWith(expect.objectContaining(toastOptions));
90
+ });
91
+ }
92
+ itAddsToast();
93
+ describe('when preventDuplicates is true', () => {
94
+ beforeEach(() => (preventDuplicates = true));
95
+ describe('with existing notification', () => {
96
+ beforeEach(() => {
97
+ subject();
98
+ jest.clearAllMocks();
99
+ });
100
+ test('ignores duplicate notification', () => {
101
+ subject();
102
+ expect(toast.info).not.toHaveBeenCalled();
103
+ });
104
+ describe('with different notification', () => {
105
+ beforeEach(() => (options.title = `!${options.title}`));
106
+ itAddsToast();
107
+ });
108
+ });
109
+ });
110
+ describe.each([
111
+ { status: Status.Success, method: 'success' },
112
+ { status: Status.Warning, method: 'warning' },
113
+ { status: Status.Error, method: 'danger' },
114
+ ])('when status is "$status"', ({ method, status }) => {
115
+ beforeEach(() => (options.status = status));
116
+ itAddsToast({ method });
117
+ });
118
+ describe('when notification has action', () => {
119
+ let navigate;
120
+ beforeEach(() => {
121
+ options.action = { label: 'foo', link: 'bar' };
122
+ navigate = jest.fn();
123
+ });
124
+ test('sets duration to false', () => {
125
+ subject();
126
+ expect(toast.info).toHaveBeenCalledWith(expect.objectContaining({ duration: false }));
127
+ });
128
+ describe('when action is clicked', () => {
129
+ const setup = () => {
130
+ var _a, _b, _c;
131
+ subject();
132
+ store.navigate = navigate;
133
+ (_c = (_a = jest.mocked(toast.info).mock.calls[0][0].actions) === null || _a === void 0 ? void 0 : (_b = _a.primary).onClick) === null || _c === void 0 ? void 0 : _c.call(_b, {});
134
+ };
135
+ test('dismisses toast', () => {
136
+ setup();
137
+ expect(toast.dismiss).toHaveBeenCalled();
138
+ });
139
+ test('navigates to link', () => {
140
+ setup();
141
+ expect(navigate).toHaveBeenCalledWith(options.action.link);
142
+ });
143
+ describe('when "navigate" is not defined', () => {
144
+ beforeEach(() => (navigate = undefined));
145
+ test('does nothing', () => {
146
+ expect(() => setup()).not.toThrow();
147
+ });
148
+ });
149
+ describe('when link is external', () => {
150
+ beforeEach(() => (options.action.external = true));
151
+ test('opens link in new window', () => {
152
+ const openSpy = jest.spyOn(window, 'open').mockImplementation(jest.fn());
153
+ setup();
154
+ expect(openSpy).toHaveBeenCalledWith(options.action.link);
155
+ });
156
+ });
157
+ describe('when action is callback', () => {
158
+ beforeEach(() => {
159
+ delete options.action.link;
160
+ options.action.onClick = jest.fn();
161
+ });
162
+ test('invokes callback', () => {
163
+ setup();
164
+ expect(options.action.onClick).toHaveBeenCalled();
165
+ });
166
+ });
167
+ });
168
+ });
169
+ });
170
+ describe('when notification is published', () => {
171
+ const userId = 42;
172
+ const api = new MockNotificationsApi();
173
+ const publisher = new MockNotificationsChannel();
174
+ const options = { title: 'Foo' };
175
+ let notification;
176
+ beforeEach(() => {
177
+ notification = {
178
+ id: 1,
179
+ userId,
180
+ type: 'ServerNotification',
181
+ status: NotificationProcessStatus.Info,
182
+ isRead: false,
183
+ createdOn: new Date(),
184
+ modifiedOn: new Date(),
185
+ version: 1,
186
+ payload: JSON.stringify(options),
187
+ };
188
+ });
189
+ afterEach(() => store === null || store === void 0 ? void 0 : store.dispose());
190
+ const subject = () => {
191
+ if (!store) {
192
+ store = new NotificationsStore(api, () => publisher);
193
+ store.initialize(userId);
194
+ }
195
+ publisher.emit('NotificationEvent', notification);
196
+ };
197
+ function itAddsToast(method = 'info') {
198
+ test(`adds ${method} toast`, () => {
199
+ subject();
200
+ expect(toast[method]).toHaveBeenCalledWith(expect.objectContaining(options));
201
+ });
202
+ }
203
+ itAddsToast();
204
+ describe.each([
205
+ { status: NotificationProcessStatus.Success, method: 'success' },
206
+ { status: NotificationProcessStatus.Failure, method: 'danger' },
207
+ { status: NotificationProcessStatus.InProgress, method: 'info' },
208
+ ])('when status is "$status"', ({ method, status }) => {
209
+ beforeEach(() => (notification.status = status));
210
+ itAddsToast(method);
211
+ });
212
+ describe('when notification is for different user', () => {
213
+ beforeEach(() => ++notification.userId);
214
+ test('ignores notification', () => {
215
+ subject();
216
+ expect(toast.info).not.toHaveBeenCalled();
217
+ });
218
+ });
219
+ describe('when notification is closed', () => {
220
+ const setup = () => {
221
+ var _a, _b;
222
+ subject();
223
+ (_b = (_a = jest.mocked(toast.info).mock.calls[0][0]).onClose) === null || _b === void 0 ? void 0 : _b.call(_a, {});
224
+ };
225
+ test('notifies api', () => {
226
+ setup();
227
+ expect(api.changeIsReadProperty).toHaveBeenCalledWith(notification.id, true, notification.version);
228
+ });
229
+ });
230
+ describe('when notification has interceptor', () => {
231
+ const newOptions = { title: `!${options.title}` };
232
+ const interceptor = jest.fn();
233
+ beforeEach(() => {
234
+ notification.type = makeId();
235
+ interceptor.mockImplementation(original => (Object.assign(Object.assign({}, original), { payload: newOptions })));
236
+ NotificationsStore.intercept(notification.type, interceptor);
237
+ });
238
+ test('adds toast with interceptor return value', () => {
239
+ subject();
240
+ expect(toast.info).toHaveBeenCalledWith(expect.objectContaining(newOptions));
241
+ });
242
+ describe('dismiss callback', () => {
243
+ let dismissCallback;
244
+ let onClose;
245
+ let toastId;
246
+ beforeEach(() => {
247
+ subject();
248
+ dismissCallback = interceptor.mock.calls[0][1];
249
+ onClose = jest.mocked(toast.info).mock.calls[0][0].onClose;
250
+ toastId = jest.mocked(toast.info).mock.results[0].value;
251
+ jest.clearAllMocks();
252
+ });
253
+ test('dismisses toast', () => {
254
+ dismissCallback();
255
+ expect(toast.dismiss).toHaveBeenCalledWith(toastId);
256
+ });
257
+ describe('when toast is already closed', () => {
258
+ beforeEach(() => onClose({}));
259
+ test('does nothing', () => {
260
+ dismissCallback();
261
+ expect(toast.dismiss).not.toHaveBeenCalled();
262
+ });
263
+ });
264
+ });
265
+ describe('when interceptor returns undefined', () => {
266
+ beforeEach(() => interceptor.mockReturnValue(undefined));
267
+ test('ignores notification', () => {
268
+ subject();
269
+ expect(toast.info).not.toHaveBeenCalled();
270
+ });
271
+ });
272
+ describe('when interceptor is removed', () => {
273
+ beforeEach(() => NotificationsStore.intercept(notification.type));
274
+ itAddsToast();
275
+ });
276
+ });
277
+ [NotificationProcessStatus.Info, NotificationProcessStatus.InProgress].forEach(status => {
278
+ const name = getServerStatusName(status);
279
+ describe(`when "${name}" notification already exists`, () => {
280
+ beforeEach(() => {
281
+ notification.status = status;
282
+ subject();
283
+ });
284
+ function itUpdatesToast() {
285
+ test('updates toast', () => {
286
+ subject();
287
+ expect(toast.update).toHaveBeenCalledWith(expect.any(String), expect.objectContaining(options));
288
+ });
289
+ }
290
+ function itIgnoresNotification() {
291
+ test('ignores notification', () => {
292
+ subject();
293
+ expect(toast.update).not.toHaveBeenCalled();
294
+ });
295
+ }
296
+ itIgnoresNotification();
297
+ describe('when duplicate is newer', () => {
298
+ beforeEach(() => (notification.modifiedOn = new Date(Date.now() + 1)));
299
+ itUpdatesToast();
300
+ describe('when duplicate has different status', () => {
301
+ beforeEach(() => (notification.status = NotificationProcessStatus.Success));
302
+ test('replaces toast', () => {
303
+ subject();
304
+ expect(toast.dismiss).toHaveBeenCalled();
305
+ expect(toast.success).toHaveBeenCalledWith(expect.objectContaining(options));
306
+ });
307
+ describe('when notification has no payload', () => {
308
+ beforeEach(() => delete notification.payload);
309
+ test('replaces with empty toast', () => {
310
+ subject();
311
+ expect(toast.dismiss).toHaveBeenCalled();
312
+ expect(toast.success).toHaveBeenCalledWith(expect.objectContaining({ title: undefined }));
313
+ });
314
+ });
315
+ if (status !== NotificationProcessStatus.InProgress) {
316
+ describe('when new status is "InProgress"', () => {
317
+ beforeEach(() => {
318
+ notification.status = NotificationProcessStatus.InProgress;
319
+ });
320
+ itUpdatesToast();
321
+ });
322
+ }
323
+ });
324
+ if (status === NotificationProcessStatus.InProgress) {
325
+ describe('when existing notification was closed', () => {
326
+ beforeEach(() => {
327
+ var _a, _b;
328
+ (_b = (_a = jest.mocked(toast.info).mock.calls[0][0]).onClose) === null || _b === void 0 ? void 0 : _b.call(_a, {});
329
+ });
330
+ itIgnoresNotification();
331
+ describe('when duplicate has different status', () => {
332
+ beforeEach(() => {
333
+ notification.status = NotificationProcessStatus.Success;
334
+ });
335
+ itAddsToast();
336
+ });
337
+ describe('when notification was close over a day ago', () => {
338
+ const DAY_INTERVAL = 24 * 60 * 60 * 1000;
339
+ beforeEach(() => {
340
+ jest.clearAllMocks();
341
+ jest.setSystemTime(Date.now() + DAY_INTERVAL + 1);
342
+ jest.advanceTimersByTime(DAY_INTERVAL + 1);
343
+ });
344
+ itAddsToast();
345
+ });
346
+ });
347
+ }
348
+ });
349
+ });
350
+ });
351
+ describe('when api has pending notifications', () => {
352
+ beforeEach(() => api.getNotifications.mockResolvedValue({ data: [notification] }));
353
+ test('adds toast', () => {
354
+ subject();
355
+ expect(toast.info).toHaveBeenCalledWith(expect.objectContaining(options));
356
+ });
357
+ });
358
+ });
359
+ });
360
+ //# sourceMappingURL=notifications.store.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notifications.store.test.js","sourceRoot":"","sources":["../../../src/stores/__tests__/notifications.store.test.ts"],"names":[],"mappings":"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"}
@@ -1,25 +1,37 @@
1
- import { NotificationsChannel } from '../notifications-channel';
2
1
  import { NotificationsApi } from '../api/notifications.api';
3
- import { Notification, NotificationMapper, DefaultNotificationOptions } from '../common';
2
+ import { DefaultNotificationOptions, Notification } from '../common';
3
+ import { NotificationInterceptor } from '../intercept';
4
+ import { NotificationsChannel } from '../notifications-channel';
5
+ type NavigateCallback = (path: string) => void;
4
6
  export declare class NotificationsStore {
7
+ #private;
5
8
  private readonly notificationsApi?;
6
9
  private readonly notificationsChannel?;
7
- static types: Map<string, NotificationMapper>;
8
- private innerNotifications;
10
+ static readonly interceptors: Map<string, NotificationInterceptor>;
9
11
  private index;
10
12
  private userId;
11
13
  private intervalId?;
12
- private closedNotifications;
14
+ private readonly notifications;
15
+ private readonly closedNotifications;
13
16
  constructor(notificationsApi?: NotificationsApi | undefined, notificationsChannel?: NotificationsChannel | undefined);
14
- static register: (type: string, mapper: NotificationMapper) => Map<string, NotificationMapper>;
15
- get notifications(): Notification[];
17
+ static intercept(type: string, fn?: NotificationInterceptor): void;
16
18
  private get publisher();
19
+ get navigate(): NavigateCallback | undefined;
20
+ set navigate(fn: NavigateCallback);
17
21
  initialize: (userId: number) => Promise<void>;
18
22
  dispose: () => void;
19
23
  add: (options: DefaultNotificationOptions, preventDuplicates?: boolean) => void;
20
24
  read: (notification: Notification) => void;
21
- private onPublisherEvent;
25
+ private readonly onPublisherEvent;
22
26
  private cleanupClosedNotifications;
23
27
  private updateIfNewer;
28
+ private getToastMethod;
29
+ private getToastProps;
30
+ private getToastActions;
31
+ private handleClick;
32
+ private handleClose;
33
+ private toClientNotification;
34
+ private toClientStatus;
24
35
  }
36
+ export {};
25
37
  //# sourceMappingURL=notifications.store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"notifications.store.d.ts","sourceRoot":"","sources":["../../src/stores/notifications.store.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,oBAAoB,EAA+B,MAAM,0BAA0B,CAAC;AAE7F,OAAO,EACH,gBAAgB,EAGnB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAEH,YAAY,EACZ,kBAAkB,EAGlB,0BAA0B,EAC7B,MAAM,WAAW,CAAC;AAYnB,qBACa,kBAAkB;IAee,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IAGxE,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IAjB1C,MAAM,CAAC,KAAK,kCAAyC;IAGrD,OAAO,CAAC,kBAAkB,CAAmC;IAE7D,OAAO,CAAC,KAAK,CAAM;IAEnB,OAAO,CAAC,MAAM,CAAK;IAEnB,OAAO,CAAC,UAAU,CAAC,CAAS;IAE5B,OAAO,CAAC,mBAAmB,CAAyC;gBAGT,gBAAgB,CAAC,8BAAkB,EAGzE,oBAAoB,CAAC,kCAAsB;IAKhE,MAAM,CAAC,QAAQ,SAAU,MAAM,UAAU,kBAAkB,qCACZ;IAE/C,IAAc,aAAa,mBAE1B;IAED,OAAO,KAAK,SAAS,GAIpB;IAED,UAAU,WAAkB,MAAM,mBAoBhC;IAEF,OAAO,aAML;IAGF,GAAG,YAAa,0BAA0B,sBAAsB,OAAO,UAsBrE;IAGF,IAAI,iBAAkB,YAAY,UAmBhC;IAGF,OAAO,CAAC,gBAAgB,CAWtB;IAEF,OAAO,CAAC,0BAA0B;IAQlC,OAAO,CAAC,aAAa;CAgBxB"}
1
+ {"version":3,"file":"notifications.store.d.ts","sourceRoot":"","sources":["../../src/stores/notifications.store.ts"],"names":[],"mappings":"AAIA,OAAO,EAEH,gBAAgB,EAGnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,0BAA0B,EAAE,YAAY,EAAiC,MAAM,WAAW,CAAC;AACpG,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAA+B,MAAM,0BAA0B,CAAC;AAiB7F,KAAK,gBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;AAI/C,qBACa,kBAAkB;;IAae,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IAGxE,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IAf1C,MAAM,CAAC,QAAQ,CAAC,YAAY,uCAA8C;IAE1E,OAAO,CAAC,KAAK,CAAM;IACnB,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,UAAU,CAAC,CAAS;IAE5B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAyC;IACvE,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAyC;gBAKlB,gBAAgB,CAAC,8BAAkB,EAGzE,oBAAoB,CAAC,kCAAsB;IAKhE,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,uBAAuB;IAQ3D,OAAO,KAAK,SAAS,GAEpB;IAED,IAAI,QAAQ,IAAI,gBAAgB,GAAG,SAAS,CAE3C;IAED,IAAI,QAAQ,CAAC,EAAE,EAAE,gBAAgB,EAEhC;IAED,UAAU,WAAkB,MAAM,mBAoBhC;IAEF,OAAO,aAML;IAGF,GAAG,YAAa,0BAA0B,sBAAsB,OAAO,UA2BrE;IAGF,IAAI,iBAAkB,YAAY,UAmBhC;IAGF,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAU/B;IAEF,OAAO,CAAC,0BAA0B;IAQlC,OAAO,CAAC,aAAa;IAmCrB,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,eAAe;IAcvB,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,oBAAoB;IA0B5B,OAAO,CAAC,cAAc;CAUzB"}