mirror of
https://github.com/zulip/zulip.git
synced 2025-11-04 14:03:30 +00:00
This commit was originally automatically generated using `tools/lint --only=eslint --fix`. It was then modified by tabbott to contain only changes to a set of files that are unlikely to result in significant merge conflicts with any open pull request, excluding about 20 files. His plan is to merge the remaining changes with more precise care, potentially involving merging parts of conflicting pull requests before running the `eslint --fix` operation. Signed-off-by: Anders Kaseorg <anders@zulipchat.com>
91 lines
2.6 KiB
JavaScript
91 lines
2.6 KiB
JavaScript
const bots = {};
|
|
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 = {};
|
|
const services_fields = ['base_url', 'interface',
|
|
'config_data', 'service_name', 'token'];
|
|
|
|
const send_change_event = _.debounce(function () {
|
|
settings_bots.render_bots();
|
|
}, 50);
|
|
|
|
const set_can_admin = function bot_data__set_can_admin(bot) {
|
|
if (page_params.is_admin) {
|
|
bot.can_admin = true;
|
|
} else if (bot.owner !== undefined && people.is_current_user(bot.owner)) {
|
|
bot.can_admin = true;
|
|
} else {
|
|
bot.can_admin = false;
|
|
}
|
|
};
|
|
|
|
exports.add = function bot_data__add(bot) {
|
|
const clean_bot = _.pick(bot, bot_fields);
|
|
bots[bot.user_id] = clean_bot;
|
|
set_can_admin(clean_bot);
|
|
const clean_services = _.map(bot.services, function (service) {
|
|
return _.pick(service, services_fields);
|
|
});
|
|
services[bot.user_id] = clean_services;
|
|
|
|
send_change_event();
|
|
};
|
|
|
|
exports.deactivate = function bot_data__deactivate(bot_id) {
|
|
bots[bot_id].is_active = false;
|
|
send_change_event();
|
|
};
|
|
|
|
exports.del = function bot_data__del(bot_id) {
|
|
delete bots[bot_id];
|
|
delete services[bot_id];
|
|
send_change_event();
|
|
};
|
|
|
|
exports.update = function bot_data__update(bot_id, bot_update) {
|
|
const bot = bots[bot_id];
|
|
_.extend(bot, _.pick(bot_update, bot_fields));
|
|
set_can_admin(bot);
|
|
|
|
// We currently only support one service per bot.
|
|
const service = services[bot_id][0];
|
|
if (typeof bot_update.services !== 'undefined' && bot_update.services.length > 0) {
|
|
_.extend(service, _.pick(bot_update.services[0], services_fields));
|
|
}
|
|
send_change_event();
|
|
};
|
|
|
|
exports.get_all_bots_for_current_user = function bots_data__get_editable() {
|
|
return _.filter(bots, function (bot) {
|
|
return people.is_current_user(bot.owner);
|
|
});
|
|
};
|
|
|
|
exports.get_editable = function bots_data__get_editable() {
|
|
return _.filter(bots, function (bot) {
|
|
return bot.is_active && people.is_current_user(bot.owner);
|
|
});
|
|
};
|
|
|
|
exports.get = function bot_data__get(bot_id) {
|
|
return bots[bot_id];
|
|
};
|
|
|
|
exports.get_bot_owner_email = function (bot_id) {
|
|
return bots[bot_id].owner;
|
|
};
|
|
|
|
exports.get_services = function bot_data__get_services(bot_id) {
|
|
return services[bot_id];
|
|
};
|
|
|
|
exports.initialize = function () {
|
|
_.each(page_params.realm_bots, function (bot) {
|
|
exports.add(bot);
|
|
});
|
|
delete page_params.realm_bots;
|
|
};
|
|
|
|
window.bot_data = exports;
|