Improve lazy loading of custom fields and translations

pull/4047/head^2
Rodrigo Nascimento 9 years ago
parent 0522d2ca52
commit ab9371e546
No known key found for this signature in database
GPG Key ID: 2C85B3AFE75D23F9
  1. 20
      packages/rocketchat-lib/client/CustomTranslations.js
  2. 26
      packages/rocketchat-ui-login/login/form.coffee

@ -1,16 +1,18 @@
Meteor.startup(function() {
Meteor.autorun(function() {
let CustomTranslations = RocketChat.settings.get('Custom_Translations');
try {
CustomTranslations = JSON.parse(CustomTranslations);
} catch (e) {
console.error('Invalid setting Custom_Translations', e);
}
if (typeof CustomTranslations === 'string' && CustomTranslations.trim() !== '') {
try {
CustomTranslations = JSON.parse(CustomTranslations);
for (const lang in CustomTranslations) {
if (CustomTranslations.hasOwnProperty(lang)) {
const translations = CustomTranslations[lang];
TAPi18next.addResourceBundle(lang, 'project', translations);
for (const lang in CustomTranslations) {
if (CustomTranslations.hasOwnProperty(lang)) {
const translations = CustomTranslations[lang];
TAPi18next.addResourceBundle(lang, 'project', translations);
}
}
} catch (e) {
console.error('Invalid setting Custom_Translations', e);
}
}
});

@ -47,11 +47,11 @@ Template.loginForm.helpers
return OnePassword?.findLoginForUrl? && device?.platform?.toLocaleLowerCase() is 'ios'
customFields: ->
if not Template.instance().customFields
if not Template.instance().customFields.get()
return []
customFieldsArray = []
for key, value of Template.instance().customFields
for key, value of Template.instance().customFields.get()
customFieldsArray.push
fieldName: key,
field: value
@ -150,12 +150,17 @@ Template.loginForm.events
Template.loginForm.onCreated ->
instance = @
@customFields = new ReactiveVar
if RocketChat.settings.get('Accounts_CustomFields') isnt ''
try
@customFields = JSON.parse RocketChat.settings.get('Accounts_CustomFields')
catch e
console.error('Invalid JSON for Accounts_CustomFields')
Tracker.autorun =>
Accounts_CustomFields = RocketChat.settings.get('Accounts_CustomFields')
if typeof Accounts_CustomFields is 'string' and Accounts_CustomFields.trim() isnt ''
try
@customFields.set JSON.parse RocketChat.settings.get('Accounts_CustomFields')
catch e
console.error('Invalid JSON for Accounts_CustomFields')
else
@customFields.set undefined
if Meteor.settings.public.sandstorm
@state = new ReactiveVar('sandstorm')
@ -167,11 +172,12 @@ Template.loginForm.onCreated ->
@validSecretURL = new ReactiveVar(false)
validateCustomFields = (formObj, validationObj) ->
if not instance.customFields
customFields = instance.customFields.get()
if not customFields
return
for field, value of formObj when instance.customFields[field]?
customField = instance.customFields[field]
for field, value of formObj when customFields[field]?
customField = customFields[field]
if customField.required is true and not value
return validationObj[field] = t('Field_required')

Loading…
Cancel
Save