mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-03 21:43:21 +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.
		
			
				
	
	
		
			68 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
var local_message = (function () {
 | 
						|
 | 
						|
var exports = {};
 | 
						|
 | 
						|
function truncate_precision(float) {
 | 
						|
    return parseFloat(float.toFixed(3));
 | 
						|
}
 | 
						|
 | 
						|
exports.now = function () {
 | 
						|
    var timestamp = new XDate().getTime() / 1000;
 | 
						|
 | 
						|
    return timestamp;
 | 
						|
};
 | 
						|
 | 
						|
exports.insert_message = function (message) {
 | 
						|
    // It is a little bit funny to go through the message_events
 | 
						|
    // codepath, but it's sort of the idea behind local echo that
 | 
						|
    // we are simulating server events before they actually arrive.
 | 
						|
    message_events.insert_new_messages([message], true);
 | 
						|
};
 | 
						|
 | 
						|
exports.get_next_id = (function () {
 | 
						|
 | 
						|
    var already_used = {};
 | 
						|
 | 
						|
    return function () {
 | 
						|
        var local_id_increment = 0.01;
 | 
						|
        var latest = page_params.max_message_id;
 | 
						|
        if (typeof message_list.all !== 'undefined' && message_list.all.last() !== undefined) {
 | 
						|
            latest = message_list.all.last().id;
 | 
						|
        }
 | 
						|
        latest = Math.max(0, latest);
 | 
						|
        var next_local_id = truncate_precision(latest + local_id_increment);
 | 
						|
 | 
						|
        if (already_used[next_local_id]) {
 | 
						|
            // If our id is already used, it is probably an edge case like we had
 | 
						|
            // to abort a very recent message.
 | 
						|
            blueslip.warn("We don't reuse ids for local echo.");
 | 
						|
            return;
 | 
						|
        }
 | 
						|
 | 
						|
        if (next_local_id % 1 > local_id_increment * 5) {
 | 
						|
            blueslip.warn("Turning off local echo for this message to let host catch up");
 | 
						|
            return;
 | 
						|
        }
 | 
						|
 | 
						|
        if (next_local_id % 1 === 0) {
 | 
						|
            // The logic to stop at 0.05 should prevent us from ever wrapping around
 | 
						|
            // to the next integer.
 | 
						|
            blueslip.error("Programming error");
 | 
						|
            return;
 | 
						|
        }
 | 
						|
 | 
						|
        already_used[next_local_id] = true;
 | 
						|
 | 
						|
        return next_local_id;
 | 
						|
    };
 | 
						|
}());
 | 
						|
 | 
						|
return exports;
 | 
						|
 | 
						|
}());
 | 
						|
if (typeof module !== 'undefined') {
 | 
						|
    module.exports = local_message;
 | 
						|
}
 | 
						|
 | 
						|
window.local_message = local_message;
 |