From 140ef17abbcde38d5673d4456573e2af60a02917 Mon Sep 17 00:00:00 2001 From: Etorix <92535668+EtorixDev@users.noreply.github.com> Date: Sat, 27 Dec 2025 17:15:23 -0800 Subject: [PATCH] Questify: Minor Bug/Syntax Stuff. (#606) * Minor bug fix. * Random stuff. --- src/equicordplugins/questify/index.tsx | 32 ++++++++++++-------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/src/equicordplugins/questify/index.tsx b/src/equicordplugins/questify/index.tsx index 379989548..94d4e7336 100644 --- a/src/equicordplugins/questify/index.tsx +++ b/src/equicordplugins/questify/index.tsx @@ -576,6 +576,11 @@ async function startVideoProgressTracking(quest: Quest, questTarget: number): Pr activeQuestIntervals.set(quest.id, { progressTimeout: null as any, rerenderTimeout: null as any, progress: initialProgress, type: "watch" }); // Max up to ~25 seconds into the future can be reported. const questTargetWithLeeway = questTarget - videoQuestLeeway; + let currentProgress = initialProgress; + let currentProgressScaled = initialProgress; + const timeRemaining = Math.max(0, questTargetWithLeeway - currentProgressScaled); + + QuestifyLogger.info(`[${getFormattedNow()}] Quest ${questName} will be completed in the background in ${timeRemaining} seconds.`); if (!questEnrolledAt) { const enrollmentTimeout = 60000; @@ -595,15 +600,12 @@ async function startVideoProgressTracking(quest: Quest, questTarget: number): Pr const reportEverySec = 10; let progressIntervalId: NodeJS.Timeout; - let currentProgress = initialProgress; - let currentProgressScaled = initialProgress; - const timeRemaining = Math.max(0, questTargetWithLeeway - currentProgressScaled); async function handleSendComplete() { clearInterval(progressIntervalId); clearTimeout(renderIntervalId); - activeQuestIntervals.delete(quest.id); const success = await reportVideoQuestProgress(quest, questTarget, QuestifyLogger); + activeQuestIntervals.delete(quest.id); if (success) { QuestifyLogger.info(`[${getFormattedNow()}] Quest ${questName} completed.`); @@ -675,10 +677,6 @@ async function startVideoProgressTracking(quest: Quest, questTarget: number): Pr intervalData.progressTimeout = progressIntervalId; intervalData.rerenderTimeout = renderIntervalId; } - - if (timeRemaining > 0) { - QuestifyLogger.info(`[${getFormattedNow()}] Quest ${questName} will be completed in the background in ${timeRemaining} seconds.`); - } } async function startPlayGameProgressTracking(quest: Quest, questTarget: number): Promise { @@ -690,6 +688,8 @@ async function startPlayGameProgressTracking(quest: Quest, questTarget: number): const heartbeatInterval = 20; // Heartbeats must be at most 2 minutes apart. activeQuestIntervals.set(quest.id, { progressTimeout: null as any, rerenderTimeout: null as any, progress: initialProgress, type: "play" }); + QuestifyLogger.info(`[${getFormattedNow()}] Quest ${questName} will be completed in the background in ${remaining} seconds.`); + if (!questEnrolledAt) { const enrollmentTimeout = 60000; const enrolled = await waitUntilEnrolled(quest, enrollmentTimeout, 500, QuestifyLogger); @@ -726,8 +726,8 @@ async function startPlayGameProgressTracking(quest: Quest, questTarget: number): if (isComplete) { clearInterval(progressIntervalId); clearTimeout(renderIntervalId); - activeQuestIntervals.delete(quest.id); const success = await reportPlayGameQuestProgress(quest, true, QuestifyLogger, { attempts: 3, delay: 2500 }); + activeQuestIntervals.delete(quest.id); if (success) { QuestifyLogger.info(`[${getFormattedNow()}] Quest ${questName} completed.`); @@ -748,8 +748,8 @@ async function startPlayGameProgressTracking(quest: Quest, questTarget: number): clearTimeout(renderIntervalId); setTimeout(async () => { - activeQuestIntervals.delete(quest.id); const success = await reportPlayGameQuestProgress(quest, true, QuestifyLogger, { attempts: 3, delay: 2500 }); + activeQuestIntervals.delete(quest.id); if (success) { QuestifyLogger.info(`[${getFormattedNow()}] Quest ${questName} completed.`); @@ -788,10 +788,6 @@ async function startPlayGameProgressTracking(quest: Quest, questTarget: number): intervalData.progressTimeout = progressIntervalId; intervalData.rerenderTimeout = renderIntervalId; } - - if (remaining > 0) { - QuestifyLogger.info(`[${getFormattedNow()}] Quest ${questName} will be completed in the background in ${remaining} seconds.`); - } } async function startAchievementActivityProgressTracking(quest: Quest, questTarget: number): Promise { @@ -800,6 +796,8 @@ async function startAchievementActivityProgressTracking(quest: Quest, questTarge const achievementType = quest.config.taskConfigV2?.tasks.ACHIEVEMENT_IN_ACTIVITY; activeQuestIntervals.set(quest.id, { progressTimeout: null as any, rerenderTimeout: null as any, progress: 0, type: "achievement" }); + QuestifyLogger.info(`[${getFormattedNow()}] Quest ${questName} will be completed in the background.`); + if (!questEnrolledAt) { const enrollmentTimeout = 60000; const enrolled = await waitUntilEnrolled(quest, enrollmentTimeout, 15, QuestifyLogger); @@ -929,7 +927,7 @@ function getQuestUnacceptedButtonText(quest: Quest): string | null { const targetFormatted = `${String(Math.floor(target / 60)).padStart(2, "0")}:${String(target % 60).padStart(2, "0")}`; if (target > 0) { - if ((playType && completeGameQuestsInBackground) || (watchType && completeVideoQuestsInBackground)) { + if ((playType && completeGameQuestsInBackground && IS_DISCORD_DESKTOP) || (watchType && completeVideoQuestsInBackground)) { return `Complete (${targetFormatted})`; } else if (achievementType && completeAchievementQuestsInBackground) { return "Complete (Immediate)"; @@ -948,7 +946,7 @@ function getQuestAcceptedButtonText(quest: Quest): string | null { const intervalData = activeQuestIntervals.get(quest.id); if (questEnrolledAt) { - if (((playType && completeGameQuestsInBackground) || (watchType && completeVideoQuestsInBackground))) { + if (((playType && completeGameQuestsInBackground && IS_DISCORD_DESKTOP) || (watchType && completeVideoQuestsInBackground))) { const taskType = playType || watchType; const duration = taskType?.target || 0; const durationWithLeeway = watchType ? duration - videoQuestLeeway : duration; @@ -959,7 +957,7 @@ function getQuestAcceptedButtonText(quest: Quest): string | null { if (!!intervalData) { return !canCompleteImmediately && timeRemaining ? `Completing (${progressFormatted})` : "Completing..."; - } else if (watchType || (playType && IS_DISCORD_DESKTOP)) { + } else if (watchType || playType) { return canCompleteImmediately ? "Complete (Immediate)" : timeRemaining === durationWithLeeway ? `Complete (${progressFormatted})` : `Resume (${progressFormatted})`; } } else if (achievementType && completeAchievementQuestsInBackground) {