@evoke-platform/context 1.0.0-dev.79 → 1.0.0-dev.80

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/README.md CHANGED
@@ -199,6 +199,8 @@ absolute URL.
199
199
 
200
200
  ### SignalR Connection
201
201
 
202
+ Deprecated
203
+
202
204
  - [useSignalRConnection](#usesignalrconnection)
203
205
  - [documentChanges](#documentchangessubscribeobjectidinstanceid-data-documentchange)
204
206
  - [instanceChanges](#instancechangessubscribeobjectid-instanceids-instancechange)
@@ -285,6 +287,102 @@ instanceChanges.subscribe('myObjectId', callback);
285
287
  instanceChanges.unsubscribe('myObjectId', callback);
286
288
  ```
287
289
 
290
+ ### Notification
291
+
292
+ - [useNofitication](#usenotification)
293
+ - [documentChanges](#documentchangessubscribeobjectidinstanceid-data-documentchange)
294
+ - [instanceChanges](#instancechangessubscribeobjectid-instanceids-instancechange)
295
+
296
+ #### `useNofitication()`
297
+
298
+ Hook used to obtain an instanceChanges instance and a documentChanges instance.
299
+
300
+ ##### `documentChanges.subscribe(objectId, instanceId, (data: DocumentChange[]]) => {})`
301
+
302
+ Subscribe to the specified object instance changes.
303
+
304
+ ```javascript
305
+ const { documentChanges } = useNotification();
306
+
307
+ documentChanges.subscribe('myObjectId', 'myInstanceId', (data) => {
308
+ console.log(data);
309
+ });
310
+ ```
311
+
312
+ The data provided to the callback will be an array of `DocumentChange` which contains the
313
+ following data:
314
+
315
+ - `objectId`
316
+ - Object describing the instance associated with the updated document.
317
+ - `instanceId`
318
+ - Instance that the updated document is associated with.
319
+ - `documentId`
320
+ - Document that was updated.
321
+ - `type`
322
+ - The type of update. Possible values are `BlobCreated`, `BlobDeleted`, and `BlobMetadataUpdated`.
323
+
324
+ ##### `documentChanges.unsubscribe(objectId, instanceId, (changes: DocumentChange[]) => {})`
325
+
326
+ Unsubscribe to the specified object instance changes.
327
+
328
+ Callback function is optional.
329
+ If callback function is not defined, all subscriptions will be removed.
330
+ If callback function is defined, you must pass the exact same Function instance as was previously passed to `documentChanges.subscribe`.
331
+ Passing a different instance (even if the function body is the same) will not remove the subscription.
332
+
333
+ ```javascript
334
+ const { documentChanges } = useNotification();
335
+
336
+ const callback = (changes: DocumentChange[]) => {
337
+ console.log(changes);
338
+ };
339
+
340
+ documentChanges.subscribe('myObjectId' , 'myInstanceId', callback);
341
+
342
+ documentChanges.unsubscribe('myObjectId', 'myInstanceId', callback);
343
+ ```
344
+
345
+ ##### `instanceChanges.subscribe(objectId, (changes: InstanceChange[]) => {})`
346
+
347
+ Subscribe to the specified object changes.
348
+
349
+ ```javascript
350
+ const { instanceChanges } = useNotification();
351
+
352
+ instanceChanges.subscribe('myObjectId', (changes) => {
353
+ console.log(changes);
354
+ });
355
+ ```
356
+
357
+ The data provided to the callback will be an array of `InstanceChange` which contains the
358
+ following data:
359
+
360
+ - `objectId`
361
+ - Object describing the instance associated with the updated document.
362
+ - `instanceId`
363
+ - Instance that the updated document is associated with.
364
+
365
+ ##### `instanceChanges.unsubscribe(objectId, (changes: InstanceChange[]) => {})`
366
+
367
+ Unsubscribe to the specified object changes.
368
+
369
+ Callback function is optional.
370
+ If callback function is not defined, all subscriptions will be removed.
371
+ If callback function is defined, you must pass the exact same Function instance as was previously passed to `instanceChanges.subscribe`.
372
+ Passing a different instance (even if the function body is the same) will not remove the subscription.
373
+
374
+ ```javascript
375
+ const { instanceChanges } = useNotification();
376
+
377
+ const callback = (changes: InstanceChange[]) => {
378
+ console.log(changes);
379
+ };
380
+
381
+ instanceChanges.subscribe('myObjectId', callback);
382
+
383
+ instanceChanges.unsubscribe('myObjectId', callback);
384
+ ```
385
+
288
386
  ## License
289
387
 
290
388
  [MIT](https://github.com/Evoke-Platform/evoke-sdk/blob/main/LICENSE)
@@ -13,6 +13,8 @@ import axios from 'axios';
13
13
  import { useMemo } from 'react';
14
14
  import { useAuthenticationContext } from '../authentication/AuthenticationContextProvider.js';
15
15
  import { useApiBaseUrl } from './ApiBaseUrlProvider.js';
16
+ import { randomUUID } from 'crypto';
17
+ const sessionId = randomUUID();
16
18
  export class ApiServices {
17
19
  constructor(api, authContext) {
18
20
  this.api = api;
@@ -21,6 +23,7 @@ export class ApiServices {
21
23
  const token = yield authContext.getAccessToken();
22
24
  config.headers = Object.assign({}, config.headers, {
23
25
  Authorization: `Bearer ${token}`,
26
+ 'X-Session-Id': sessionId,
24
27
  });
25
28
  return config;
26
29
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"apiServices.js","sourceRoot":"","sources":["../../src/api/apiServices.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"apiServices.js","sourceRoot":"","sources":["../../src/api/apiServices.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import React from 'react';
2
+ export type NotificationConnectionInfo = {
3
+ url: string;
4
+ accessToken: string;
5
+ };
6
+ export type InstanceSubscription = {
7
+ subscribe: (objectId: string, callback: (...args: InstanceChange[]) => void) => void;
8
+ unsubscribe: (objectId: string, callback?: (...args: InstanceChange[]) => void) => void;
9
+ };
10
+ export type DocumentSubscription = {
11
+ subscribe: (objectId: string, instanceId: string | undefined, callback: (...args: DocumentChange[]) => void) => void;
12
+ unsubscribe: (objectId: string, instanceId: string | undefined, callback?: (...args: DocumentChange[]) => void) => void;
13
+ };
14
+ export type DocumentChange = {
15
+ objectId: string;
16
+ instanceId: string;
17
+ documentId: string;
18
+ type: string;
19
+ };
20
+ export type InstanceChange = {
21
+ objectId: string;
22
+ instanceId: string;
23
+ };
24
+ export type NotificationContextType = {
25
+ documentChanges?: DocumentSubscription;
26
+ instanceChanges?: InstanceSubscription;
27
+ };
28
+ export declare const NotificationContext: React.Context<NotificationContextType>;
29
+ declare function NotificationProvider({ children }: {
30
+ children: React.ReactNode;
31
+ }): import("react/jsx-runtime").JSX.Element;
32
+ export declare function useNotification(): NotificationContextType;
33
+ export default NotificationProvider;
@@ -0,0 +1,135 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { jsx as _jsx } from "react/jsx-runtime";
11
+ import { HubConnectionBuilder, LogLevel, } from '@microsoft/signalr/dist/esm/index.js';
12
+ import { createContext, useContext, useEffect, useState } from 'react';
13
+ import { useApiServices } from '../api/index.js';
14
+ export const NotificationContext = createContext({});
15
+ NotificationContext.displayName = 'NotificationContext';
16
+ function NotificationProvider({ children }) {
17
+ const [instancesNotification, setInstancesNotification] = useState();
18
+ const [documentsNotification, setDocumentsNotification] = useState();
19
+ const api = useApiServices();
20
+ useEffect(() => {
21
+ const getConnectionInfo = (hubName) => {
22
+ return api.post(`/notification/hubs/${hubName}/negotiate`);
23
+ };
24
+ const getConnection = () => __awaiter(this, void 0, void 0, function* () {
25
+ try {
26
+ const instancesConnectionInfo = yield getConnectionInfo('instanceChanges');
27
+ const documentsConnectionInfo = yield getConnectionInfo('documentChanges');
28
+ if (instancesConnectionInfo) {
29
+ const options = {
30
+ accessTokenFactory: () => {
31
+ var _a;
32
+ return (_a = instancesConnectionInfo.accessToken) !== null && _a !== void 0 ? _a : '';
33
+ },
34
+ };
35
+ const connection = new HubConnectionBuilder()
36
+ .withUrl(instancesConnectionInfo.url, options)
37
+ .configureLogging(LogLevel.Error)
38
+ .withAutomaticReconnect()
39
+ .build();
40
+ setInstancesNotification(connection);
41
+ }
42
+ if (documentsConnectionInfo) {
43
+ const options = {
44
+ accessTokenFactory: () => {
45
+ var _a;
46
+ return (_a = documentsConnectionInfo.accessToken) !== null && _a !== void 0 ? _a : '';
47
+ },
48
+ };
49
+ const connection = new HubConnectionBuilder()
50
+ .withUrl(documentsConnectionInfo.url, options)
51
+ .configureLogging(LogLevel.Error)
52
+ .withAutomaticReconnect()
53
+ .build();
54
+ setDocumentsNotification(connection);
55
+ }
56
+ // eslint-disable-next-line no-empty
57
+ }
58
+ catch (err) {
59
+ console.log(err);
60
+ }
61
+ });
62
+ getConnection();
63
+ }, []);
64
+ useEffect(() => {
65
+ let documentsConnectionStopped = false;
66
+ const startConnection = (connection, numOfAttempts) => __awaiter(this, void 0, void 0, function* () {
67
+ yield connection.start().catch((error) => {
68
+ if (numOfAttempts < 4 && !documentsConnectionStopped) {
69
+ setTimeout(() => {
70
+ if (!documentsConnectionStopped) {
71
+ startConnection(connection, numOfAttempts + 1);
72
+ }
73
+ }, 2000);
74
+ }
75
+ else {
76
+ console.warn(`Cannot start connection to Notification Service due to error "${error}"`);
77
+ }
78
+ });
79
+ });
80
+ if (documentsNotification) {
81
+ startConnection(documentsNotification, 0);
82
+ }
83
+ return () => {
84
+ documentsNotification === null || documentsNotification === void 0 ? void 0 : documentsNotification.stop();
85
+ documentsConnectionStopped = true;
86
+ };
87
+ }, [documentsNotification]);
88
+ useEffect(() => {
89
+ let instancesConnectionStopped = false;
90
+ const startConnection = (connection, numOfAttempts) => __awaiter(this, void 0, void 0, function* () {
91
+ yield connection.start().catch((error) => {
92
+ if (numOfAttempts < 4 && !instancesConnectionStopped) {
93
+ setTimeout(() => {
94
+ if (!instancesConnectionStopped) {
95
+ startConnection(connection, numOfAttempts + 1);
96
+ }
97
+ }, 2000);
98
+ }
99
+ else {
100
+ console.warn(`Cannot start connection to Notification Service due to error "${error}"`);
101
+ }
102
+ });
103
+ });
104
+ if (instancesNotification) {
105
+ startConnection(instancesNotification, 0);
106
+ }
107
+ return () => {
108
+ instancesNotification === null || instancesNotification === void 0 ? void 0 : instancesNotification.stop();
109
+ instancesConnectionStopped = true;
110
+ };
111
+ }, [instancesNotification]);
112
+ return (_jsx(NotificationContext.Provider, { value: {
113
+ documentChanges: documentsNotification
114
+ ? {
115
+ subscribe: (objectId, instanceId, callback) => documentsNotification.on(`${objectId}/${instanceId}`, callback),
116
+ unsubscribe: (objectId, instanceId, callback) => callback
117
+ ? documentsNotification.off(`${objectId}/${instanceId}`, callback)
118
+ : documentsNotification.off(`${objectId}/${instanceId}`),
119
+ }
120
+ : undefined,
121
+ instanceChanges: instancesNotification
122
+ ? {
123
+ subscribe: (objectId, callback) => instancesNotification.on(objectId, callback),
124
+ unsubscribe: (objectId, callback) => callback
125
+ ? instancesNotification.off(objectId, callback)
126
+ : instancesNotification.off(objectId),
127
+ }
128
+ : undefined,
129
+ }, children: children }));
130
+ }
131
+ export function useNotification() {
132
+ return useContext(NotificationContext);
133
+ }
134
+ export default NotificationProvider;
135
+ //# sourceMappingURL=NotificationProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NotificationProvider.js","sourceRoot":"","sources":["../../src/notification/NotificationProvider.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './NotificationProvider.js';
2
+ export { default as NotificationProvider } from './NotificationProvider.js';
@@ -0,0 +1,3 @@
1
+ export * from './NotificationProvider.js';
2
+ export { default as NotificationProvider } from './NotificationProvider.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/notification/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,2BAA2B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@evoke-platform/context",
3
- "version": "1.0.0-dev.79",
3
+ "version": "1.0.0-dev.80",
4
4
  "description": "Utilities that provide context to Evoke platform widgets",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",