bigbluebutton-html-plugin-sdk
Version:
This repository contains the SDK for developing BigBlueButton plugins. Plugins are React components that can be loaded from external sources by the BigBlueButton HTML5 client to extend its functionalities.
30 lines • 1.36 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.useUiData = void 0;
var react_1 = require("react");
var utils_1 = require("../../data-consumption/utils");
var hooks_1 = require("../../core/utils/hooks");
var consts_1 = require("./consts");
function useUiData(dataName, defaultValue) {
var _a = (0, react_1.useState)(defaultValue), data = _a[0], setData = _a[1];
var prevData = (0, hooks_1.usePreviousValue)(data);
// Use this state to avoid unnecessary updates into the data content
var _b = (0, react_1.useState)(defaultValue), deduplicatedData = _b[0], setDeduplicatedData = _b[1];
var dataStoringFunction = (function (customEvent) {
setData(customEvent.detail);
});
(0, react_1.useEffect)(function () {
if ((0, utils_1.sortedStringify)(data) !== (0, utils_1.sortedStringify)(prevData))
setDeduplicatedData(data);
}, [data]);
(0, react_1.useEffect)(function () {
window.addEventListener(dataName, dataStoringFunction);
window.dispatchEvent(new Event("".concat(consts_1.UI_DATA_LISTENER_SUBSCRIBED, "-").concat(dataName)));
return function () {
window.removeEventListener(dataName, dataStoringFunction);
};
}, []);
return deduplicatedData;
}
exports.useUiData = useUiData;
//# sourceMappingURL=hooks.js.map