Can send reaction from picker
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
import AddReactionIcon from "@mui/icons-material/AddReaction";
|
||||
import DeleteIcon from "@mui/icons-material/Delete";
|
||||
import EditIcon from "@mui/icons-material/Edit";
|
||||
import {
|
||||
@@ -13,6 +14,7 @@ import {
|
||||
Typography,
|
||||
useTheme,
|
||||
} from "@mui/material";
|
||||
import EmojiPicker, { EmojiStyle, Theme } from "emoji-picker-react";
|
||||
import React from "react";
|
||||
import { MatrixApiEvent } from "../../api/matrix/MatrixApiEvent";
|
||||
import type { UsersMap } from "../../api/matrix/MatrixApiProfile";
|
||||
@@ -86,6 +88,7 @@ function RoomMessage(p: {
|
||||
const [showImageFullScreen, setShowImageFullScreen] = React.useState(false);
|
||||
|
||||
const [editMessage, setEditMessage] = React.useState<string | undefined>();
|
||||
const [pickReaction, setPickReaction] = React.useState(false);
|
||||
|
||||
const closeImageFullScreen = () => setShowImageFullScreen(false);
|
||||
|
||||
@@ -122,6 +125,21 @@ function RoomMessage(p: {
|
||||
}
|
||||
};
|
||||
|
||||
const handleAddReaction = () => setPickReaction(true);
|
||||
const handleCancelAddReaction = () => setPickReaction(false);
|
||||
const handleSelectEmoji = async (key: string) => {
|
||||
loadingMessage.show("Setting reaction...");
|
||||
try {
|
||||
await MatrixApiEvent.ReactToEvent(p.room, p.message.event_id, key);
|
||||
setPickReaction(false);
|
||||
} catch (e) {
|
||||
console.error("Failed to select emoji!", e);
|
||||
alert(`Failed to select emoji! ${e}`);
|
||||
} finally {
|
||||
loadingMessage.hide();
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<>
|
||||
{/* Print date if required */}
|
||||
@@ -201,12 +219,18 @@ function RoomMessage(p: {
|
||||
right: "0px",
|
||||
}}
|
||||
>
|
||||
{/* Add reaction */}
|
||||
<Button onClick={handleAddReaction}>
|
||||
<AddReactionIcon />
|
||||
</Button>
|
||||
{/* Edit text message */}
|
||||
{p.message.account === user.info.matrix_user_id &&
|
||||
!p.message.image && (
|
||||
<Button onClick={handleEditMessage}>
|
||||
<EditIcon />
|
||||
</Button>
|
||||
)}
|
||||
{/* Delete message */}
|
||||
{p.message.account === user.info.matrix_user_id && (
|
||||
<Button onClick={handleDeleteMessage}>
|
||||
<DeleteIcon color="error" />
|
||||
@@ -226,6 +250,15 @@ function RoomMessage(p: {
|
||||
/>
|
||||
</Dialog>
|
||||
|
||||
{/* Pick reaction dialog */}
|
||||
<Dialog open={pickReaction} onClose={handleCancelAddReaction}>
|
||||
<EmojiPicker
|
||||
emojiStyle={EmojiStyle.GOOGLE}
|
||||
theme={Theme.AUTO}
|
||||
onEmojiClick={(emoji) => handleSelectEmoji(emoji.emoji)}
|
||||
/>
|
||||
</Dialog>
|
||||
|
||||
{/* Edit message dialog */}
|
||||
<Dialog open={!!editMessage} onClose={handleCancelEditMessage} fullWidth>
|
||||
<DialogTitle>Edit message content</DialogTitle>
|
||||
|
||||
Reference in New Issue
Block a user