mirror of
https://github.com/revoltchat/revite.git
synced 2024-12-25 07:02:10 -05:00
Merge pull request #98 from fatalerrorcoded/master
This commit is contained in:
commit
468350b36c
2 changed files with 56 additions and 44 deletions
|
@ -3,6 +3,7 @@ import { File, XCircle } from "@styled-icons/boxicons-solid";
|
|||
import { observer } from "mobx-react-lite";
|
||||
import { SYSTEM_USER_ID } from "revolt.js";
|
||||
import { Channel } from "revolt.js/dist/maps/Channels";
|
||||
import { Message } from "revolt.js/dist/maps/Messages";
|
||||
import styled from "styled-components";
|
||||
|
||||
import { Text } from "preact-i18n";
|
||||
|
@ -14,6 +15,8 @@ import { getRenderer } from "../../../../lib/renderer/Singleton";
|
|||
import { dispatch, getState } from "../../../../redux";
|
||||
import { Reply } from "../../../../redux/reducers/queue";
|
||||
|
||||
import { useClient } from "../../../../context/revoltjs/RevoltClient";
|
||||
|
||||
import IconButton from "../../../ui/IconButton";
|
||||
|
||||
import Markdown from "../../../markdown/Markdown";
|
||||
|
@ -78,22 +81,29 @@ const Base = styled.div`
|
|||
// ! FIXME: Move to global config
|
||||
const MAX_REPLIES = 4;
|
||||
export default observer(({ channel, replies, setReplies }: Props) => {
|
||||
const client = useClient();
|
||||
|
||||
useEffect(() => {
|
||||
return internalSubscribe(
|
||||
"ReplyBar",
|
||||
"add",
|
||||
(id) =>
|
||||
replies.length < MAX_REPLIES &&
|
||||
!replies.find((x) => x.id === id) &&
|
||||
setReplies([
|
||||
...replies,
|
||||
{
|
||||
id: id as string,
|
||||
mention: getState().sectionToggle.mention ?? false,
|
||||
},
|
||||
]),
|
||||
);
|
||||
}, [replies, setReplies]);
|
||||
return internalSubscribe("ReplyBar", "add", (_message) => {
|
||||
const message = _message as Message;
|
||||
if (
|
||||
replies.length >= MAX_REPLIES ||
|
||||
replies.find((x) => x.id === message._id)
|
||||
)
|
||||
return;
|
||||
|
||||
setReplies([
|
||||
...replies,
|
||||
{
|
||||
id: message._id,
|
||||
mention:
|
||||
message.author_id === client.user!._id
|
||||
? false
|
||||
: getState().sectionToggle.mention ?? false,
|
||||
},
|
||||
]);
|
||||
});
|
||||
}, [replies, setReplies, client.user]);
|
||||
|
||||
const renderer = getRenderer(channel);
|
||||
if (renderer.state !== "RENDER") return null;
|
||||
|
@ -153,34 +163,36 @@ export default observer(({ channel, replies, setReplies }: Props) => {
|
|||
</div>
|
||||
</ReplyBase>
|
||||
<span class="actions">
|
||||
<IconButton
|
||||
onClick={() => {
|
||||
let state = false;
|
||||
setReplies(
|
||||
replies.map((_, i) => {
|
||||
if (i === index) {
|
||||
state = !_.mention;
|
||||
return {
|
||||
..._,
|
||||
mention: !_.mention,
|
||||
};
|
||||
}
|
||||
{message.author_id !== client.user!._id && (
|
||||
<IconButton
|
||||
onClick={() => {
|
||||
let state = false;
|
||||
setReplies(
|
||||
replies.map((_, i) => {
|
||||
if (i === index) {
|
||||
state = !_.mention;
|
||||
return {
|
||||
..._,
|
||||
mention: !_.mention,
|
||||
};
|
||||
}
|
||||
|
||||
return _;
|
||||
}),
|
||||
);
|
||||
return _;
|
||||
}),
|
||||
);
|
||||
|
||||
dispatch({
|
||||
type: "SECTION_TOGGLE_SET",
|
||||
id: "mention",
|
||||
state,
|
||||
});
|
||||
}}>
|
||||
<span class="toggle">
|
||||
<At size={16} />{" "}
|
||||
{reply.mention ? "ON" : "OFF"}
|
||||
</span>
|
||||
</IconButton>
|
||||
dispatch({
|
||||
type: "SECTION_TOGGLE_SET",
|
||||
id: "mention",
|
||||
state,
|
||||
});
|
||||
}}>
|
||||
<span class="toggle">
|
||||
<At size={16} />{" "}
|
||||
{reply.mention ? "ON" : "OFF"}
|
||||
</span>
|
||||
</IconButton>
|
||||
)}
|
||||
<IconButton
|
||||
onClick={() =>
|
||||
setReplies(
|
||||
|
|
|
@ -79,7 +79,7 @@ type Action =
|
|||
| { action: "retry_message"; message: QueuedMessage }
|
||||
| { action: "cancel_message"; message: QueuedMessage }
|
||||
| { action: "mention"; user: string }
|
||||
| { action: "reply_message"; id: string }
|
||||
| { action: "reply_message"; target: Message }
|
||||
| { action: "quote_message"; content: string }
|
||||
| { action: "edit_message"; id: string }
|
||||
| { action: "delete_message"; target: Message }
|
||||
|
@ -247,7 +247,7 @@ function ContextMenus(props: Props) {
|
|||
|
||||
case "reply_message":
|
||||
{
|
||||
internalEmit("ReplyBar", "add", data.id);
|
||||
internalEmit("ReplyBar", "add", data.target);
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -702,7 +702,7 @@ function ContextMenus(props: Props) {
|
|||
if (message && !queued) {
|
||||
generateAction({
|
||||
action: "reply_message",
|
||||
id: message._id,
|
||||
target: message,
|
||||
});
|
||||
|
||||
if (
|
||||
|
|
Loading…
Reference in a new issue