mirror of
https://github.com/zulip/zulip.git
synced 2025-10-30 11:33:51 +00:00
Prior to this commit has:link, has:attachment, has:image filter couldn't be applied locally and deferred filtering to web server. This commits make sure client filters all messages it can instead of completely deferring to the server and hence improve speed. A tradeoff is also made to turn off local echo for has: narrows as messages with link sent to has:link narrow were locally echoing to another narrow and not appearing in the active has:link narrow. Fixes: #6186.
60 lines
2.0 KiB
JavaScript
60 lines
2.0 KiB
JavaScript
exports.do_unread_count_updates = function do_unread_count_updates(messages) {
|
|
unread.process_loaded_messages(messages);
|
|
unread_ui.update_unread_counts();
|
|
resize.resize_page_components();
|
|
};
|
|
|
|
function add_messages(messages, msg_list, opts) {
|
|
if (!messages) {
|
|
return;
|
|
}
|
|
|
|
loading.destroy_indicator($('#page_loading_indicator'));
|
|
|
|
const render_info = msg_list.add_messages(messages, opts);
|
|
|
|
return render_info;
|
|
}
|
|
|
|
exports.message_has_link = function (message) {
|
|
return $(message.content).find(`a`).length > 0;
|
|
};
|
|
|
|
exports.message_has_image = function (message) {
|
|
return $(message.content).find(`.message_inline_image`).length > 0;
|
|
};
|
|
|
|
exports.message_has_attachment = function (message) {
|
|
return $(message.content).find(`a[href^='/user_uploads']`).length > 0;
|
|
};
|
|
|
|
exports.add_old_messages = function (messages, msg_list) {
|
|
return add_messages(messages, msg_list, {messages_are_new: false});
|
|
};
|
|
|
|
exports.add_new_messages = function (messages, msg_list) {
|
|
if (!msg_list.data.fetch_status.has_found_newest()) {
|
|
// We don't render newly received messages for the message list,
|
|
// if we haven't found the latest messages to be displayed in the
|
|
// narrow. Otherwise the new message would be rendered just after
|
|
// the previously fetched messages when that's inaccurate.
|
|
msg_list.data.fetch_status.update_expected_max_message_id(messages);
|
|
return;
|
|
}
|
|
return add_messages(messages, msg_list, {messages_are_new: true});
|
|
};
|
|
|
|
exports.get_messages_in_topic = function (stream_id, topic) {
|
|
// This function is very expensive since it searches
|
|
// all the messages. Please only use it in case of
|
|
// very rare events like topic edits. Its primary
|
|
// use case is the new experimental Recent Topics UI.
|
|
return message_list.all.all_messages().filter(x => {
|
|
return x.type === 'stream' &&
|
|
x.stream_id === stream_id &&
|
|
x.topic.toLowerCase() === topic.toLowerCase();
|
|
});
|
|
};
|
|
|
|
window.message_util = exports;
|