diff options
author | Syncx <47534062+Syncxv@users.noreply.github.com> | 2023-08-19 09:19:10 +1000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-08-19 01:19:10 +0200 |
commit | e699ea63c749a4c4af185d997a1f7588804d458f (patch) | |
tree | 5847b591b37b852f264821b3908365b04f194b8e /src/plugins | |
parent | 97e1e9eb7a229375d1073cc93cace8e001f8d847 (diff) | |
download | Vencord-e699ea63c749a4c4af185d997a1f7588804d458f.tar.gz Vencord-e699ea63c749a4c4af185d997a1f7588804d458f.tar.bz2 Vencord-e699ea63c749a4c4af185d997a1f7588804d458f.zip |
feat(plugin): PreviewMessage (#1607)
Co-authored-by: V <vendicated@riseup.net>
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/previewMessage.tsx | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/src/plugins/previewMessage.tsx b/src/plugins/previewMessage.tsx new file mode 100644 index 0000000..2653318 --- /dev/null +++ b/src/plugins/previewMessage.tsx @@ -0,0 +1,83 @@ +/* + * Vencord, a modification for Discord's desktop app + * Copyright (c) 2023 Vendicated and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <https://www.gnu.org/licenses/>. +*/ + +import { sendBotMessage } from "@api/Commands"; +import ErrorBoundary from "@components/ErrorBoundary"; +import { Devs } from "@utils/constants"; +import definePlugin from "@utils/types"; +import { Button, ButtonLooks, ButtonWrapperClasses, DraftStore, DraftType, SelectedChannelStore, Tooltip, UserStore } from "@webpack/common"; + +interface Props { + type: { + analyticsName: string; + }; +} + +const getDraft = (channelId: string) => DraftStore.getDraft(channelId, DraftType.ChannelMessage); + +export function PreviewButton(chatBoxProps: Props) { + if (chatBoxProps.type.analyticsName !== "normal") return null; + const channelId = SelectedChannelStore.getChannelId(); + const draft = getDraft(channelId); + + if (!draft) return null; + + return ( + <Tooltip text="Preview Message"> + {tooltipProps => ( + <Button + {...tooltipProps} + onClick={() => + sendBotMessage( + channelId, + { + content: getDraft(channelId), + author: UserStore.getCurrentUser() + } + )} + size="" + look={ButtonLooks.BLANK} + innerClassName={ButtonWrapperClasses.button} + style={{ padding: "0 2px", height: "100%" }} + > + <div className={ButtonWrapperClasses.buttonWrapper}> + <img width={24} height={24} src="https://discord.com/assets/4c5a77a89716352686f590a6f014770c.svg" /> + </div> + </Button> + )} + </Tooltip> + ); + +} + +export default definePlugin({ + name: "PreviewMessage", + description: "Lets you preview your message before sending it", + authors: [Devs.Aria], + patches: [ + { + find: ".activeCommandOption", + replacement: { + match: /(.)\.push.{1,30}disabled:(\i),.{1,20}\},"gift"\)\)/, + replace: "$&;try{$2||$1.unshift($self.previewIcon(arguments[0]))}catch{}", + } + }, + ], + + previewIcon: ErrorBoundary.wrap(PreviewButton, { noop: true }), +}); |