@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 +98 -0
- package/dist/api/apiServices.js +3 -0
- package/dist/api/apiServices.js.map +1 -1
- package/dist/notification/NotificationProvider.d.ts +33 -0
- package/dist/notification/NotificationProvider.js +135 -0
- package/dist/notification/NotificationProvider.js.map +1 -0
- package/dist/notification/index.d.ts +2 -0
- package/dist/notification/index.js +3 -0
- package/dist/notification/index.js.map +1 -0
- package/package.json +1 -1
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)
|
package/dist/api/apiServices.js
CHANGED
|
@@ -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":"AAAA,oDAAoD;AACpD,+CAA+C;;;;;;;;;;AAE/C,OAAO,KAA2D,MAAM,OAAO,CAAC;AAChF,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAyB,wBAAwB,EAAE,MAAM,oDAAoD,CAAC;AACrH,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;
|
|
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 @@
|
|
|
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"}
|