From 32e3007137596c74a9f0f988ec8b4fab8c96d8dc Mon Sep 17 00:00:00 2001 From: Etorix <92535668+EtorixDev@users.noreply.github.com> Date: Tue, 17 Mar 2026 09:23:12 -0700 Subject: [PATCH] Auto deauth Task In Activity Quests once they finish. (#915) --- src/equicordplugins/questify/index.tsx | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/equicordplugins/questify/index.tsx b/src/equicordplugins/questify/index.tsx index 9a1f9c544..7829d7843 100644 --- a/src/equicordplugins/questify/index.tsx +++ b/src/equicordplugins/questify/index.tsx @@ -15,7 +15,7 @@ import { openPluginModal } from "@components/settings"; import { EquicordDevs } from "@utils/constants"; import { copyToClipboard } from "@utils/index"; import definePlugin, { PluginNative, StartAt } from "@utils/types"; -import { onceReady } from "@webpack"; +import { findStoreLazy, onceReady } from "@webpack"; import { ContextMenuApi, Menu, NavigationRouter, RestAPI, useEffect, useState } from "@webpack/common"; import { JSX } from "react"; @@ -23,6 +23,7 @@ import { addIgnoredQuest, addRerenderCallback, autoFetchCompatible, fetchAndAler import { ActiveQuestIntervalsMap, ExcludedQuestMap, GuildlessServerListItem, Quest, QuestIcon, QuestMap, QuestStatus, QuestTaskType, RGB } from "./utils/components"; import { adjustRGB, decimalToRGB, fetchAndDispatchQuests, formatLowerBadge, getFormattedNow, getIgnoredQuestIDs, getQuestProgress, getQuestStatus, getQuestTarget, getQuestTask, isDarkish, leftClick, middleClick, normalizeQuestName, q, QuestifyLogger, questPath, QuestsStore, refreshQuest, reportPlayGameQuestProgress, reportVideoQuestProgress, rightClick, setIgnoredQuestIDs, videoQuestLeeway, waitUntilEnrolled } from "./utils/misc"; +const AuthorizedAppsStore = findStoreLazy("AuthorizedAppsStore"); let initialQuestDataFetched = false; const QuestifyNative = VencordNative.pluginHelpers.Questify as PluginNative; const patchedMobileQuests = new Set(); @@ -852,7 +853,6 @@ async function startAchievementActivityProgressTracking(quest: Quest, target: { if (!result.success) { const errorReason = result.error || "An error occurred while completing the Quest."; QuestifyLogger.error(`[${getFormattedNow()}] Failed to complete Quest ${questName}:`, errorReason); - return; } else { QuestifyLogger.info(`[${getFormattedNow()}] Quest ${questName} completed.`); @@ -865,6 +865,20 @@ async function startAchievementActivityProgressTracking(quest: Quest, target: { }); } } + + try { + const deauthToken = AuthorizedAppsStore.getNewestTokenForApplication(appID)?.id; + + if (!deauthToken) { + throw new Error("Deauthorization token not found."); + } + + await RestAPI.del({ + url: `/oauth2/tokens/${deauthToken}/`, + }); + } catch (error) { + QuestifyLogger.error(`[${getFormattedNow()}] Failed to deauthorize application for Quest ${questName}:`, error); + } } function canQuestAutoComplete(quest: Quest): boolean {