UNPKG

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.

102 lines 6.01 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __generator = (this && this.__generator) || function (thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (g && (g = 0, op[0] && (_ = 0)), _) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; Object.defineProperty(exports, "__esModule", { value: true }); var react_1 = require("react"); var ui_data_1 = require("../../../../ui-data"); var utils_1 = require("../../../../utils"); var utils_2 = require("./utils"); function useLocaleMessagesAuxiliary(_a) { var _this = this; var pluginApi = _a.pluginApi, fetchConfigs = _a.fetchConfigs; var currentLocale = pluginApi.useUiData(ui_data_1.IntlLocaleUiDataNames.CURRENT_LOCALE, { locale: 'en', fallbackLocale: 'en', }); var _b = (0, react_1.useState)(true), loading = _b[0], setLoading = _b[1]; var _c = (0, react_1.useState)({}), messages = _c[0], setMessages = _c[1]; var _d = (0, react_1.useState)(), fallbackMessages = _d[0], setFallbackMessages = _d[1]; (0, react_1.useEffect)(function () { if ((pluginApi === null || pluginApi === void 0 ? void 0 : pluginApi.localesBaseUrl) && currentLocale.locale) { var localesBaseUrl = pluginApi.localesBaseUrl; var locale = currentLocale.locale, fallbackLocale = currentLocale.fallbackLocale; var localeUrl = "".concat(localesBaseUrl, "/").concat(locale, ".json"); var fallbackLocaleUrl_1 = "".concat(localesBaseUrl, "/").concat(fallbackLocale, ".json"); utils_1.pluginLogger.info("Fetching locale [".concat(locale, "] and fallback [").concat(fallbackLocale, "] for plugin [").concat(pluginApi.pluginName, "]")); var urlToFetchList = [ fallbackLocaleUrl_1, ]; if (locale !== fallbackLocale) urlToFetchList.push(localeUrl); Promise.all(urlToFetchList.map(function (url) { return __awaiter(_this, void 0, void 0, function () { var a, err_1; return __generator(this, function (_a) { switch (_a.label) { case 0: if (!(url !== fallbackLocaleUrl_1 || !fallbackMessages)) return [3 /*break*/, 4]; _a.label = 1; case 1: _a.trys.push([1, 3, , 4]); return [4 /*yield*/, (0, utils_2.fetchLocaleAndStore)(url, fetchConfigs)]; case 2: a = _a.sent(); return [2 /*return*/, a]; case 3: err_1 = _a.sent(); utils_1.pluginLogger.error("[".concat(pluginApi.pluginName, "] - Something went wrong while trying to fetch [").concat(url, "] or parse its result: "), err_1); return [2 /*return*/, Promise.resolve({})]; case 4: return [2 /*return*/, Promise.resolve(fallbackMessages)]; } }); }); })).then(function (values) { var desiredLocale = values[0], fallbackLocaleMessages = values[1]; setMessages((0, utils_2.mergeLocaleMessages)(desiredLocale, fallbackLocaleMessages)); if (!fallbackMessages) setFallbackMessages(fallbackLocaleMessages); }).finally(function () { setLoading(false); }); } }, [currentLocale]); return { messages: messages, loading: loading, currentLocale: currentLocale.locale, }; } exports.default = useLocaleMessagesAuxiliary; //# sourceMappingURL=useLocaleMessages.js.map