|
2 | 2 | # RocketChat.settings holds all packages settings
|
3 | 3 | # @namespace RocketChat.settings
|
4 | 4 | ###
|
5 |
| -RocketChat.settings = {} |
| 5 | +RocketChat.settings = |
| 6 | + callbacks: {} |
| 7 | + ts: new Date |
6 | 8 |
|
7 |
| -RocketChat.settings.ts = new Date |
| 9 | + get: (_id) -> |
| 10 | + return Meteor.settings?[_id] |
8 | 11 |
|
9 |
| -RocketChat.settings.get = (_id) -> |
10 |
| - return Meteor.settings?[_id] |
| 12 | + set: (_id, value, callback) -> |
| 13 | + Meteor.call 'saveSetting', _id, value, callback |
11 | 14 |
|
12 |
| -RocketChat.settings.set = (_id, value, callback) -> |
13 |
| - Meteor.call 'saveSetting', _id, value, callback |
| 15 | + batchSet: (settings, callback) -> |
14 | 16 |
|
15 |
| -RocketChat.settings.batchSet = (settings, callback) -> |
| 17 | + # async -> sync |
| 18 | + # http://daemon.co.za/2012/04/simple-async-with-only-underscore/ |
16 | 19 |
|
17 |
| - # async -> sync |
18 |
| - # http://daemon.co.za/2012/04/simple-async-with-only-underscore/ |
| 20 | + save = (setting) -> |
| 21 | + return (callback) -> |
| 22 | + Meteor.call 'saveSetting', setting._id, setting.value, callback |
19 | 23 |
|
20 |
| - save = (setting) -> |
21 |
| - return (callback) -> |
22 |
| - Meteor.call 'saveSetting', setting._id, setting.value, callback |
| 24 | + actions = _.map settings, (setting) -> save(setting) |
| 25 | + _(actions).reduceRight(_.wrap, (err, success) -> return callback err, success)() |
23 | 26 |
|
24 |
| - actions = _.map settings, (setting) -> save(setting) |
25 |
| - _(actions).reduceRight(_.wrap, (err, success) -> return callback err, success)() |
| 27 | + load: (key, value, initialLoad) -> |
| 28 | + if RocketChat.settings.callbacks[key]? |
| 29 | + for callback in RocketChat.settings.callbacks[key] |
| 30 | + callback key, value, initialLoad |
| 31 | + |
| 32 | + if RocketChat.settings.callbacks['*']? |
| 33 | + for callback in RocketChat.settings.callbacks['*'] |
| 34 | + callback key, value, initialLoad |
| 35 | + |
| 36 | + |
| 37 | + onload: (key, callback) -> |
| 38 | + RocketChat.settings.callbacks[key] ?= [] |
| 39 | + RocketChat.settings.callbacks[key].push callback |
0 commit comments