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. 8
      packages/rocketchat-lib/client/CustomTranslations.js
  2. 20
      packages/rocketchat-ui-login/login/form.coffee

@ -1,11 +1,9 @@
Meteor.startup(function() { Meteor.startup(function() {
Meteor.autorun(function() { Meteor.autorun(function() {
let CustomTranslations = RocketChat.settings.get('Custom_Translations'); let CustomTranslations = RocketChat.settings.get('Custom_Translations');
if (typeof CustomTranslations === 'string' && CustomTranslations.trim() !== '') {
try { try {
CustomTranslations = JSON.parse(CustomTranslations); CustomTranslations = JSON.parse(CustomTranslations);
} catch (e) {
console.error('Invalid setting Custom_Translations', e);
}
for (const lang in CustomTranslations) { for (const lang in CustomTranslations) {
if (CustomTranslations.hasOwnProperty(lang)) { if (CustomTranslations.hasOwnProperty(lang)) {
@ -13,5 +11,9 @@ Meteor.startup(function() {
TAPi18next.addResourceBundle(lang, 'project', translations); 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' return OnePassword?.findLoginForUrl? && device?.platform?.toLocaleLowerCase() is 'ios'
customFields: -> customFields: ->
if not Template.instance().customFields if not Template.instance().customFields.get()
return [] return []
customFieldsArray = [] customFieldsArray = []
for key, value of Template.instance().customFields for key, value of Template.instance().customFields.get()
customFieldsArray.push customFieldsArray.push
fieldName: key, fieldName: key,
field: value field: value
@ -150,12 +150,17 @@ Template.loginForm.events
Template.loginForm.onCreated -> Template.loginForm.onCreated ->
instance = @ instance = @
@customFields = new ReactiveVar
if RocketChat.settings.get('Accounts_CustomFields') isnt '' Tracker.autorun =>
Accounts_CustomFields = RocketChat.settings.get('Accounts_CustomFields')
if typeof Accounts_CustomFields is 'string' and Accounts_CustomFields.trim() isnt ''
try try
@customFields = JSON.parse RocketChat.settings.get('Accounts_CustomFields') @customFields.set JSON.parse RocketChat.settings.get('Accounts_CustomFields')
catch e catch e
console.error('Invalid JSON for Accounts_CustomFields') console.error('Invalid JSON for Accounts_CustomFields')
else
@customFields.set undefined
if Meteor.settings.public.sandstorm if Meteor.settings.public.sandstorm
@state = new ReactiveVar('sandstorm') @state = new ReactiveVar('sandstorm')
@ -167,11 +172,12 @@ Template.loginForm.onCreated ->
@validSecretURL = new ReactiveVar(false) @validSecretURL = new ReactiveVar(false)
validateCustomFields = (formObj, validationObj) -> validateCustomFields = (formObj, validationObj) ->
if not instance.customFields customFields = instance.customFields.get()
if not customFields
return return
for field, value of formObj when instance.customFields[field]? for field, value of formObj when customFields[field]?
customField = instance.customFields[field] customField = customFields[field]
if customField.required is true and not value if customField.required is true and not value
return validationObj[field] = t('Field_required') return validationObj[field] = t('Field_required')

Loading…
Cancel
Save