mirror of https://github.com/zulip/zulip.git
parent
c33102f692
commit
c2847669b1
|
@ -130,6 +130,9 @@ var event_fixtures = {
|
||||||
op: 'add',
|
op: 'add',
|
||||||
message_id: 128,
|
message_id: 128,
|
||||||
emoji_name: 'anguished_pig',
|
emoji_name: 'anguished_pig',
|
||||||
|
user: {
|
||||||
|
id: "1",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
reaction__remove: {
|
reaction__remove: {
|
||||||
|
@ -137,6 +140,9 @@ var event_fixtures = {
|
||||||
op: 'remove',
|
op: 'remove',
|
||||||
message_id: 256,
|
message_id: 256,
|
||||||
emoji_name: 'angery',
|
emoji_name: 'angery',
|
||||||
|
user: {
|
||||||
|
id: "1",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
// Please keep this next section un-nested, as we want this to partly
|
// Please keep this next section un-nested, as we want this to partly
|
||||||
|
|
|
@ -201,6 +201,11 @@ set_global('current_msg_list', {
|
||||||
var message_id = 1001; // see above for setup
|
var message_id = 1001; // see above for setup
|
||||||
var emoji_name = 'smile'; // should be a current reaction
|
var emoji_name = 'smile'; // should be a current reaction
|
||||||
|
|
||||||
|
var orig_remove_reaction = reactions.remove_reaction;
|
||||||
|
var orig_add_reaction = reactions.add_reaction;
|
||||||
|
reactions.remove_reaction = function () {};
|
||||||
|
reactions.add_reaction = function () {};
|
||||||
|
|
||||||
global.with_stub(function (stub) {
|
global.with_stub(function (stub) {
|
||||||
global.channel.del = stub.f;
|
global.channel.del = stub.f;
|
||||||
reactions.toggle_emoji_reaction(message_id, emoji_name);
|
reactions.toggle_emoji_reaction(message_id, emoji_name);
|
||||||
|
@ -267,6 +272,8 @@ set_global('current_msg_list', {
|
||||||
reactions.toggle_emoji_reaction(message_id, emoji_name);
|
reactions.toggle_emoji_reaction(message_id, emoji_name);
|
||||||
assert.equal(error_msg, 'Bad emoji name: ' + emoji_name);
|
assert.equal(error_msg, 'Bad emoji name: ' + emoji_name);
|
||||||
global.blueslip.warn = orig_func;
|
global.blueslip.warn = orig_func;
|
||||||
|
reactions.add_reaction = orig_add_reaction;
|
||||||
|
reactions.remove_reaction = orig_remove_reaction;
|
||||||
}());
|
}());
|
||||||
|
|
||||||
(function test_set_reaction_count() {
|
(function test_set_reaction_count() {
|
||||||
|
@ -335,10 +342,16 @@ set_global('current_msg_list', {
|
||||||
};
|
};
|
||||||
|
|
||||||
reactions.add_reaction(alice_event);
|
reactions.add_reaction(alice_event);
|
||||||
|
|
||||||
assert(template_called);
|
assert(template_called);
|
||||||
assert(insert_called);
|
assert(insert_called);
|
||||||
|
|
||||||
|
// Running add_reaction again should not result in any changes
|
||||||
|
template_called = false;
|
||||||
|
insert_called = false;
|
||||||
|
reactions.add_reaction(alice_event);
|
||||||
|
assert(!template_called);
|
||||||
|
assert(!insert_called);
|
||||||
|
|
||||||
// Now, have Bob react to the same emoji (update).
|
// Now, have Bob react to the same emoji (update).
|
||||||
|
|
||||||
var bob_event = {
|
var bob_event = {
|
||||||
|
@ -400,6 +413,11 @@ set_global('current_msg_list', {
|
||||||
reactions.remove_reaction(alice_event);
|
reactions.remove_reaction(alice_event);
|
||||||
assert(removed);
|
assert(removed);
|
||||||
|
|
||||||
|
// Running remove_reaction again should not result in any changes
|
||||||
|
removed = false;
|
||||||
|
reactions.remove_reaction(alice_event);
|
||||||
|
assert(!removed);
|
||||||
|
|
||||||
current_emojis = reactions.get_emojis_used_by_user_for_message_id(1001);
|
current_emojis = reactions.get_emojis_used_by_user_for_message_id(1001);
|
||||||
assert.deepEqual(current_emojis, ['smile', 'inactive_realm_emoji']);
|
assert.deepEqual(current_emojis, ['smile', 'inactive_realm_emoji']);
|
||||||
|
|
||||||
|
|
|
@ -47,7 +47,21 @@ function get_message(message_id) {
|
||||||
return message;
|
return message;
|
||||||
}
|
}
|
||||||
|
|
||||||
function send_reaction_ajax(message_id, reaction_info) {
|
function create_reaction(message_id, reaction_info) {
|
||||||
|
return {
|
||||||
|
message_id: message_id,
|
||||||
|
user: {
|
||||||
|
user_id: page_params.user_id,
|
||||||
|
id: page_params.user_id,
|
||||||
|
},
|
||||||
|
local_id: exports.get_local_reaction_id(reaction_info),
|
||||||
|
reaction_type: reaction_info.reaction_type,
|
||||||
|
emoji_name: reaction_info.emoji_name,
|
||||||
|
emoji_code: reaction_info.emoji_code,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function update_ui_and_send_reaction_ajax(message_id, reaction_info) {
|
||||||
var message = get_message(message_id);
|
var message = get_message(message_id);
|
||||||
var has_reacted = exports.current_user_has_reacted_to_emoji(
|
var has_reacted = exports.current_user_has_reacted_to_emoji(
|
||||||
message,
|
message,
|
||||||
|
@ -55,6 +69,13 @@ function send_reaction_ajax(message_id, reaction_info) {
|
||||||
reaction_info.reaction_type
|
reaction_info.reaction_type
|
||||||
);
|
);
|
||||||
var operation = has_reacted ? 'remove' : 'add';
|
var operation = has_reacted ? 'remove' : 'add';
|
||||||
|
var reaction = create_reaction(message_id, reaction_info);
|
||||||
|
|
||||||
|
if (operation === "add") {
|
||||||
|
exports.add_reaction(reaction);
|
||||||
|
} else {
|
||||||
|
exports.remove_reaction(reaction);
|
||||||
|
}
|
||||||
|
|
||||||
var args = {
|
var args = {
|
||||||
url: '/json/messages/' + message_id + '/reactions',
|
url: '/json/messages/' + message_id + '/reactions',
|
||||||
|
@ -107,7 +128,7 @@ exports.toggle_emoji_reaction = function (message_id, emoji_name) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
send_reaction_ajax(message_id, reaction_info);
|
update_ui_and_send_reaction_ajax(message_id, reaction_info);
|
||||||
|
|
||||||
// The next line isn't always necessary, but it is harmless/quick
|
// The next line isn't always necessary, but it is harmless/quick
|
||||||
// when no popovers are there.
|
// when no popovers are there.
|
||||||
|
@ -117,7 +138,7 @@ exports.toggle_emoji_reaction = function (message_id, emoji_name) {
|
||||||
exports.process_reaction_click = function (message_id, local_id) {
|
exports.process_reaction_click = function (message_id, local_id) {
|
||||||
var reaction_info = exports.get_reaction_info(local_id);
|
var reaction_info = exports.get_reaction_info(local_id);
|
||||||
|
|
||||||
send_reaction_ajax(message_id, reaction_info);
|
update_ui_and_send_reaction_ajax(message_id, reaction_info);
|
||||||
};
|
};
|
||||||
|
|
||||||
function full_name(user_id) {
|
function full_name(user_id) {
|
||||||
|
@ -176,6 +197,13 @@ exports.add_reaction = function (event) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var reacted = exports.current_user_has_reacted_to_emoji(message,
|
||||||
|
event.emoji_code,
|
||||||
|
event.reaction_type);
|
||||||
|
if (reacted && (event.user.user_id === page_params.user_id)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
event.user.id = event.user.user_id;
|
event.user.id = event.user.user_id;
|
||||||
event.local_id = exports.get_local_reaction_id(event);
|
event.local_id = exports.get_local_reaction_id(event);
|
||||||
|
|
||||||
|
@ -280,6 +308,13 @@ exports.remove_reaction = function (event) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var not_reacted = !exports.current_user_has_reacted_to_emoji(message,
|
||||||
|
emoji_code,
|
||||||
|
reaction_type);
|
||||||
|
if (not_reacted && (event.user.user_id === page_params.user_id)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Do the data part first:
|
// Do the data part first:
|
||||||
// Remove reactions from our message object.
|
// Remove reactions from our message object.
|
||||||
_.each(message.reactions, function (reaction, index) {
|
_.each(message.reactions, function (reaction, index) {
|
||||||
|
|
Loading…
Reference in New Issue