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.

99 lines 6.02 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 utils_1 = require("../../../../utils"); var utils_2 = require("./utils"); function useLocaleMessagesAuxiliary(_a) { var _this = this; var pluginApi = _a.pluginApi, fetchConfigs = _a.fetchConfigs; 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]; var localeDataWrapper = (0, utils_2.useGetNormalizedLocale)({ pluginApi: pluginApi, fetchConfigs: fetchConfigs }); var currentLocale = localeDataWrapper.data; (0, react_1.useEffect)(function () { if ((pluginApi === null || pluginApi === void 0 ? void 0 : pluginApi.localesBaseUrl) && !localeDataWrapper.loading) { 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 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: return [2 /*return*/, _a.sent()]; 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: // The first of the list is the fallback return [2 /*return*/, Promise.resolve(fallbackMessages)]; } }); }); })).then(function (values) { var fallbackLocaleMessages = values[0], desiredLocaleMessages = values[1]; setMessages((0, utils_2.mergeLocaleMessages)(desiredLocaleMessages, fallbackLocaleMessages)); if (!fallbackMessages) setFallbackMessages(fallbackLocaleMessages); }).finally(function () { setLoading(false); }); } }, [localeDataWrapper]); return { messages: messages, loading: loading, currentLocale: currentLocale.locale, }; } exports.default = useLocaleMessagesAuxiliary; //# sourceMappingURL=useLocaleMessages.js.map