bigbluebutton-html-plugin-sdk 0.0.63 → 0.0.65

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
@@ -305,6 +305,49 @@ So that the data will appear in the following form:
305
305
  | user-name | 1 | `<value>` |
306
306
 
307
307
 
308
+ ### External data resources
309
+
310
+ This is the new integration with external servers to fetch data in a secure manner.
311
+
312
+ This is possible by simply configuring the dataResource name in the manifest and then its endpoint in the URL meta parameter that goes in the create request. The manifest would look like:
313
+
314
+ ```json
315
+ {
316
+ // ...rest of manifest configuration
317
+ "remoteDataSources": [
318
+ {
319
+ "name": "allUsers",
320
+ "url": "${meta_pluginSettingsUserInformation}",
321
+ "fetchMode": "onMeetingCreate",
322
+ "permissions": ["moderator", "viewer"]
323
+ }
324
+ ]
325
+ }
326
+ ```
327
+
328
+ Then when creating the meeting send the following parameters along, adjusting to your needs and resources:
329
+
330
+ ```
331
+ meta_pluginSettingsUserInformation=https://<your-external-source-with-your-authentication>/api/users
332
+ pluginsManifests=[{"url": "http://<domain-of-your-manifest>/your-plugin/manifest.json"}]
333
+ ```
334
+
335
+ In the plugin, just use the function like:
336
+
337
+ ```typescript
338
+ pluginApi.getRemoteData('allUsers').then((response: Response) => {
339
+ if (response.ok) {
340
+ response.json().then((r: CourseData) => {
341
+ // Do something with the jsonified data (if it's a json)
342
+ }).catch((reason) => {
343
+ pluginLogger.error('Error while processing the json from success response: ', reason);
344
+ });
345
+ }
346
+ }).catch((reason) => {
347
+ pluginLogger.error('Error while fetching external resource: ', reason);
348
+ });
349
+ ```
350
+
308
351
 
309
352
  ### Frequently Asked Questions (FAQ)
310
353
 
@@ -22,6 +22,7 @@ var hooks_11 = require("../../ui-data-hooks/hooks");
22
22
  var hooks_12 = require("../../data-consumption/domain/meeting/from-core/hooks");
23
23
  var commands_2 = require("../../server-commands/commands");
24
24
  var hooks_13 = require("../../learning-analytics-dashboard/hooks");
