49 lines
1.0 KiB
JavaScript
49 lines
1.0 KiB
JavaScript
import Ember from 'ember';
|
|
|
|
const {
|
|
get,
|
|
computed,
|
|
Component,
|
|
getProperties,
|
|
inject: { service },
|
|
computed: {
|
|
alias,
|
|
},
|
|
} = Ember;
|
|
|
|
export default Component.extend({
|
|
tagName: 'a',
|
|
classNames: ['emoji-reaction'],
|
|
classNameBindings: ['isParticipated'],
|
|
|
|
emojis: service(),
|
|
session: service(),
|
|
|
|
isParticipated: alias('reaction.participated'),
|
|
|
|
style: computed('reaction.value', function() {
|
|
return get(this, `emojis.styledMap.${get(this, 'reaction.value')}`);
|
|
}),
|
|
|
|
click() {
|
|
if(!get(this, 'session.isAuthenticated')) {
|
|
return;
|
|
}
|
|
let { store, reaction } = getProperties(this, 'store', 'reaction');
|
|
|
|
let {
|
|
participated,
|
|
reactable_id,
|
|
reactable_type,
|
|
} = getProperties(reaction, 'participated', 'reactable_id', 'reactable_type');
|
|
|
|
if (participated) {
|
|
reaction
|
|
.destroyRecord()
|
|
.then(() => store.findRecord(reactable_type.toLowerCase(), reactable_id));
|
|
} else {
|
|
this.onParticipate(get(reaction, 'value'));
|
|
}
|
|
},
|
|
});
|