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

47 lines
1.2 KiB

import { Meteor } from 'meteor/meteor';
import { ReactiveDict } from 'meteor/reactive-dict';
import { CachedCollection } from 'meteor/rocketchat:ui-cached-collection';
import { settings } from '../../lib/settings';
settings.cachedCollection = new CachedCollection({
name: 'public-settings',
eventType: 'onAll',
userRelated: false,
listenChangesForLoggedUsersOnly: true,
});
settings.collection = settings.cachedCollection.collection;
settings.cachedCollection.init();
settings.dict = new ReactiveDict('settings');
settings.get = function(_id) {
return settings.dict.get(_id);
};
settings.init = function() {
let initialLoad = true;
settings.collection.find().observe({
added(record) {
Meteor.settings[record._id] = record.value;
settings.dict.set(record._id, record.value);
settings.load(record._id, record.value, initialLoad);
},
changed(record) {
Meteor.settings[record._id] = record.value;
settings.dict.set(record._id, record.value);
settings.load(record._id, record.value, initialLoad);
},
removed(record) {
delete Meteor.settings[record._id];
settings.dict.set(record._id, null);
settings.load(record._id, null, initialLoad);
},
});
initialLoad = false;
};
settings.init();
export { settings };