1
0
Fork 1
mirror of https://github.com/Vendicated/Vencord.git synced 2025-01-11 02:16:23 +00:00

Add Button To Access Notebook

This commit is contained in:
Wolfie 2024-03-11 00:06:39 -04:00
parent 60ec125105
commit 35991f2501
No known key found for this signature in database
GPG key ID: DE384EE9BF2D909A

View file

@ -21,16 +21,21 @@ import "./style.css";
import { NavContextMenuPatchCallback } from "@api/ContextMenu";
import { DataStore } from "@api/index";
import { addButton, removeButton } from "@api/MessagePopover";
import ErrorBoundary from "@components/ErrorBoundary";
import { Devs } from "@utils/constants";
import { classes } from "@utils/misc";
import { openModal } from "@utils/modal";
import definePlugin from "@utils/types";
import { findByProps, findExportedComponentLazy } from "@webpack";
import { ChannelStore, Menu } from "@webpack/common";
import { Message } from "discord-types/general";
import { Popover as NoteButtonPopover } from "./components/icons/NoteButton";
import { Popover as NoteButtonPopover, Popover } from "./components/icons/NoteButton";
import { NoteModal } from "./components/modals/Notebook";
import noteHandler, { noteHandlerCache } from "./noteHandler";
import { DataStoreToCache } from "./utils";
import { DataStoreToCache, HolyNoteStore } from "./utils";
const HeaderBarIcon = findExportedComponentLazy("Icon", "Divider");
const messageContextMenuPatch: NavContextMenuPatchCallback = async (children, { message }: { message: Message; }) => {
children.push(
@ -46,6 +51,22 @@ const messageContextMenuPatch: NavContextMenuPatchCallback = async (children, {
);
};
function ToolBarHeader() {
const iconClasses = findByProps("iconWrapper", "clickable");
return (
<ErrorBoundary noop={true}>
<HeaderBarIcon
tooltip="Holy Notes"
position="bottom"
className={classes("vc-note-button", iconClasses.iconWrapper, iconClasses.clickable)}
icon={e => Popover(e)}
onClick={() => openModal(props => <NoteModal {...props} />)}
/>
</ErrorBoundary>
);
}
export default definePlugin({
name: "HolyNotes",
@ -53,18 +74,43 @@ export default definePlugin({
authors: [Devs.Wolfie],
dependencies: ["MessagePopoverAPI", "ChatInputButtonAPI"],
patches: [
{
find: "toolbar:function",
replacement: {
match: /(function \i\(\i\){)(.{1,200}toolbar.{1,100}mobileToolbar)/,
replace: "$1$self.toolbarAction(arguments[0]);$2"
}
}
],
toolboxActions: {
async "Open Notes"() {
openModal(props => <NoteModal {...props} />);
}
},
contextMenus: {
"message": messageContextMenuPatch
},
toolbarAction(e) {
if (Array.isArray(e.toolbar))
return e.toolbar.push(
<ErrorBoundary noop={true}>
<ToolBarHeader />
</ErrorBoundary>
);
e.toolbar = [
<ErrorBoundary noop={true}>
<ToolBarHeader />
</ErrorBoundary>,
e.toolbar,
];
},
async start() {
if (await DataStore.keys().then(keys => !keys.includes("Main"))) return noteHandler.newNoteBook("Main");
if (await DataStore.keys(HolyNoteStore).then(keys => !keys.includes("Main"))) return noteHandler.newNoteBook("Main");
if (!noteHandlerCache.has("Main")) await DataStoreToCache();
addButton("HolyNotes", message => {
@ -74,6 +120,7 @@ export default definePlugin({
message: message,
channel: ChannelStore.getChannel(message.channel_id),
onClick: () => noteHandler.addNote(message, "Main")
};
});
},