mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 14:03:30 +00:00 
			
		
		
		
	This commit prepares the frontend code to be consumed by webpack. It is a hack: In theory, modules should be declaring and importing the modules they depend on and the globals they expose directly. However, that requires significant per-module work, which we don't really want to block moving our toolchain to webpack on. So we expose the modules by setting window.varName = varName; as needed in the js files.
		
			
				
	
	
		
			85 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
var integration_bot_widget = (function () {
 | 
						|
 | 
						|
var exports = {};
 | 
						|
 | 
						|
// This function subscribes the newly created bot to the stream specified by the user.
 | 
						|
function subscribe_to_stream(bot_email, stream_name) {
 | 
						|
    var bot_user_id = people.get_user_id(bot_email);
 | 
						|
    stream_data.add_subscriber(stream_name, bot_user_id);
 | 
						|
}
 | 
						|
 | 
						|
// This function puts together the main string for url that will be copied by the user
 | 
						|
// to use for incoming webhook services.
 | 
						|
function put_key_values_in_url(api_url, integration_url,
 | 
						|
                               bot_api_key, stream_name) {
 | 
						|
    var integration_bot_url = api_url + integration_url +
 | 
						|
                              "?api_key=" + bot_api_key +
 | 
						|
                              "&stream=" + stream_name;
 | 
						|
    return integration_bot_url;
 | 
						|
}
 | 
						|
 | 
						|
// This function returns the div/span where the integration bot url string will be
 | 
						|
// set for the user.
 | 
						|
function get_url_span() {
 | 
						|
    // This div or span value can be updated along with building the UI using this widget.
 | 
						|
    return $("#integration_bot_url");
 | 
						|
}
 | 
						|
 | 
						|
function update_integration_bot_url(integration_bot_url) {
 | 
						|
    var url_span = get_url_span();
 | 
						|
    url_span.text(integration_bot_url);
 | 
						|
}
 | 
						|
 | 
						|
// This is the function that runs after the bot is created successfully.
 | 
						|
function on_create_bot_success(result, stream_name, api_url, integration_url) {
 | 
						|
    var bot_api_key = result.api_key;
 | 
						|
    var bot_email = result.email;
 | 
						|
 | 
						|
    subscribe_to_stream(bot_email, stream_name);
 | 
						|
    var integration_bot_url = put_key_values_in_url(api_url, integration_url,
 | 
						|
                                                    bot_api_key, stream_name);
 | 
						|
    update_integration_bot_url(integration_bot_url);
 | 
						|
}
 | 
						|
 | 
						|
function create_bot(full_name, short_name, bot_avatar_file, stream_name,
 | 
						|
                    api_url, integration_url, on_success) {
 | 
						|
    var formData = new FormData();
 | 
						|
    formData.append('csrfmiddlewaretoken', csrf_token);
 | 
						|
    formData.append('full_name', full_name);
 | 
						|
    formData.append('short_name', short_name);
 | 
						|
    formData.append('file-' + 0, bot_avatar_file);
 | 
						|
    channel.post({
 | 
						|
        url: '/json/bots',
 | 
						|
        data: formData,
 | 
						|
        cache: false,
 | 
						|
        processData: false,
 | 
						|
        contentType: false,
 | 
						|
        success: function (resp, statusText, xhr) {
 | 
						|
            var result = JSON.parse(xhr.responseText);
 | 
						|
            on_success(result, stream_name, api_url, integration_url);
 | 
						|
        },
 | 
						|
        error: function (xhr) {
 | 
						|
            // UI yet to be created with this div id
 | 
						|
            $('#bot_widget_error').text(JSON.parse(xhr.responseText).msg).show();
 | 
						|
        },
 | 
						|
    });
 | 
						|
}
 | 
						|
 | 
						|
// This is the main function to be called to set the integration bot url.
 | 
						|
exports.set_integration_bot_url = function (
 | 
						|
    api_url, integration_url, bot_full_name,
 | 
						|
    bot_short_name, bot_avatar_file, bot_owner, stream_name
 | 
						|
) {
 | 
						|
    create_bot(bot_full_name, bot_short_name, bot_avatar_file,
 | 
						|
               stream_name, api_url, integration_url, on_create_bot_success);
 | 
						|
};
 | 
						|
 | 
						|
return exports;
 | 
						|
 | 
						|
}());
 | 
						|
 | 
						|
if (typeof module !== 'undefined') {
 | 
						|
    module.exports = integration_bot_widget;
 | 
						|
}
 | 
						|
window.integration_bot_widget = integration_bot_widget;
 |