diff --git a/app/api/server/v1/autotranslate.js b/app/api/server/v1/autotranslate.js index da611dd89847f..6a65c21adc732 100644 --- a/app/api/server/v1/autotranslate.js +++ b/app/api/server/v1/autotranslate.js @@ -22,6 +22,7 @@ API.v1.addRoute('autotranslate.saveSettings', { authRequired: true }, { if (!settings.get('AutoTranslate_Enabled')) { return API.v1.failure('AutoTranslate is disabled.'); } + if (!roomId) { return API.v1.failure('The bodyParam "roomId" is required.'); } diff --git a/app/autotranslate/client/lib/autotranslate.js b/app/autotranslate/client/lib/autotranslate.js index 1ac9e7a6174e6..e9ef9d2124db4 100644 --- a/app/autotranslate/client/lib/autotranslate.js +++ b/app/autotranslate/client/lib/autotranslate.js @@ -6,7 +6,7 @@ import mem from 'mem'; import { Subscriptions, Messages } from '../../../models'; import { callbacks } from '../../../callbacks'; import { settings } from '../../../settings'; -import { hasAtLeastOnePermission } from '../../../authorization'; +import { hasAtLeastOnePermission, hasPermission } from '../../../authorization'; import { CachedCollectionManager } from '../../../ui-cached-collection'; let userLanguage = 'en'; @@ -60,12 +60,28 @@ export const AutoTranslate = { }, init() { - Meteor.call('autoTranslate.getSupportedLanguages', 'en', (err, languages) => { - this.supportedLanguages = languages || []; - }); + this.supportedLanguages = []; + this.providersMetadata = {}; + + Tracker.autorun((c) => { + const uid = Meteor.userId(); + if (!uid) { + return; + } + + Meteor.call('autoTranslate.getProviderUiMetadata', (err, metadata) => { + this.providersMetadata = metadata; + }); + + if (!hasPermission('auto-translate')) { + return; + } + + Meteor.call('autoTranslate.getSupportedLanguages', 'en', (err, languages) => { + this.supportedLanguages = languages || []; + }); - Meteor.call('autoTranslate.getProviderUiMetadata', (err, metadata) => { - this.providersMetadata = metadata; + c.stop(); }); Tracker.autorun(() => { diff --git a/app/ui-message/client/message.js b/app/ui-message/client/message.js index f546b72071e92..8244a0cedaa8c 100644 --- a/app/ui-message/client/message.js +++ b/app/ui-message/client/message.js @@ -236,7 +236,7 @@ Template.message.helpers({ translationProvider() { const instance = Template.instance(); const { translationProvider } = instance.data.msg; - return translationProvider && AutoTranslate.providersMetadata[translationProvider].displayName; + return translationProvider && AutoTranslate.providersMetadata[translationProvider]?.displayName; }, edited() { const { msg } = this; diff --git a/client/startup/startup.js b/client/startup/startup.js index ae86ac6940386..cccf434c101f5 100644 --- a/client/startup/startup.js +++ b/client/startup/startup.js @@ -10,6 +10,7 @@ import toastr from 'toastr'; import hljs from '../../app/markdown/lib/hljs'; import { fireGlobalEvent, alerts } from '../../app/ui-utils'; import { getUserPreference, t } from '../../app/utils'; +import { hasPermission } from '../../app/authorization/client'; import 'highlight.js/styles/github.css'; import { syncUserdata } from '../lib/userData'; @@ -69,6 +70,10 @@ Meteor.startup(function() { return; } + if (!hasPermission('manage-cloud')) { + return; + } + Meteor.call('cloud:checkRegisterStatus', (err, data) => { if (err) { console.log(err);