From 63ad4da197b97e8a612efa7b4a9a0bb8629cae88 Mon Sep 17 00:00:00 2001 From: Eazvy <57739965+Eazvy@users.noreply.github.com> Date: Sat, 22 Mar 2025 20:38:05 -0400 Subject: [PATCH] Add files via upload --- src/equicordplugins/questCompleter/index.tsx | 64 ++++++++++++------- src/equicordplugins/questCompleter/styles.css | 25 ++++++++ 2 files changed, 65 insertions(+), 24 deletions(-) create mode 100644 src/equicordplugins/questCompleter/styles.css diff --git a/src/equicordplugins/questCompleter/index.tsx b/src/equicordplugins/questCompleter/index.tsx index ff62200c..b72d1924 100644 --- a/src/equicordplugins/questCompleter/index.tsx +++ b/src/equicordplugins/questCompleter/index.tsx @@ -16,8 +16,8 @@ * along with this program. If not, see . */ +import "./styles.css"; import "@equicordplugins/_misc/styles.css"; - import { showNotification } from "@api/Notifications"; import ErrorBoundary from "@components/ErrorBoundary"; import { Devs } from "@utils/constants"; @@ -25,27 +25,30 @@ import { getTheme, Theme } from "@utils/discord"; import { classes } from "@utils/misc"; import definePlugin from "@utils/types"; import { findByProps, findExportedComponentLazy } from "@webpack"; -import { Button, FluxDispatcher, Forms, RestAPI, Tooltip, UserStore } from "@webpack/common"; +import { addServerListElement, removeServerListElement, ServerListRenderPosition } from "@api/ServerList"; +import { Button, FluxDispatcher, NavigationRouter, Forms, RestAPI, Tooltip, UserStore } from "@webpack/common"; const HeaderBarIcon = findExportedComponentLazy("Icon", "Divider"); const isApp = navigator.userAgent.includes("Electron/"); - function ToolBarQuestsIcon() { return ( ); } + + function ToolBarHeader() { return ( @@ -66,11 +69,13 @@ async function openCompleteQuestUI() { const RunningGameStore = findByProps("getRunningGames"); const QuestsStore = findByProps("getQuest"); const quest = [...QuestsStore.quests.values()].find(x => x.id !== "1248385850622869556" && x.userStatus?.enrolledAt && !x.userStatus?.completedAt && new Date(x.config.expiresAt).getTime() > Date.now()); - if (!quest) { showNotification({ title: "Quest Completer", body: "No Quests To Complete", + onClick() { + NavigationRouter.transitionTo("/discovery/quests"); + }, }); } else { const pid = Math.floor(Math.random() * 30000) + 1000; @@ -233,6 +238,12 @@ export default definePlugin({ Game Quests do not work on Equibop/Web Platforms. Only Video Quests do. , + start() { + addServerListElement(ServerListRenderPosition.Above, this.renderQuestButton); + }, + stop() { + removeServerListElement(ServerListRenderPosition.Above, this.renderQuestButton); + }, patches: [ { find: "\"invite-button\"", @@ -244,25 +255,30 @@ export default definePlugin({ { find: "toolbar:function", replacement: { - match: /(function \i\(\i\){)(.{1,200}toolbar.{1,300}mobileToolbar)/, + match: /(function\s+\w+\s*\([\w\s,]*\)\s*\{)([\s\S]{1,500}toolbar[\s\S]{1,500}mobileToolbar)/, replace: "$1$self.toolbarAction(arguments[0]);$2" } - } + } ], renderQuestButton() { return ( - - {tooltipProps => ( - - )} - + +
+ + {({ onMouseEnter, onMouseLeave }) => ( +
+ +
+ )} +
+
+
); }, toolbarAction(e) { diff --git a/src/equicordplugins/questCompleter/styles.css b/src/equicordplugins/questCompleter/styles.css new file mode 100644 index 00000000..d945ff57 --- /dev/null +++ b/src/equicordplugins/questCompleter/styles.css @@ -0,0 +1,25 @@ +#vc-questbutton-container { + width: 100%; + display: flex; + align-items: center; + justify-content: center; + margin-bottom: 8px; +} + +#vc-questbutton { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + background-color: var(--background-primary); + height: 48px; + width: 48px; + border-radius: 100%; + transition: border-radius 0.15s ease-out, background-color 0.15s ease-out; +} + +#vc-questbutton:hover { + border-radius: 34%; + background-color: var(--blue-360); + cursor: pointer; +}