25
+ var utils_1 = require("../../remote-data/utils");
25
26
  /**
26
27
  * Class responsible for either initialize or get the PluginApi
27
28
  *
@@ -69,6 +70,7 @@ var BbbPluginSdk = /** @class */ (function () {
69
70
  pluginApi.usePluginSettings = function () { return (0, settings_1.usePluginSettings)(pluginName); };
70
71
  pluginApi.serverCommands = (0, commands_2.serverCommands)(pluginName);
71
72
  pluginApi.sendGenericDataForLearningAnalyticsDashboard = function (data) { return (0, hooks_13.sendGenericDataForLearningAnalyticsDashboard)(data, pluginName); };
73
+ pluginApi.getRemoteData = function (dataSourceName) { return (0, utils_1.getRemoteData)(dataSourceName, pluginName); };
72
74
  }
73
75
  else {
74
76
  throw new Error('Plugin name not set');
@@ -1 +1 @@
1
- {"version":3,"file":"BbbPluginSdk.js","sourceRoot":"","sources":["../../../../src/core/api/BbbPluginSdk.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BbbPluginSdk.js","sourceRoot":"","sources":["../../../../src/core/api/BbbPluginSdk.ts"],"names":[],"mappings":"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"}
@@ -30,6 +30,7 @@ import { ServerCommands } from '../../server-commands/types';
30
30
  import { SendGenericDataForLearningAnalyticsDashboard } from '../../learning-analytics-dashboard/types';
31
31
  import { UseUserCameraDomElementsFunction } from '../../dom-element-manipulation/user-camera/types';
32
32
  import { ScreenshareHelperInterface, UserCameraHelperInterface } from '../../extensible-areas';
33
+ import { GetDataSource } from '../../remote-data/types';
33
34
  export type SetPresentationToolbarItems = (presentationToolbarItem: PresentationToolbarInterface[]) => string[];
34
35
  export type SetUserListDropdownItems = (userListDropdownItem: UserListDropdownInterface[]) => string[];
35
36
  export type SetActionButtonDropdownItems = (actionButtonDropdownInterface: ActionButtonDropdownInterface[]) => string[];
@@ -191,6 +192,13 @@ export interface PluginApi {
191
192
  *
192
193
  */
193
194
  sendGenericDataForLearningAnalyticsDashboard?: SendGenericDataForLearningAnalyticsDashboard;
195
+ /**
196
+ * Fetches external data from pre-defined data-source in manifest.
197
+ *
198
+ * @param dataSourceName - name of the data source
199
+ *
200
+ */
201
+ getRemoteData?: GetDataSource;
194
202
  }
195
203
  export interface PluginBrowserWindow extends Window {
196
204
  bbb_plugins: {
@@ -1 +1 @@
1
- export declare const useChatMessageDomElements: (messageIds: string[], pluginUuid: string) => HTMLDivElement[] | undefined;
1
+ export declare const useChatMessageDomElements: (messageIds: string[], pluginUuid: string) => any[];
@@ -1,12 +1,14 @@
1
1
  "use strict";
2
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
3
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
4
- if (ar || !(i in from)) {
5
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
6
- ar[i] = from[i];
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
7
8
  }
8
- }
9
- return to.concat(ar || Array.prototype.slice.call(from));
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
10
12
  };
11
13
  Object.defineProperty(exports, "__esModule", { value: true });
12
14
  exports.useChatMessageDomElements = void 0;
@@ -14,20 +16,37 @@ var react_1 = require("react");
14
16
  var enums_1 = require("../../enums");
15
17
  var enum_1 = require("../../../core/enum");
16
18
  var utils_1 = require("../../../data-consumption/utils");
19
+ var messageIdFromDomElement = function (element) { return ((element === null || element === void 0 ? void 0 : element.getAttribute('data-chat-message-id')) || ''); };
17
20
  var useChatMessageDomElements = function (messageIds, pluginUuid) {
18
- var _a = (0, react_1.useState)(), domElement = _a[0], setDomElement = _a[1];
19
- var _b = (0, react_1.useState)((messageIds) || []), messageIdsState = _b[0], setMessageIdsState = _b[1];
20
- var previousNeededIds = (0, react_1.useRef)();
21
+ var _a = (0, react_1.useState)([]), domElements = _a[0], setDomElements = _a[1];
22
+ var previousMessageIds = (0, react_1.useRef)([]);
21
23
  var handleDomElementUpdateEvent = (function (event) {
22
- var _a;
24
+ var _a, _b, _c;
23
25
  var detail = event.detail;
24
26
  if (detail.hook === enums_1.DomElementManipulationHooks.CHAT_MESSAGE) {
25
- var filteredDataFromBbbCore = ((_a = detail.data) === null || _a === void 0 ? void 0 : _a.filter(function (item) { return messageIdsState.includes(item.messageId); })) || [];
26
- var filteredStreamIdsFromBbbCore = filteredDataFromBbbCore.map(function (item) { return item.messageId; });
27
- if ((0, utils_1.sortedStringify)(filteredStreamIdsFromBbbCore)
28
- !== (0, utils_1.sortedStringify)(previousNeededIds.current)) {
29
- previousNeededIds.current = __spreadArray([], filteredStreamIdsFromBbbCore, true);
30
- setDomElement(filteredDataFromBbbCore.map(function (messageItemFromCore) { return messageItemFromCore.message; }));
27
+ var pageToUpdate_1 = (_a = detail.data) === null || _a === void 0 ? void 0 : _a.page;
28
+ if (pageToUpdate_1 === undefined)
29
+ return;
30
+ if (((_b = detail.data) === null || _b === void 0 ? void 0 : _b.messages.length) === 0) {
31
+ // indicates the page was unmounted in the client
32
+ // so we remove all stored elements for that page,
33
+ // since they might be invalid.
34
+ setDomElements(function (domElementsState) {
35
+ var newDomElements = __assign({}, domElementsState);
36
+ delete newDomElements[pageToUpdate_1];
37
+ return newDomElements;
38
+ });
39
+ }
40
+ var pageDomElementsFromBbbCore_1 = (_c = detail.data) === null || _c === void 0 ? void 0 : _c.messages.map(function (item) { return item.message; });
41
+ var receivedAnythingNew = pageDomElementsFromBbbCore_1.some(function (pageDomElement) {
42
+ var _a;
43
+ return (!((_a = domElements[pageToUpdate_1]) === null || _a === void 0 ? void 0 : _a.includes(pageDomElement)));
44
+ });
45
+ if (receivedAnythingNew) {
46
+ setDomElements(function (domElementsState) {
47
+ var _a;
48
+ return (__assign(__assign({}, domElementsState), (_a = {}, _a[pageToUpdate_1] = pageDomElementsFromBbbCore_1, _a)));
49
+ });
31
50
  }
32
51
  }
33
52
  });
@@ -56,6 +75,15 @@ var useChatMessageDomElements = function (messageIds, pluginUuid) {
56
75
  }, []);
57
76
  (0, react_1.useEffect)(function () {
58
77
  window.addEventListener(enum_1.HookEvents.BBB_CORE_SENT_NEW_DATA, handleDomElementUpdateEvent);
78
+ // Runs on code cleanup
79
+ return function () {
80
+ // On every `domElements` update, the event listener is removed and re-added to ensure
81
+ // the handler has access to the latest `domElements` state value.
82
+ window.removeEventListener(enum_1.HookEvents.BBB_CORE_SENT_NEW_DATA, handleDomElementUpdateEvent);
83
+ };
84
+ }, [domElements]);
85
+ var updateRequestedIds = function () {
86
+ previousMessageIds.current = messageIds;
59
87
  window.dispatchEvent(new CustomEvent(enum_1.HookEvents.PLUGIN_SENT_CHANGES_TO_BBB_CORE, {
60
88
  detail: {
61
89
  hook: enums_1.DomElementManipulationHooks.CHAT_MESSAGE,
@@ -66,16 +94,12 @@ var useChatMessageDomElements = function (messageIds, pluginUuid) {
66
94
  data: undefined,
67
95
  },
68
96
  }));
69
- // Runs on code cleanup
70
- return function () {
71
- // Everytime the state update, we remove the eventListener and then we re-add it.
72
- window.removeEventListener(enum_1.HookEvents.BBB_CORE_SENT_NEW_DATA, handleDomElementUpdateEvent);
73
- };
74
- }, [messageIdsState]);
75
- if ((0, utils_1.sortedStringify)((messageIds) || []) !== (0, utils_1.sortedStringify)(messageIdsState)) {
76
- setMessageIdsState((messageIds) || []);
97
+ };
98
+ if ((0, utils_1.sortedStringify)((messageIds) || []) !== (0, utils_1.sortedStringify)(previousMessageIds.current)) {
99
+ updateRequestedIds();
77
100
  }
78
- return domElement;
101
+ var flattenDomElements = (0, react_1.useMemo)(function () { return (Object.values(domElements).filter(function (i) { return Array.isArray(i); }).flat()); }, [domElements]);
102
+ return flattenDomElements.filter(function (domElement) { return (messageIds.includes(messageIdFromDomElement(domElement))); });
79
103
  };
80
104
  exports.useChatMessageDomElements = useChatMessageDomElements;
81
105
  //# sourceMappingURL=hooks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../../../src/dom-element-manipulation/chat/message/hooks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../../../src/dom-element-manipulation/chat/message/hooks.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,14 @@ export interface ChatMessageDomElementsArguments {
3
3
  messageIds: string[];
4
4
  pluginUuid: string;
5
5
  }
6
- export interface UpdatedEventDetailsForChatMessageDomElements {
6
+ export interface MessageDetails {
7
7
  messageId: string;
8
8
  message: HTMLDivElement;
9
9
  }
10
+ export interface UpdatedEventDetailsForChatMessageDomElements {
11
+ page: number;
12
+ messages: MessageDetails[];
13
+ }
14
+ export interface RenderedChatMessages {
15
+ [pageNumber: number]: HTMLDivElement[];
16
+ }
@@ -0,0 +1 @@
1
+ export type GetDataSource = (dataSourceName: string) => Promise<object>;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/remote-data/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ export declare const getRemoteData: (dataSourceName: string, pluginName: string) => Promise<Response>;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getRemoteData = void 0;
4
+ var getRemoteData = function (dataSourceName, pluginName) {
5
+ var _a;
6
+ return fetch("/api/plugin/".concat(pluginName, "/").concat(dataSourceName, "/"), {
7
+ credentials: 'include',
8
+ headers: {
9
+ 'x-session-token': (_a = new URLSearchParams(window.location.search).get('sessionToken')) !== null && _a !== void 0 ? _a : '',
10
+ },
11
+ });
12
+ };
13
+ exports.getRemoteData = getRemoteData;
14
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/remote-data/utils.ts"],"names":[],"mappings":";;;AAAO,IAAM,aAAa,GAAG,UAAC,cAAsB,EAAE,UAAkB;;IAAK,OAAA,KAAK,CAAC,sBAAe,UAAU,cAAI,cAAc,MAAG,EAAE;QACjI,WAAW,EAAE,SAAS;QACtB,OAAO,EAAE;YACP,iBAAiB,EAAE,MAAA,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,mCAAI,EAAE;SACzF;KACF,CAAC,CAAA;CAAA,CAAC;AALU,QAAA,aAAa,iBAKvB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bigbluebutton-html-plugin-sdk",
3
- "version": "0.0.63",
3
+ "version": "0.0.65",
4
4
  "homepage": "https://github.com/bigbluebutton/bigbluebutton-html-plugin-sdk",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",