diff --git a/packages/rocketchat-lib/settings/client/rocketchat.coffee b/packages/rocketchat-lib/settings/client/rocketchat.coffee index 4640ce42413..3e30a004cb4 100644 --- a/packages/rocketchat-lib/settings/client/rocketchat.coffee +++ b/packages/rocketchat-lib/settings/client/rocketchat.coffee @@ -8,5 +8,5 @@ settingsDict = new ReactiveDict('settings') RocketChat.settings.get = (_id) -> return settingsDict.get(_id) -RocketChat.settings.load = (key, value) -> - return settingsDict.set key, value \ No newline at end of file +RocketChat.settings.onload '*', (key, value) -> + return settingsDict.set key, value diff --git a/packages/rocketchat-lib/settings/lib/rocketchat.coffee b/packages/rocketchat-lib/settings/lib/rocketchat.coffee index 3bde2ac5d7f..e43641e8c1d 100644 --- a/packages/rocketchat-lib/settings/lib/rocketchat.coffee +++ b/packages/rocketchat-lib/settings/lib/rocketchat.coffee @@ -2,24 +2,38 @@ # RocketChat.settings holds all packages settings # @namespace RocketChat.settings ### -RocketChat.settings = {} +RocketChat.settings = + callbacks: {} + ts: new Date -RocketChat.settings.ts = new Date + get: (_id) -> + return Meteor.settings?[_id] -RocketChat.settings.get = (_id) -> - return Meteor.settings?[_id] + set: (_id, value, callback) -> + Meteor.call 'saveSetting', _id, value, callback -RocketChat.settings.set = (_id, value, callback) -> - Meteor.call 'saveSetting', _id, value, callback + batchSet: (settings, callback) -> -RocketChat.settings.batchSet = (settings, callback) -> + # async -> sync + # http://daemon.co.za/2012/04/simple-async-with-only-underscore/ - # async -> sync - # http://daemon.co.za/2012/04/simple-async-with-only-underscore/ + save = (setting) -> + return (callback) -> + Meteor.call 'saveSetting', setting._id, setting.value, callback - save = (setting) -> - return (callback) -> - Meteor.call 'saveSetting', setting._id, setting.value, callback + actions = _.map settings, (setting) -> save(setting) + _(actions).reduceRight(_.wrap, (err, success) -> return callback err, success)() - actions = _.map settings, (setting) -> save(setting) - _(actions).reduceRight(_.wrap, (err, success) -> return callback err, success)() + load: (key, value, initialLoad) -> + if RocketChat.settings.callbacks[key]? + for callback in RocketChat.settings.callbacks[key] + callback key, value, initialLoad + + if RocketChat.settings.callbacks['*']? + for callback in RocketChat.settings.callbacks['*'] + callback key, value, initialLoad + + + onload: (key, callback) -> + RocketChat.settings.callbacks[key] ?= [] + RocketChat.settings.callbacks[key].push callback diff --git a/packages/rocketchat-lib/settings/server/methods.coffee b/packages/rocketchat-lib/settings/server/methods.coffee index 20514c937dd..729522f1642 100644 --- a/packages/rocketchat-lib/settings/server/methods.coffee +++ b/packages/rocketchat-lib/settings/server/methods.coffee @@ -1,5 +1,3 @@ -RocketChat.settings.callbacks = {} - ### # Add a setting # @param {String} _id @@ -60,20 +58,6 @@ RocketChat.settings.addGroup = (_id, options = {}) -> return RocketChat.models.Settings.upsert { _id: _id }, upsertChanges -RocketChat.settings.load = (key, value, initialLoad) -> - if RocketChat.settings.callbacks[key]? - for callback in RocketChat.settings.callbacks[key] - callback key, value, initialLoad - - if RocketChat.settings.callbacks['*']? - for callback in RocketChat.settings.callbacks['*'] - callback key, value, initialLoad - - -RocketChat.settings.onload = (key, callback) -> - RocketChat.settings.callbacks[key] ?= [] - RocketChat.settings.callbacks[key].push callback - ### # Remove a setting by id # @param {String} _id