The communications platform that puts data protection first.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Rocket.Chat/packages/rocketchat-lib/lib/settings.coffee

40 lines
1.0 KiB

###
# RocketChat.settings holds all packages settings
# @namespace RocketChat.settings
###
RocketChat.settings =
callbacks: {}
ts: new Date
get: (_id) ->
return Meteor.settings?[_id]
set: (_id, value, callback) ->
Meteor.call 'saveSetting', _id, value, callback
10 years ago
batchSet: (settings, callback) ->
10 years ago
# async -> sync
# http://daemon.co.za/2012/04/simple-async-with-only-underscore/
10 years ago
save = (setting) ->
return (callback) ->
Meteor.call 'saveSetting', setting._id, setting.value, callback
10 years ago
actions = _.map settings, (setting) -> save(setting)
_(actions).reduceRight(_.wrap, (err, success) -> return callback err, success)()
10 years ago
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