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-channel-settings/client/lib/ChannelSettings.js

37 lines
1.1 KiB

RocketChat.ChannelSettings = new class {
constructor() {
this.options = new ReactiveVar({});
}
/*
* Adds an option in Channel Settings
* @config (object)
* id: option id (required)
* template (string): template name to render (required)
* validation (function): if option should be displayed
*/
addOption(config) {
if (config == null || config.id == null) {
return false;
}
return Tracker.nonreactive(() => {
const opts = this.options.get();
opts[config.id] = config;
return this.options.set(opts);
});
}
getOptions(currentData = {}, group) {
const allOptions = _.toArray(this.options.get());
const allowedOptions = _.compact(_.map(allOptions, function(option) {
const ret = {...option};
if (option.validation == null || option.validation()) {
ret.data = Object.assign({}, typeof option.data === 'function' ? option.data() : option.data, currentData);
return ret;
}
})).filter(function(option) {
return !group || !option.group || option.group.includes(group);
});
return _.sortBy(allowedOptions, 'order');
}
};