diff --git a/src/equicordplugins/questify/index.tsx b/src/equicordplugins/questify/index.tsx
index 517a4c190..a00811453 100644
--- a/src/equicordplugins/questify/index.tsx
+++ b/src/equicordplugins/questify/index.tsx
@@ -245,12 +245,14 @@ function shouldHideMembersListActivelyPlayingIcon(): boolean {
return disableMembersListActivelyPlayingIcon || disableQuestsEverything;
}
-function QuestTileContextMenu(children: React.ReactNode[], props: { quest: any; }) {
+function QuestTileContextMenu(children: React.ReactNode[], props: { quest: any; }, isClaimedMenu: boolean = false): void {
const isIgnored = questIsIgnored(props.quest.id);
+ const isEnrolled = !!props.quest.userStatus?.enrolledAt;
+ const canAutoComplete = !isClaimedMenu && isEnrolled && canQuestAutoComplete(props.quest);
children.unshift((
- {!isIgnored ? (
+ {!isClaimedMenu && (!isIgnored ? (
{ removeIgnoredQuest(props.quest.id); }}
/>
- )}
- {activeQuestIntervals.has(props.quest.id) &&
+ ))}
+ {activeQuestIntervals.has(props.quest.id) ? (
+ />) : canAutoComplete ? (
+ { processQuestForAutoComplete(props.quest); }}
+ />) : null
}
= durationWithLeeway;
const progressFormatted = `${String(Math.floor(timeRemaining / 60)).padStart(2, "0")}:${String(timeRemaining % 60).padStart(2, "0")}`;
@@ -993,31 +1025,27 @@ function getQuestPanelPercentComplete({ quest, percentCompleteText }: { quest: Q
}
function getQuestPanelSubtitleText(quest: Quest): string | null {
+ const questStatus = getQuestStatus(quest);
+ const questCompleted = !!quest.userStatus?.completedAt && questStatus === QuestStatus.Unclaimed;
const intervalData = activeQuestIntervals.get(quest.id);
+ const rewardItem = quest.config.rewardsConfig.rewards[0] || null;
+ const completingText = getQuestAcceptedButtonText(quest, true) || "Completing";
+ const completedText = questCompleted ? "Completed" : null;
- if (!intervalData) {
+ if (!intervalData && !completedText) {
return null;
}
- const rewardItem = quest.config.rewardsConfig.rewards[0] || null;
- const completingText = getQuestAcceptedButtonText(quest, true) || "Completing";
-
- if (rewardItem.orbQuantity) {
- return `${completingText} for ${rewardItem.orbQuantity} Orbs.`;
- } else if (rewardItem.messages?.nameWithArticle) {
- return `${completingText} for ${rewardItem.messages.nameWithArticle}.`;
+ if (rewardItem?.orbQuantity) {
+ return `${completedText || completingText} for ${rewardItem.orbQuantity} Orbs.`;
+ } else if (rewardItem?.messages?.nameWithArticle) {
+ return `${completedText || completingText} for ${rewardItem.messages.nameWithArticle}.`;
} else {
- return `${completingText} for an unrecognized reward.`;
+ return `${completedText || completingText} for an unrecognized reward.`;
}
}
function getQuestPanelTitleText(quest: Quest): string | null {
- const intervalData = activeQuestIntervals.get(quest.id);
-
- if (!intervalData) {
- return null;
- }
-
return normalizeQuestName(quest.config.messages.questName);
}
@@ -1286,8 +1314,8 @@ export default definePlugin({
// be completed Quest which is actively being auto-completed.
find: "questDeliveryOverride)?",
replacement: {
- match: /(\i=)(\i.\i.questDeliveryOverride)/,
- replace: "$1$self.getQuestPanelOverride()??$2"
+ match: /(?<=null}\);return )(\i\?\i:\i)/,
+ replace: "$self.getQuestPanelOverride()??($1)"
}
},
{
diff --git a/src/equicordplugins/questify/settings.tsx b/src/equicordplugins/questify/settings.tsx
index e64dbfdc1..aab19ecdb 100644
--- a/src/equicordplugins/questify/settings.tsx
+++ b/src/equicordplugins/questify/settings.tsx
@@ -558,7 +558,7 @@ function QuestButtonSettings(): JSX.Element {