mirror of https://github.com/zulip/zulip.git
frontend: Create data structure for starred messages.
This commit is contained in:
parent
79e2266d6e
commit
2aeabf24a6
|
@ -153,6 +153,7 @@
|
||||||
"settings_ui": false,
|
"settings_ui": false,
|
||||||
"settings_user_groups": false,
|
"settings_user_groups": false,
|
||||||
"settings_users": false,
|
"settings_users": false,
|
||||||
|
"starred_messages": false,
|
||||||
"stream_color": false,
|
"stream_color": false,
|
||||||
"stream_create": false,
|
"stream_create": false,
|
||||||
"stream_data": false,
|
"stream_data": false,
|
||||||
|
|
|
@ -80,6 +80,10 @@ set_global('blueslip', {
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
set_global('starred_messages', {
|
||||||
|
add: noop,
|
||||||
|
});
|
||||||
|
|
||||||
zrequire('server_events_dispatch');
|
zrequire('server_events_dispatch');
|
||||||
var sed = server_events_dispatch;
|
var sed = server_events_dispatch;
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,10 @@ zrequire('message_flags');
|
||||||
|
|
||||||
set_global('ui', {});
|
set_global('ui', {});
|
||||||
set_global('channel', {});
|
set_global('channel', {});
|
||||||
|
set_global('starred_messages', {
|
||||||
|
add: () => {},
|
||||||
|
remove: () => {},
|
||||||
|
});
|
||||||
|
|
||||||
run_test('starred', () => {
|
run_test('starred', () => {
|
||||||
const message = {
|
const message = {
|
||||||
|
|
|
@ -136,6 +136,7 @@ import "js/hash_util.js";
|
||||||
import "js/hashchange.js";
|
import "js/hashchange.js";
|
||||||
import "js/invite.js";
|
import "js/invite.js";
|
||||||
import "js/message_flags.js";
|
import "js/message_flags.js";
|
||||||
|
import "js/starred_messages.js";
|
||||||
import "js/alert_words.js";
|
import "js/alert_words.js";
|
||||||
import "js/alert_words_ui.js";
|
import "js/alert_words_ui.js";
|
||||||
import "js/attachments_ui.js";
|
import "js/attachments_ui.js";
|
||||||
|
|
|
@ -101,8 +101,10 @@ exports.toggle_starred_and_update_server = function (message) {
|
||||||
|
|
||||||
if (message.starred) {
|
if (message.starred) {
|
||||||
send_flag_update(message, 'starred', 'add');
|
send_flag_update(message, 'starred', 'add');
|
||||||
|
starred_messages.add([message.id]);
|
||||||
} else {
|
} else {
|
||||||
send_flag_update(message, 'starred', 'remove');
|
send_flag_update(message, 'starred', 'remove');
|
||||||
|
starred_messages.remove([message.id]);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -406,6 +406,11 @@ exports.dispatch_normal_event = function dispatch_normal_event(event) {
|
||||||
_.each(event.messages, function (message_id) {
|
_.each(event.messages, function (message_id) {
|
||||||
message_flags.update_starred_flag(message_id, new_value);
|
message_flags.update_starred_flag(message_id, new_value);
|
||||||
});
|
});
|
||||||
|
if (event.operation === "add") {
|
||||||
|
starred_messages.add(event.messages);
|
||||||
|
} else {
|
||||||
|
starred_messages.remove(event.messages);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 'read':
|
case 'read':
|
||||||
unread_ops.process_read_messages_event(event.messages);
|
unread_ops.process_read_messages_event(event.messages);
|
||||||
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
var starred_messages = (function () {
|
||||||
|
|
||||||
|
var exports = {};
|
||||||
|
|
||||||
|
exports.ids = new Dict();
|
||||||
|
|
||||||
|
exports.initialize = function () {
|
||||||
|
exports.ids = new Dict();
|
||||||
|
_.each(page_params.starred_messages, function (id) {
|
||||||
|
exports.ids.set(id, true);
|
||||||
|
});
|
||||||
|
exports.rerender_ui();
|
||||||
|
};
|
||||||
|
|
||||||
|
exports.add = function (ids) {
|
||||||
|
_.each(ids, function (id) {
|
||||||
|
exports.ids.set(id, true);
|
||||||
|
});
|
||||||
|
exports.rerender_ui();
|
||||||
|
};
|
||||||
|
|
||||||
|
exports.remove = function (ids) {
|
||||||
|
_.each(ids, function (id) {
|
||||||
|
if (exports.ids.has(id)) {
|
||||||
|
exports.ids.del(id);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
exports.rerender_ui();
|
||||||
|
};
|
||||||
|
|
||||||
|
exports.count = function () {
|
||||||
|
return exports.ids.num_items();
|
||||||
|
};
|
||||||
|
|
||||||
|
exports.rerender_ui = function () {
|
||||||
|
var starred_li = top_left_corner.get_global_filter_li('starred');
|
||||||
|
top_left_corner.update_count_in_dom(starred_li, exports.count());
|
||||||
|
};
|
||||||
|
|
||||||
|
return exports;
|
||||||
|
|
||||||
|
}());
|
||||||
|
|
||||||
|
if (typeof module !== 'undefined') {
|
||||||
|
module.exports = starred_messages;
|
||||||
|
}
|
||||||
|
|
||||||
|
window.starred_messages = starred_messages;
|
|
@ -324,6 +324,7 @@ $(function () {
|
||||||
ui.initialize();
|
ui.initialize();
|
||||||
panels.initialize();
|
panels.initialize();
|
||||||
typing.initialize();
|
typing.initialize();
|
||||||
|
starred_messages.initialize();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -31,6 +31,9 @@
|
||||||
<i class="fa fa-star" aria-hidden="true"></i>
|
<i class="fa fa-star" aria-hidden="true"></i>
|
||||||
</span>
|
</span>
|
||||||
<span class="hover-underline">{{ _('Starred messages') }}</span>
|
<span class="hover-underline">{{ _('Starred messages') }}</span>
|
||||||
|
<span class="count">
|
||||||
|
<span class="value"></span>
|
||||||
|
</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li data-name="mentioned" class="global-filter">
|
<li data-name="mentioned" class="global-filter">
|
||||||
|
|
Loading…
Reference in New Issue