mirror of
https://github.com/zulip/zulip.git
synced 2025-11-05 14:35:27 +00:00
In this we fix the positioning of the loading spinner on the home page when its loaded for the first time. First time here does not mean first time use but means first time of a new session.
57 lines
2.0 KiB
JavaScript
57 lines
2.0 KiB
JavaScript
// Miscellaneous early setup.
|
|
|
|
var csrf_token;
|
|
$(function () {
|
|
// if the client is mobile, disable websockets for message sending
|
|
// (it doesn't work on iOS for some reason).
|
|
if (util.is_mobile()) {
|
|
page_params.use_websockets = false;
|
|
}
|
|
|
|
page_params.page_load_time = new Date().getTime();
|
|
|
|
// Display loading indicator. This disappears after the first
|
|
// get_events completes.
|
|
if (page_params.have_initial_messages && !page_params.needs_tutorial) {
|
|
loading.make_indicator($('#page_loading_indicator'), {text: 'Loading...', abs_positioned: true});
|
|
} else if (!page_params.needs_tutorial) {
|
|
$('#first_run_message').show();
|
|
}
|
|
|
|
// This requires that we used Django's {% csrf_token %} somewhere on the page.
|
|
csrf_token = $('input[name="csrfmiddlewaretoken"]').attr('value');
|
|
|
|
$.ajaxSetup({
|
|
beforeSend: function (xhr, settings) {
|
|
if (!(/^http:.*/.test(settings.url) || /^https:.*/.test(settings.url))) {
|
|
// Only send the token to relative URLs i.e. locally.
|
|
xhr.setRequestHeader("X-CSRFToken", csrf_token);
|
|
}
|
|
},
|
|
});
|
|
|
|
// For some reason, jQuery wants this to be attached to an element.
|
|
$(document).ajaxError(function (event, xhr) {
|
|
if (xhr.status === 401) {
|
|
// We got logged out somehow, perhaps from another window or a session timeout.
|
|
// We could display an error message, but jumping right to the login page seems
|
|
// smoother and conveys the same information.
|
|
window.location.replace(page_params.login_page);
|
|
}
|
|
});
|
|
|
|
if (typeof $ !== 'undefined') {
|
|
$.fn.expectOne = function () {
|
|
if (blueslip && this.length !== 1) {
|
|
blueslip.error("Expected one element in jQuery set, " + this.length + " found");
|
|
}
|
|
return this;
|
|
};
|
|
|
|
$.fn.within = function (sel) {
|
|
return ($(this).is(sel) || $(this).closest(sel).length);
|
|
};
|
|
}
|
|
|
|
});
|