Merge pull request #98 from fatalerrorcoded/master

This commit is contained in:
Paul Makles 2021-08-18 00:58:45 +01:00 committed by GitHub
commit 468350b36c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 56 additions and 44 deletions

View file

@ -3,6 +3,7 @@ import { File, XCircle } from "@styled-icons/boxicons-solid";
import { observer } from "mobx-react-lite"; import { observer } from "mobx-react-lite";
import { SYSTEM_USER_ID } from "revolt.js"; import { SYSTEM_USER_ID } from "revolt.js";
import { Channel } from "revolt.js/dist/maps/Channels"; import { Channel } from "revolt.js/dist/maps/Channels";
import { Message } from "revolt.js/dist/maps/Messages";
import styled from "styled-components"; import styled from "styled-components";
import { Text } from "preact-i18n"; import { Text } from "preact-i18n";
@ -14,6 +15,8 @@ import { getRenderer } from "../../../../lib/renderer/Singleton";
import { dispatch, getState } from "../../../../redux"; import { dispatch, getState } from "../../../../redux";
import { Reply } from "../../../../redux/reducers/queue"; import { Reply } from "../../../../redux/reducers/queue";
import { useClient } from "../../../../context/revoltjs/RevoltClient";
import IconButton from "../../../ui/IconButton"; import IconButton from "../../../ui/IconButton";
import Markdown from "../../../markdown/Markdown"; import Markdown from "../../../markdown/Markdown";
@ -78,22 +81,29 @@ const Base = styled.div`
// ! FIXME: Move to global config // ! FIXME: Move to global config
const MAX_REPLIES = 4; const MAX_REPLIES = 4;
export default observer(({ channel, replies, setReplies }: Props) => { export default observer(({ channel, replies, setReplies }: Props) => {
const client = useClient();
useEffect(() => { useEffect(() => {
return internalSubscribe( return internalSubscribe("ReplyBar", "add", (_message) => {
"ReplyBar", const message = _message as Message;
"add", if (
(id) => replies.length >= MAX_REPLIES ||
replies.length < MAX_REPLIES && replies.find((x) => x.id === message._id)
!replies.find((x) => x.id === id) && )
return;
setReplies([ setReplies([
...replies, ...replies,
{ {
id: id as string, id: message._id,
mention: getState().sectionToggle.mention ?? false, mention:
message.author_id === client.user!._id
? false
: getState().sectionToggle.mention ?? false,
}, },
]), ]);
); });
}, [replies, setReplies]); }, [replies, setReplies, client.user]);
const renderer = getRenderer(channel); const renderer = getRenderer(channel);
if (renderer.state !== "RENDER") return null; if (renderer.state !== "RENDER") return null;
@ -153,6 +163,7 @@ export default observer(({ channel, replies, setReplies }: Props) => {
</div> </div>
</ReplyBase> </ReplyBase>
<span class="actions"> <span class="actions">
{message.author_id !== client.user!._id && (
<IconButton <IconButton
onClick={() => { onClick={() => {
let state = false; let state = false;
@ -181,6 +192,7 @@ export default observer(({ channel, replies, setReplies }: Props) => {
{reply.mention ? "ON" : "OFF"} {reply.mention ? "ON" : "OFF"}
</span> </span>
</IconButton> </IconButton>
)}
<IconButton <IconButton
onClick={() => onClick={() =>
setReplies( setReplies(

View file

@ -79,7 +79,7 @@ type Action =
| { action: "retry_message"; message: QueuedMessage } | { action: "retry_message"; message: QueuedMessage }
| { action: "cancel_message"; message: QueuedMessage } | { action: "cancel_message"; message: QueuedMessage }
| { action: "mention"; user: string } | { action: "mention"; user: string }
| { action: "reply_message"; id: string } | { action: "reply_message"; target: Message }
| { action: "quote_message"; content: string } | { action: "quote_message"; content: string }
| { action: "edit_message"; id: string } | { action: "edit_message"; id: string }
| { action: "delete_message"; target: Message } | { action: "delete_message"; target: Message }
@ -247,7 +247,7 @@ function ContextMenus(props: Props) {
case "reply_message": case "reply_message":
{ {
internalEmit("ReplyBar", "add", data.id); internalEmit("ReplyBar", "add", data.target);
} }
break; break;
@ -702,7 +702,7 @@ function ContextMenus(props: Props) {
if (message && !queued) { if (message && !queued) {
generateAction({ generateAction({
action: "reply_message", action: "reply_message",
id: message._id, target: message,
}); });
if ( if (