Overwrite settings on insert via settings.json file; Keep settings in local variable for avoiding unnecessary finds (less computations)

pull/304/head
Marcelo Schmidt 10 years ago
parent d739dadebf
commit 784c37a901
  1. 5
      packages/rocketchat-lib/package.js
  2. 8
      packages/rocketchat-lib/settings/lib/rocketchat.coffee
  3. 45
      packages/rocketchat-lib/settings/lib/settings.coffee
  4. 5
      packages/rocketchat-lib/settings/server/methods.coffee
  5. 38
      server/lib/_settings.coffee

@ -19,7 +19,10 @@ Package.onUse(function(api) {
api.addFiles('lib/callbacks.coffee', ['server', 'client']);
api.addFiles('server/sendMessage.coffee', ['server']);
api.addFiles('settings/lib/settings.coffee', ['server', 'client']);
api.addFiles([
'settings/lib/settings.coffee',
'settings/lib/rocketchat.coffee'
], ['server', 'client']);
api.addFiles('settings/client/startup.coffee', ['client']);
api.addFiles([
'settings/server/methods.coffee',

@ -0,0 +1,8 @@
###
# RocketChat.settings holds all packages settings
# @namespace RocketChat.settings
###
RocketChat.settings = {}
RocketChat.settings.get = (_id) ->
return Meteor.settings?[_id]

@ -1,10 +1,41 @@
###
# RocketChat.settings holds all packages settings
# @namespace RocketChat.settings
###
@Settings = new Meteor.Collection 'settings'
RocketChat.settings = {}
Settings.find().observe
added: (record) ->
Meteor.settings ?= {}
Meteor.settings[record._id] = record
# configLoginServices settings
# loadEnvConfigs settings
# configCDN settings
# configKadira settings
RocketChat.settings.get = (_id) ->
return Settings.findOne(_id)
changed: (record) ->
Meteor.settings?[record._id] = record
# __meteor_runtime_config__?.PUBLIC_SETTINGS = Meteor.settings?.public
# configLoginServices settings
# loadEnvConfigs settings
# configCDN settings
# configKadira settings
removed: (record) ->
delete Meteor.settings?[record._id]
# loadEnvConfigs = (settings) ->
# if settings.ENV?
# for key, value of settings.ENV
# process.env[key] = value
# configLoginServices = (settings) ->
# settings?['login-services']?.forEach (config) ->
# ServiceConfiguration.configurations.remove
# service: config.service
# ServiceConfiguration.configurations.insert config
# configCDN = (settings) ->
# if settings.CDN_PREFIX?
# WebAppInternals.setBundledJsCssPrefix settings.CDN_PREFIX
# configKadira = (settings) ->
# if settings.kadira?
# Kadira.connect(settings.kadira.appId, settings.kadira.appSecret)

@ -11,6 +11,11 @@ RocketChat.settings.add = (_id, value, options = {}) ->
console.log '[functions] RocketChat.settings.add -> '.green, 'arguments:', arguments
if Meteor.settings?[_id]?
value = Meteor.settings[_id]
if Meteor.settings?.public?[_id]?
value = Meteor.settings.public[_id]
updateSettings =
i18nLabel: options.i18nLabel or _id

@ -1,38 +0,0 @@
# @Settings = new Meteor.Collection 'settings'
loadEnvConfigs = (settings) ->
if settings.ENV?
for key, value of settings.ENV
process.env[key] = value
configLoginServices = (settings) ->
settings?['login-services']?.forEach (config) ->
ServiceConfiguration.configurations.remove
service: config.service
ServiceConfiguration.configurations.insert config
configCDN = (settings) ->
if settings.CDN_PREFIX?
WebAppInternals.setBundledJsCssPrefix settings.CDN_PREFIX
configKadira = (settings) ->
if settings.kadira?
Kadira.connect(settings.kadira.appId, settings.kadira.appSecret)
Settings.find({_id: 'settings'}).observe
added: (settings) ->
Meteor.settings = settings
__meteor_runtime_config__?.PUBLIC_SETTINGS = Meteor.settings?.public
configLoginServices settings
loadEnvConfigs settings
configCDN settings
configKadira settings
changed: (settings) ->
Meteor.settings = settings
__meteor_runtime_config__?.PUBLIC_SETTINGS = Meteor.settings?.public
configLoginServices settings
loadEnvConfigs settings
configCDN settings
configKadira settings
Loading…
Cancel
Save