Skip to content

Commit b142696

Browse files
committed
Check for valid reactions
1 parent 8dea529 commit b142696

2 files changed

Lines changed: 181 additions & 153 deletions

File tree

lib/client.js

Lines changed: 75 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,17 @@
22

33
/*globals $, app, utils, socket, templates, config*/
44

5-
$(document).ready(function() {
6-
7-
var env = utils.findBootstrapEnvironment();
8-
setupPostReactions();
9-
10-
function setupPostReactions() {
11-
$(window).on('action:ajaxify.end', function(ev, data) {
12-
if (data.url && data.url.match('^topic/')) {
13-
setupReactionSockets();
14-
createReactionTooltips();
15-
$('[component="topic"]').on('click', '[component="post/reaction"]', function(e) {
5+
$(document).ready(function () {
6+
7+
var env = utils.findBootstrapEnvironment();
8+
setupPostReactions();
9+
10+
function setupPostReactions() {
11+
$(window).on('action:ajaxify.end', function (ev, data) {
12+
if (data.url && data.url.match('^topic/')) {
13+
setupReactionSockets();
14+
createReactionTooltips();
15+
$('[component="topic"]').on('click', '[component="post/reaction"]', function (e) {
1616
var tid = $('[component="topic"]').attr("data-tid");
1717
var reactionElement = $(this);
1818
var pid = reactionElement.attr("data-pid");
@@ -23,97 +23,98 @@ $(document).ready(function() {
2323
tid: tid,
2424
pid: pid,
2525
reaction: reaction
26-
}, function(err) {
26+
}, function (err) {
2727
if (err) {
2828
app.alertError(err.message);
2929
}
3030
});
31-
});
32-
31+
});
32+
3333
$('[component="topic"]').on('click', '[component="post/reaction/add"]', function (e) {
3434
var reactionAddEl = $(this);
3535
var tid = $('[component="topic"]').attr("data-tid");
3636
var pid = reactionAddEl.attr("data-pid");
3737
require(['plugin/emoji-extended/composer/modal'], function (modal) {
3838
modal.open().then(function (item) {
39+
console.log(item);
3940
socket.emit('plugins.reactions.addPostReaction', {
4041
tid: tid,
4142
pid: pid,
4243
reaction: item.id
43-
}, function(err) {
44+
}, function (err) {
4445
if (err) {
4546
app.alertError(err.message);
4647
}
47-
48+
4849
$('[component="post/reaction"][data-pid="' + pid + '"][data-reaction="' + item.id + '"]').addClass("reacted");
4950
});
5051
});
5152
});
5253
});
53-
}
54-
});
55-
56-
socket.on('event:post_deleted', function(data) {
57-
$('[component="post/reactions"][data-pid="' + data.pid + '"]').addClass("hidden");
58-
});
54+
}
55+
});
56+
57+
socket.on('event:post_deleted', function (data) {
58+
$('[component="post/reactions"][data-pid="' + data.pid + '"]').addClass("hidden");
59+
});
60+
61+
socket.on('event:post_restored', function (data) {
62+
$('[component="post/reactions"][data-pid="' + data.pid + '"]').removeClass("hidden");
63+
});
64+
}
65+
66+
function setupReactionSockets() {
67+
socket.on('event:reactions.addPostReaction', function (data) {
68+
updateReactionCount(data);
69+
});
70+
71+
socket.on('event:reactions.removePostReaction', function (data) {
72+
updateReactionCount(data);
73+
});
74+
}
75+
76+
function updateReactionCount(data) {
77+
var maxReactionsReached = parseInt(data.totalReactions, 10) >= config.maximumReactions;
78+
$('[component="post/reaction/add"][data-pid="' + data.pid + '"]').toggleClass("max-reactions", maxReactionsReached);
79+
80+
var reactionEl = $('[component="post/reaction"][data-pid="' + data.pid + '"][data-reaction="' + data.reaction + '"]');
81+
82+
if (parseInt(data.reactionCount, 10) === 0) {
83+
reactionEl.tooltip('destroy');
84+
reactionEl.remove();
85+
}
86+
87+
if (reactionEl.length === 0) {
88+
templates.parse('partials/topic/reaction', {
89+
"posts": {
90+
"pid": data.pid,
91+
"reactions": {
92+
"pid": data.pid,
93+
"reaction": data.reaction,
94+
"memberCount": data.reactionCount,
95+
"usernames": data.usernames,
96+
"reacted": (parseInt(data.uid, 10) === app.user.uid),
97+
"reactionImage": data.reactionImage
98+
}
99+
}
100+
}, function (html) {
101+
$('[component="post/reactions"][data-pid="' + data.pid + '"]').append(html);
102+
});
103+
} else {
104+
reactionEl.find(".reaction-emoji-count").attr("data-count", data.reactionCount);
105+
reactionEl.attr("data-original-title", data.usernames);
106+
reactionEl.toggleClass("reacted", !(parseInt(data.uid, 10) === app.user.uid));
107+
}
108+
}
59109

60-
socket.on('event:post_restored', function(data) {
61-
$('[component="post/reactions"][data-pid="' + data.pid + '"]').removeClass("hidden");
62-
});
63-
}
64-
65-
function setupReactionSockets() {
66-
socket.on('event:reactions.addPostReaction', function (data) {
67-
updateReactionCount(data);
68-
});
69-
70-
socket.on('event:reactions.removePostReaction', function (data) {
71-
updateReactionCount(data);
72-
});
73-
}
74-
75-
function updateReactionCount(data) {
76-
var maxReactionsReached = parseInt(data.totalReactions, 10) >= config.maximumReactions;
77-
$('[component="post/reaction/add"][data-pid="' + data.pid + '"]').toggleClass("max-reactions", maxReactionsReached);
78-
79-
var reactionEl = $('[component="post/reaction"][data-pid="' + data.pid + '"][data-reaction="' + data.reaction + '"]');
80-
81-
if (parseInt(data.reactionCount, 10) === 0) {
82-
reactionEl.tooltip('destroy');
83-
reactionEl.remove();
84-
}
85-
86-
if (reactionEl.length === 0) {
87-
templates.parse('partials/topic/reaction', {
88-
"posts": {
89-
"pid": data.pid,
90-
"reactions": {
91-
"pid": data.pid,
92-
"reaction": data.reaction,
93-
"memberCount": data.reactionCount,
94-
"usernames": data.usernames,
95-
"reacted": (parseInt(data.uid, 10) === app.user.uid),
96-
"reactionImage": data.reactionImage
97-
}
98-
}
99-
}, function(html) {
100-
$('[component="post/reactions"][data-pid="' + data.pid + '"]').append(html);
101-
});
102-
} else {
103-
reactionEl.find(".reaction-emoji-count").attr("data-count", data.reactionCount);
104-
reactionEl.attr("data-original-title", data.usernames);
105-
reactionEl.toggleClass("reacted", !(parseInt(data.uid, 10) === app.user.uid));
106-
}
107-
}
108-
109-
function createReactionTooltips() {
110-
$('.reaction, .reaction-add').each(function () {
110+
function createReactionTooltips() {
111+
$('.reaction, .reaction-add').each(function () {
111112
if (!utils.isTouchDevice()) {
112113
$(this).tooltip({
113114
placement: 'top',
114115
title: $(this).attr('title')
115116
});
116117
}
117118
});
118-
}
119+
}
119120
});

0 commit comments

Comments
 (0)