mirror of
https://github.com/zulip/zulip.git
synced 2025-11-09 16:37:23 +00:00
unread: Add code to set unread counts from page_params data.
This won't run in production due to the feature flag.
This commit is contained in:
@@ -17,6 +17,10 @@ var stream_data = require('js/stream_data.js');
|
|||||||
|
|
||||||
set_global('stream_data', stream_data);
|
set_global('stream_data', stream_data);
|
||||||
set_global('blueslip', {});
|
set_global('blueslip', {});
|
||||||
|
set_global('page_params', {});
|
||||||
|
set_global('feature_flags', {
|
||||||
|
load_server_counts: true,
|
||||||
|
});
|
||||||
|
|
||||||
var Dict = global.Dict;
|
var Dict = global.Dict;
|
||||||
var muting = global.muting;
|
var muting = global.muting;
|
||||||
@@ -465,7 +469,64 @@ stream_data.get_stream_id = function () {
|
|||||||
assert(!unread.message_unread({flags: ['read']}));
|
assert(!unread.message_unread({flags: ['read']}));
|
||||||
}());
|
}());
|
||||||
|
|
||||||
|
(function test_server_counts() {
|
||||||
|
// note that user_id 30 is "me"
|
||||||
|
|
||||||
|
page_params.unread_msgs = {
|
||||||
|
pms: [
|
||||||
|
{
|
||||||
|
sender_id: 101,
|
||||||
|
unread_message_ids: [
|
||||||
|
31, 32, 60, 61, 62, 63,
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
huddles: [
|
||||||
|
{
|
||||||
|
user_ids_string: "4,6,30,101",
|
||||||
|
unread_message_ids: [
|
||||||
|
34, 50,
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
streams: [
|
||||||
|
{
|
||||||
|
stream_id: 1,
|
||||||
|
topic: "test",
|
||||||
|
unread_message_ids: [
|
||||||
|
33, 35, 36,
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
mentions: [31, 34, 40, 41],
|
||||||
|
};
|
||||||
|
|
||||||
|
unread.declare_bankruptcy();
|
||||||
|
unread.initialize();
|
||||||
|
|
||||||
|
assert.equal(unread.num_unread_for_person('101'), 6);
|
||||||
|
assert.equal(unread.num_unread_for_person('4,6,101'), 2);
|
||||||
|
assert.equal(unread.num_unread_for_person('30'), 0);
|
||||||
|
|
||||||
|
assert.equal(unread.num_unread_for_topic(0, 'bogus'), 0);
|
||||||
|
assert.equal(unread.num_unread_for_topic(1, 'bogus'), 0);
|
||||||
|
assert.equal(unread.num_unread_for_topic(1, 'test'), 3);
|
||||||
|
|
||||||
|
assert.equal(unread.unread_mentions_counter.count(), 4);
|
||||||
|
|
||||||
|
unread.mark_as_read(40);
|
||||||
|
assert.equal(unread.unread_mentions_counter.count(), 3);
|
||||||
|
|
||||||
|
unread.mark_as_read(35);
|
||||||
|
assert.equal(unread.num_unread_for_topic(1, 'test'), 2);
|
||||||
|
|
||||||
|
unread.mark_as_read(34);
|
||||||
|
assert.equal(unread.num_unread_for_person('4,6,101'), 1);
|
||||||
|
}());
|
||||||
|
|
||||||
(function test_errors() {
|
(function test_errors() {
|
||||||
|
unread.declare_bankruptcy();
|
||||||
|
|
||||||
global.blueslip.warn = function () {};
|
global.blueslip.warn = function () {};
|
||||||
|
|
||||||
// Test unknown message leads to zero count
|
// Test unknown message leads to zero count
|
||||||
|
|||||||
@@ -2,6 +2,8 @@ var feature_flags = (function () {
|
|||||||
|
|
||||||
var exports = {};
|
var exports = {};
|
||||||
|
|
||||||
|
exports.load_server_counts = false;
|
||||||
|
|
||||||
// Experimental modification to support much wider message views.
|
// Experimental modification to support much wider message views.
|
||||||
exports.full_width = false;
|
exports.full_width = false;
|
||||||
|
|
||||||
|
|||||||
@@ -249,6 +249,7 @@ $(function () {
|
|||||||
reload.initialize();
|
reload.initialize();
|
||||||
server_events.initialize();
|
server_events.initialize();
|
||||||
people.initialize();
|
people.initialize();
|
||||||
|
unread.initialize();
|
||||||
bot_data.initialize(); // Must happen after people.initialize()
|
bot_data.initialize(); // Must happen after people.initialize()
|
||||||
message_fetch.initialize();
|
message_fetch.initialize();
|
||||||
emoji.initialize();
|
emoji.initialize();
|
||||||
|
|||||||
@@ -28,6 +28,12 @@ function make_id_set() {
|
|||||||
return ids.has(id);
|
return ids.has(id);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
self.add_many = function (id_list) {
|
||||||
|
_.each(id_list, function (id) {
|
||||||
|
ids.set(id, true);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
self.del = function (id) {
|
self.del = function (id) {
|
||||||
ids.del(id);
|
ids.del(id);
|
||||||
};
|
};
|
||||||
@@ -105,6 +111,29 @@ exports.unread_pm_counter = (function () {
|
|||||||
bucketer.clear();
|
bucketer.clear();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
self.set_pms = function (pms) {
|
||||||
|
_.each(pms, function (obj) {
|
||||||
|
var user_ids_string = obj.sender_id.toString();
|
||||||
|
self.set_message_ids(user_ids_string, obj.unread_message_ids);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
self.set_huddles = function (huddles) {
|
||||||
|
_.each(huddles, function (obj) {
|
||||||
|
var user_ids_string = people.pm_lookup_key(obj.user_ids_string);
|
||||||
|
self.set_message_ids(user_ids_string, obj.unread_message_ids);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
self.set_message_ids = function (user_ids_string, unread_message_ids) {
|
||||||
|
_.each(unread_message_ids, function (msg_id) {
|
||||||
|
bucketer.add({
|
||||||
|
bucket_key: user_ids_string,
|
||||||
|
item_id: msg_id,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
self.add = function (message) {
|
self.add = function (message) {
|
||||||
var user_ids_string = people.pm_reply_user_string(message);
|
var user_ids_string = people.pm_reply_user_string(message);
|
||||||
if (user_ids_string) {
|
if (user_ids_string) {
|
||||||
@@ -168,6 +197,19 @@ exports.unread_topic_counter = (function () {
|
|||||||
bucketer.clear();
|
bucketer.clear();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
self.set_streams = function (objs) {
|
||||||
|
_.each(objs, function (obj) {
|
||||||
|
var stream_id = obj.stream_id;
|
||||||
|
var topic = obj.topic;
|
||||||
|
var unread_message_ids = obj.unread_message_ids;
|
||||||
|
|
||||||
|
_.each(unread_message_ids, function (msg_id) {
|
||||||
|
self.add(stream_id, topic, msg_id);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
self.add = function (stream_id, topic, msg_id) {
|
self.add = function (stream_id, topic, msg_id) {
|
||||||
bucketer.add({
|
bucketer.add({
|
||||||
bucket_key: stream_id,
|
bucket_key: stream_id,
|
||||||
@@ -417,6 +459,32 @@ exports.set_read_flag = function (message) {
|
|||||||
message.unread = false;
|
message.unread = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
exports.load_server_counts = function () {
|
||||||
|
var unread_msgs = page_params.unread_msgs;
|
||||||
|
|
||||||
|
exports.unread_pm_counter.set_huddles(unread_msgs.huddles);
|
||||||
|
exports.unread_pm_counter.set_pms(unread_msgs.pms);
|
||||||
|
exports.unread_topic_counter.set_streams(unread_msgs.streams);
|
||||||
|
exports.unread_mentions_counter.add_many(unread_msgs.mentions);
|
||||||
|
|
||||||
|
_.each(unread_msgs.huddles, function (obj) {
|
||||||
|
unread_messages.add_many(obj.unread_message_ids);
|
||||||
|
});
|
||||||
|
_.each(unread_msgs.pms, function (obj) {
|
||||||
|
unread_messages.add_many(obj.unread_message_ids);
|
||||||
|
});
|
||||||
|
_.each(unread_msgs.streams, function (obj) {
|
||||||
|
unread_messages.add_many(obj.unread_message_ids);
|
||||||
|
});
|
||||||
|
unread_messages.add_many(unread_msgs.mentions);
|
||||||
|
};
|
||||||
|
|
||||||
|
exports.initialize = function () {
|
||||||
|
if (feature_flags.load_server_counts) {
|
||||||
|
exports.load_server_counts();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
return exports;
|
return exports;
|
||||||
}());
|
}());
|
||||||
if (typeof module !== 'undefined') {
|
if (typeof module !== 'undefined') {
|
||||||
|
|||||||
Reference in New Issue
Block a user