local echo: Bypass message.flags array.

We no longer set message.flags in the local echo path.

In the markdown parsing step, we just set message.mentioned
directly.

And then we change `insert_new_messages` to no longer
convert flags to booleans, and move that code to only
happen for incoming server message events.
This commit is contained in:
Steve Howell
2017-12-16 17:25:31 -05:00
committed by showell
parent 4d8d17d134
commit 0a3d769911
8 changed files with 81 additions and 32 deletions

View File

@@ -12,6 +12,7 @@ zrequire('people');
zrequire('user_groups');
zrequire('emoji_codes', 'generated/emoji/emoji_codes');
zrequire('emoji');
zrequire('message_store');
zrequire('markdown');
set_global('window', {
@@ -193,15 +194,18 @@ var bugdown_data = JSON.parse(fs.readFileSync(path.join(__dirname, '../../zerver
(function test_message_flags() {
var message = {raw_content: '@**Leo**'};
markdown.apply_markdown(message);
assert(!_.contains(message.flags, 'mentioned'));
assert(!message.mentioned);
assert(!message.mentioned_me_directly);
message = {raw_content: '@**Cordelia Lear**'};
markdown.apply_markdown(message);
assert(_.contains(message.flags, 'mentioned'));
assert(message.mentioned);
assert(message.mentioned_me_directly);
message = {raw_content: '@**all**'};
markdown.apply_markdown(message);
assert(_.contains(message.flags, 'mentioned'));
assert(message.mentioned);
assert(!message.mentioned_me_directly);
}());
(function test_marked() {
@@ -342,44 +346,38 @@ var bugdown_data = JSON.parse(fs.readFileSync(path.join(__dirname, '../../zerver
(function test_message_flags() {
var input = "/me is testing this";
var message = {subject: "No links here", raw_content: input};
message.flags = ['read'];
markdown.apply_markdown(message);
assert.equal(message.is_me_message, true);
assert.equal(message.flags.length, 1);
assert(message.flags.indexOf('read') !== -1);
assert(!message.unread);
input = "testing this @**all** @**Cordelia Lear**";
message = {subject: "No links here", raw_content: input};
markdown.apply_markdown(message);
assert.equal(message.is_me_message, false);
assert.equal(message.flags.length, 1);
assert(message.flags.indexOf('mentioned') !== -1);
assert.equal(message.mentioned, true);
assert.equal(message.mentioned_me_directly, true);
input = "test @all";
message = {subject: "No links here", raw_content: input};
markdown.apply_markdown(message);
assert.equal(message.flags.length, 1);
assert(message.flags.indexOf('mentioned') !== -1);
assert.equal(message.mentioned, true);
input = "test @any";
message = {subject: "No links here", raw_content: input};
markdown.apply_markdown(message);
assert.equal(message.flags.length, 0);
assert(message.flags.indexOf('mentioned') === -1);
assert.equal(message.mentioned, false);
input = "test @*hamletcharacters*";
message = {subject: "No links here", raw_content: input};
markdown.apply_markdown(message);
assert.equal(message.flags.length, 1);
assert(message.flags.indexOf('mentioned') !== -1);
assert.equal(message.mentioned, true);
input = "test @*backend*";
message = {subject: "No links here", raw_content: input};
markdown.apply_markdown(message);
assert.equal(message.flags.length, 0);
assert(message.flags.indexOf('mentioned') === -1);
assert.equal(message.mentioned, false);
}());
(function test_backend_only_realm_filters() {

View File

@@ -183,6 +183,38 @@ global.people.initialize_current_user(me.user_id);
assert.equal(num_partner, 0);
}());
(function test_update_booleans() {
var message = {};
// First, test fields that we do actually want to update.
message.mentioned = false;
message.mentioned_me_directly = false;
message.alerted = false;
var flags = ['mentioned', 'has_alert_word', 'read'];
message_store.update_booleans(message, flags);
assert.equal(message.mentioned, true);
assert.equal(message.mentioned_me_directly, true);
assert.equal(message.alerted, true);
flags = ['read'];
message_store.update_booleans(message, flags);
assert.equal(message.mentioned, false);
assert.equal(message.mentioned_me_directly, false);
assert.equal(message.alerted, false);
// Make sure we don't muck with unread.
message.unread = false;
flags = [''];
message_store.update_booleans(message, flags);
assert.equal(message.unread, false);
message.unread = true;
flags = ['read'];
message_store.update_booleans(message, flags);
assert.equal(message.unread, true);
}());
(function test_message_id_change() {
var message = {
sender_email: 'me@example.com',

View File

@@ -6,6 +6,7 @@ set_global('window', {
});
global.stub_out_jquery();
zrequire('message_store');
zrequire('server_events_dispatch');
zrequire('server_events');