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