mirror of https://github.com/zulip/zulip.git
58 lines
1.6 KiB
JavaScript
58 lines
1.6 KiB
JavaScript
var channel = (function () {
|
|
|
|
var exports = {};
|
|
|
|
function call(args) {
|
|
// Wrap the error handlers to reload the page if we get a CSRF error
|
|
// (What probably happened is that the user logged out in another tab).
|
|
var orig_error = args.error;
|
|
if (orig_error === undefined) {
|
|
orig_error = function () {};
|
|
}
|
|
args.error = function wrapped_error(xhr, error_type, xhn) {
|
|
if (xhr.status === 403 && $.parseJSON(xhr.responseText).msg.indexOf("CSRF Error:") !== -1) {
|
|
reload.initiate({immediate: true});
|
|
}
|
|
return orig_error(xhr, error_type, xhn);
|
|
};
|
|
|
|
return $.ajax(args);
|
|
}
|
|
|
|
exports.get = function (options) {
|
|
var args = _.extend({type: "GET", dataType: "json"}, options);
|
|
return call(args);
|
|
};
|
|
|
|
exports.post = function (options) {
|
|
var args = _.extend({type: "POST", dataType: "json"}, options);
|
|
return call(args);
|
|
};
|
|
|
|
exports.put = function (options) {
|
|
var args = _.extend({type: "PUT", dataType: "json"}, options);
|
|
return call(args);
|
|
};
|
|
|
|
// Not called exports.delete because delete is a reserved word in JS
|
|
exports.del = function (options) {
|
|
var args = _.extend({type: "DELETE", dataType: "json"}, options);
|
|
return call(args);
|
|
};
|
|
|
|
exports.patch = function (options) {
|
|
// Send a PATCH as a POST in order to work around QtWebkit
|
|
// (Linux/Windows desktop app) not supporting PATCH body.
|
|
options.method = "PATCH";
|
|
if (options.processData === false) {
|
|
// If we're submitting a FormData object, we need to add the
|
|
// method this way
|
|
options.data.append("method", "PATCH");
|
|
}
|
|
return exports.post(options);
|
|
};
|
|
|
|
return exports;
|
|
|
|
}());
|