diff --git a/apps/meteor/app/ui-message/client/actionButtons/messageAction.ts b/apps/meteor/app/ui-message/client/actionButtons/messageAction.ts index e0a0d94a3f4dfe07e2bba6096f3d53b898999bd6..29a45ded6a1d404fe3285ec497de10ab8a29b0fd 100644 --- a/apps/meteor/app/ui-message/client/actionButtons/messageAction.ts +++ b/apps/meteor/app/ui-message/client/actionButtons/messageAction.ts @@ -3,7 +3,6 @@ import type { IUIActionButton } from '@rocket.chat/apps-engine/definition/ui'; import { Utilities } from '../../../../ee/lib/misc/Utilities'; import { MessageAction } from '../../../ui-utils/client'; import { messageArgs } from '../../../../client/lib/utils/messageArgs'; -import { t } from '../../../utils/lib/i18n'; import { triggerActionButtonAction } from '../ActionManager'; import { applyButtonFilters } from './lib/applyButtonFilters'; @@ -14,7 +13,7 @@ export const onAdded = (button: IUIActionButton): void => MessageAction.addButton({ id: getIdForActionButton(button), icon: '' as any, - label: t(Utilities.getI18nKeyForApp(button.labelI18n, button.appId)) as any, + label: Utilities.getI18nKeyForApp(button.labelI18n, button.appId), context: button.when?.messageActionContext || ['message', 'message-mobile', 'threads', 'starred'], condition({ room }) { return applyButtonFilters(button, room); diff --git a/apps/meteor/app/ui-message/client/actionButtons/messageBox.ts b/apps/meteor/app/ui-message/client/actionButtons/messageBox.ts index 828c6bcaf577278da73f2c71286b9e09416679dc..d07ecbc23ad8cba15a7aa9e849634b25b1b18137 100644 --- a/apps/meteor/app/ui-message/client/actionButtons/messageBox.ts +++ b/apps/meteor/app/ui-message/client/actionButtons/messageBox.ts @@ -1,11 +1,9 @@ import type { IUIActionButton } from '@rocket.chat/apps-engine/definition/ui'; -import type { TranslationKey } from '@rocket.chat/ui-contexts'; import { ChatRoom } from '../../../models/client'; import { messageBox } from '../../../ui-utils/client'; import { applyButtonFilters } from './lib/applyButtonFilters'; import { triggerActionButtonAction } from '../ActionManager'; -import { t } from '../../../utils/lib/i18n'; import { Utilities } from '../../../../ee/lib/misc/Utilities'; import { RoomManager } from '../../../../client/lib/RoomManager'; import { asReactiveSource } from '../../../../client/lib/tracker'; @@ -14,7 +12,7 @@ const getIdForActionButton = ({ appId, actionId }: IUIActionButton): string => ` export const onAdded = (button: IUIActionButton): void => // eslint-disable-next-line no-void - void messageBox.actions.add('Apps', t(Utilities.getI18nKeyForApp(button.labelI18n, button.appId)) as TranslationKey, { + void messageBox.actions.add('Apps', Utilities.getI18nKeyForApp(button.labelI18n, button.appId), { id: getIdForActionButton(button), // icon: button.icon || '', condition() { diff --git a/apps/meteor/app/ui-message/client/actionButtons/tabbar.ts b/apps/meteor/app/ui-message/client/actionButtons/tabbar.ts index 1ff5a3809aebe6213966e9b4bec93556527875b1..26352cd9b59a47cb170df6a628d700e739bb3ed1 100644 --- a/apps/meteor/app/ui-message/client/actionButtons/tabbar.ts +++ b/apps/meteor/app/ui-message/client/actionButtons/tabbar.ts @@ -2,7 +2,6 @@ import type { IUIActionButton } from '@rocket.chat/apps-engine/definition/ui'; import { addAction, deleteAction } from '../../../../client/views/room/lib/Toolbox'; import { Utilities } from '../../../../ee/lib/misc/Utilities'; -import { t } from '../../../utils/lib/i18n'; import { triggerActionButtonAction } from '../ActionManager'; import { applyButtonFilters } from './lib/applyButtonFilters'; @@ -16,7 +15,7 @@ export const onAdded = (button: IUIActionButton): void => id: button.actionId, icon: undefined, // Apps won't provide icons for now order: 300, // Make sure the button only shows up inside the room toolbox - title: t(Utilities.getI18nKeyForApp(button.labelI18n, button.appId)) as any, + title: Utilities.getI18nKeyForApp(button.labelI18n, button.appId), // Filters were applied in the applyButtonFilters function // if the code made it this far, the button should be shown groups: ['group', 'channel', 'live', 'team', 'direct', 'direct_multiple'], diff --git a/apps/meteor/client/providers/TranslationProvider.tsx b/apps/meteor/client/providers/TranslationProvider.tsx index 36b7c8d998456a6be5a7062f7d60328486a9b706..122579c8e7bbdcfafc328bfd77a1a72ce35bb318 100644 --- a/apps/meteor/client/providers/TranslationProvider.tsx +++ b/apps/meteor/client/providers/TranslationProvider.tsx @@ -11,7 +11,9 @@ import type { ReactElement, ReactNode } from 'react'; import React, { useEffect, useMemo } from 'react'; import { I18nextProvider, initReactI18next, useTranslation } from 'react-i18next'; +import { CachedCollectionManager } from '../../app/ui-cached-collection/client'; import { i18n, addSprinfToI18n } from '../../app/utils/lib/i18n'; +import { AppClientOrchestratorInstance } from '../../ee/client/apps/orchestrator'; import { applyCustomTranslations } from '../lib/utils/applyCustomTranslations'; import { filterLanguage } from '../lib/utils/filterLanguage'; import { isRTLScriptLanguage } from '../lib/utils/isRTLScriptLanguage'; @@ -218,6 +220,15 @@ const TranslationProvider = ({ children }: TranslationProviderProps): ReactEleme }); }, [language, loadLocale, availableLanguages]); + useEffect(() => { + const cb = () => { + AppClientOrchestratorInstance.getAppClientManager().initialize(); + AppClientOrchestratorInstance.load(); + }; + CachedCollectionManager.onLogin(cb); + return () => CachedCollectionManager.off('login', cb); + }, []); + return ( <I18nextProvider i18n={i18nextInstance}> <TranslationProviderInner children={children} availableLanguages={availableLanguages} /> diff --git a/apps/meteor/ee/client/apps/orchestrator.ts b/apps/meteor/ee/client/apps/orchestrator.ts index 80a8e2cbf6ef4c49f1fca546945599707e3aeda6..41efc3e6ed096c21bb43589cf032b40a0381ea42 100644 --- a/apps/meteor/ee/client/apps/orchestrator.ts +++ b/apps/meteor/ee/client/apps/orchestrator.ts @@ -5,10 +5,8 @@ import type { IPermission } from '@rocket.chat/apps-engine/definition/permission import type { ISetting } from '@rocket.chat/apps-engine/definition/settings'; import type { IAppStorageItem } from '@rocket.chat/apps-engine/server/storage/IAppStorageItem'; import type { AppScreenshot, AppRequestFilter, Serialized, AppRequestsStats, PaginatedAppRequests } from '@rocket.chat/core-typings'; -import { Meteor } from 'meteor/meteor'; import { hasAtLeastOnePermission } from '../../../app/authorization/client'; -import { CachedCollectionManager } from '../../../app/ui-cached-collection/client'; import { sdk } from '../../../app/utils/client/lib/SDKClient'; import { dispatchToastMessage } from '../../../client/lib/toast'; import type { App } from '../../../client/views/marketplace/types'; @@ -263,10 +261,3 @@ class AppClientOrchestrator { } export const AppClientOrchestratorInstance = new AppClientOrchestrator(); - -Meteor.startup(() => { - CachedCollectionManager.onLogin(() => { - AppClientOrchestratorInstance.getAppClientManager().initialize(); - AppClientOrchestratorInstance.load(); - }); -});