2020-07-25 10:22:57 +02:00
|
|
|
import {React, WebpackModules} from "modules";
|
2020-07-24 10:59:16 +02:00
|
|
|
import EmoteModule from "../builtins/emotes/emotes";
|
2020-07-25 10:22:57 +02:00
|
|
|
|
|
|
|
const ContextMenuActions = WebpackModules.getByProps("openContextMenu");
|
2020-07-24 10:59:16 +02:00
|
|
|
const {MenuItem, MenuGroup} = WebpackModules.find(m => m.MenuRadioItem && !m.default);
|
|
|
|
const ContextMenu = WebpackModules.getByProps("default", "MenuStyle").default;
|
|
|
|
const {ComponentDispatch} = WebpackModules.getByProps("ComponentDispatch");
|
2020-07-25 10:22:57 +02:00
|
|
|
|
2020-07-24 10:59:16 +02:00
|
|
|
export default class EmoteIcon extends React.Component {
|
|
|
|
render() {
|
|
|
|
return <div className="emote-container" onClick={this.handleOnClick.bind(this)} onContextMenu={this.handleOnContextMenu.bind(this)}>
|
|
|
|
<img src={this.props.url} alt={this.props.emote} title={this.props.emote}/>
|
2020-07-25 10:22:57 +02:00
|
|
|
</div>;
|
2020-07-24 10:59:16 +02:00
|
|
|
}
|
2020-07-25 10:22:57 +02:00
|
|
|
|
2020-07-24 10:59:16 +02:00
|
|
|
handleOnClick() {
|
|
|
|
this.insertText(this.props.emote);
|
|
|
|
}
|
2020-07-25 10:22:57 +02:00
|
|
|
|
2020-07-24 10:59:16 +02:00
|
|
|
handleOnContextMenu(e) {
|
2020-07-25 10:22:57 +02:00
|
|
|
ContextMenuActions.openContextMenu(e, () => <ContextMenu navId="EmoteContextMenu" onClose={ContextMenuActions.closeContextMenu}>
|
2020-07-24 10:59:16 +02:00
|
|
|
<MenuGroup>
|
2020-07-25 10:22:57 +02:00
|
|
|
<MenuItem label={EmoteModule.isFavorite(this.props.emote) ? "Remove Favorite" : "Add Favorite"} id="favorite" action={this.handlefavorite.bind(this)} onClose={ContextMenuActions.closeContextMenu}/>
|
2020-07-24 10:59:16 +02:00
|
|
|
</MenuGroup>
|
|
|
|
</ContextMenu>);
|
|
|
|
}
|
2020-07-25 10:22:57 +02:00
|
|
|
|
2020-07-24 10:59:16 +02:00
|
|
|
handlefavorite() {
|
2020-07-25 10:22:57 +02:00
|
|
|
ContextMenuActions.closeContextMenu();
|
2020-07-24 10:59:16 +02:00
|
|
|
EmoteModule.isFavorite(this.props.emote) ? EmoteModule.removeFavorite(this.props.emote) : EmoteModule.addFavorite(this.props.emote, this.props.url);
|
|
|
|
}
|
2020-07-25 10:22:57 +02:00
|
|
|
|
2020-07-24 10:59:16 +02:00
|
|
|
insertText(emote) {
|
2020-07-25 10:22:57 +02:00
|
|
|
ComponentDispatch.dispatchToLastSubscribed("INSERT_TEXT", {content: emote});
|
2020-07-24 10:59:16 +02:00
|
|
|
}
|
|
|
|
}
|