From 5d7b1cec28f0f479d087756d5f57ace5e2983ecd Mon Sep 17 00:00:00 2001 From: Guilherme Leme Date: Mon, 28 Apr 2025 16:52:04 -0300 Subject: [PATCH] [fix-locale] fix problem where multiple plugins would interfere in each others locales. --- src/core/api/BbbPluginSdk.ts | 7 ++++++- src/core/api/types.ts | 1 + .../locale-messages/subscriptions.ts | 12 ------------ .../plugin-information/locale-messages/types.ts | 5 ----- .../locale-messages/useLocaleMessages.ts | 13 ++++--------- 5 files changed, 11 insertions(+), 27 deletions(-) delete mode 100644 src/core/auxiliary/plugin-information/locale-messages/subscriptions.ts diff --git a/src/core/api/BbbPluginSdk.ts b/src/core/api/BbbPluginSdk.ts index 89253a97..ebc3f214 100644 --- a/src/core/api/BbbPluginSdk.ts +++ b/src/core/api/BbbPluginSdk.ts @@ -162,7 +162,11 @@ export abstract class BbbPluginSdk { * @returns The PluginApi object * */ - public static getPluginApi(uuid: string, pluginName?: string): PluginApi { + public static getPluginApi( + uuid: string, + pluginName?: string, + localesBaseUrl?: string, + ): PluginApi { if (!window.bbb_plugins) window.bbb_plugins = {}; if (Object.keys(window.bbb_plugins).indexOf(uuid) === -1) { window.bbb_plugins[uuid] = { @@ -186,6 +190,7 @@ export abstract class BbbPluginSdk { }, getSessionToken: () => getSessionToken(), pluginName, + localesBaseUrl, }; } diff --git a/src/core/api/types.ts b/src/core/api/types.ts index 6a56518b..63cf3375 100644 --- a/src/core/api/types.ts +++ b/src/core/api/types.ts @@ -96,6 +96,7 @@ export type SetGenericContentItems = ( */ export interface PluginApi { pluginName?: string; + localesBaseUrl?: string; // --- Extensible Areas Setters --- setPresentationToolbarItems: SetPresentationToolbarItems; setUserListDropdownItems: SetUserListDropdownItems; diff --git a/src/core/auxiliary/plugin-information/locale-messages/subscriptions.ts b/src/core/auxiliary/plugin-information/locale-messages/subscriptions.ts deleted file mode 100644 index 4ca2697a..00000000 --- a/src/core/auxiliary/plugin-information/locale-messages/subscriptions.ts +++ /dev/null @@ -1,12 +0,0 @@ -const GET_PLUGIN_INFORMATION = ` -subscription GetPluginInformation { - plugin { - javascriptEntrypointIntegrity - javascriptEntrypointUrl - localesBaseUrl - name - } -} -`; - -export { GET_PLUGIN_INFORMATION }; diff --git a/src/core/auxiliary/plugin-information/locale-messages/types.ts b/src/core/auxiliary/plugin-information/locale-messages/types.ts index 89cefbea..01181983 100644 --- a/src/core/auxiliary/plugin-information/locale-messages/types.ts +++ b/src/core/auxiliary/plugin-information/locale-messages/types.ts @@ -11,10 +11,6 @@ interface PluginInformationResult { localesBaseUrl: string; } -interface GraphqlResponseWrapper { - plugin: PluginInformationResult[]; -} - interface IntlMessages { loading: boolean; messages: Record; @@ -26,7 +22,6 @@ type UseLocaleMessagesFunction = (fetchConfigs?: RequestInit) => IntlMessages; export { UseLocaleMessagesProps, PluginInformationResult, - GraphqlResponseWrapper, IntlMessages, UseLocaleMessagesFunction, }; diff --git a/src/core/auxiliary/plugin-information/locale-messages/useLocaleMessages.ts b/src/core/auxiliary/plugin-information/locale-messages/useLocaleMessages.ts index 7db70538..4eb51cc6 100644 --- a/src/core/auxiliary/plugin-information/locale-messages/useLocaleMessages.ts +++ b/src/core/auxiliary/plugin-information/locale-messages/useLocaleMessages.ts @@ -1,8 +1,7 @@ import * as React from 'react'; import { IntlLocaleUiDataNames } from '../../../../ui-data-hooks'; import { pluginLogger } from '../../../../utils'; -import { GraphqlResponseWrapper, IntlMessages, UseLocaleMessagesProps } from './types'; -import { GET_PLUGIN_INFORMATION } from './subscriptions'; +import { IntlMessages, UseLocaleMessagesProps } from './types'; function useLocaleMessagesAuxiliary( { pluginApi, fetchConfigs }: UseLocaleMessagesProps, @@ -15,13 +14,9 @@ function useLocaleMessagesAuxiliary( const [loading, setLoading] = React.useState(true); const [messages, setMessages] = React.useState>({}); - const { data: pluginInformation } = pluginApi.useCustomSubscription!( - GET_PLUGIN_INFORMATION, - ); - React.useEffect(() => { - if (pluginInformation && pluginInformation.plugin && currentLocale.locale) { - const { localesBaseUrl } = pluginInformation.plugin[0]; + if (pluginApi?.localesBaseUrl && currentLocale.locale) { + const { localesBaseUrl } = pluginApi; const { locale } = currentLocale; const localeUrl = `${localesBaseUrl}/${locale}.json`; fetch(localeUrl, fetchConfigs).then((result) => result.json()).then((localeMessages) => { @@ -32,7 +27,7 @@ function useLocaleMessagesAuxiliary( pluginLogger.error(`Something went wrong while trying to fetch ${localeUrl}: `, err); }); } - }, [pluginInformation, currentLocale]); + }, [currentLocale]); return { messages, loading,