mirror of
https://github.com/zulip/zulip.git
synced 2025-11-04 14:03:30 +00:00
We stopped needing this with
0329b67048
(Dec 2016).
The function sets `bot.can_admin`,
which was only used in `bot_data.get_editable`.
We removed two tests (and then put back
some test setup that needed to leak down
to the last test).
84 lines
2.2 KiB
JavaScript
84 lines
2.2 KiB
JavaScript
const bots = new Map();
|
|
const bot_fields = ['api_key', 'avatar_url', 'default_all_public_streams',
|
|
'default_events_register_stream', 'default_sending_stream',
|
|
'email', 'full_name', 'is_active', 'owner', 'bot_type', 'user_id'];
|
|
const services = new Map();
|
|
const services_fields = ['base_url', 'interface',
|
|
'config_data', 'service_name', 'token'];
|
|
|
|
const send_change_event = _.debounce(function () {
|
|
settings_bots.render_bots();
|
|
}, 50);
|
|
|
|
exports.add = function (bot) {
|
|
const clean_bot = _.pick(bot, bot_fields);
|
|
bots.set(bot.user_id, clean_bot);
|
|
const clean_services = bot.services.map(service => _.pick(service, services_fields));
|
|
services.set(bot.user_id, clean_services);
|
|
|
|
send_change_event();
|
|
};
|
|
|
|
exports.deactivate = function (bot_id) {
|
|
bots.get(bot_id).is_active = false;
|
|
send_change_event();
|
|
};
|
|
|
|
exports.del = function (bot_id) {
|
|
bots.delete(bot_id);
|
|
services.delete(bot_id);
|
|
send_change_event();
|
|
};
|
|
|
|
exports.update = function (bot_id, bot_update) {
|
|
const bot = bots.get(bot_id);
|
|
Object.assign(bot, _.pick(bot_update, bot_fields));
|
|
|
|
// We currently only support one service per bot.
|
|
const service = services.get(bot_id)[0];
|
|
if (typeof bot_update.services !== 'undefined' && bot_update.services.length > 0) {
|
|
Object.assign(service, _.pick(bot_update.services[0], services_fields));
|
|
}
|
|
send_change_event();
|
|
};
|
|
|
|
exports.get_all_bots_for_current_user = function () {
|
|
const ret = [];
|
|
for (const bot of bots.values()) {
|
|
if (people.is_current_user(bot.owner)) {
|
|
ret.push(bot);
|
|
}
|
|
}
|
|
return ret;
|
|
};
|
|
|
|
exports.get_editable = function () {
|
|
const ret = [];
|
|
for (const bot of bots.values()) {
|
|
if (bot.is_active && people.is_current_user(bot.owner)) {
|
|
ret.push(bot);
|
|
}
|
|
}
|
|
return ret;
|
|
};
|
|
|
|
exports.get = function (bot_id) {
|
|
return bots.get(bot_id);
|
|
};
|
|
|
|
exports.get_bot_owner_email = function (bot_id) {
|
|
return bots.get(bot_id).owner;
|
|
};
|
|
|
|
exports.get_services = function (bot_id) {
|
|
return services.get(bot_id);
|
|
};
|
|
|
|
exports.initialize = function (params) {
|
|
for (const bot of params.realm_bots) {
|
|
exports.add(bot);
|
|
}
|
|
};
|
|
|
|
window.bot_data = exports;
|