fix(map): completed/accepted/repeatable available-quest pins (#7 #9 #10)

#7: Completed quests kept showing as available '!'. The server completed-
quest list arrives async via QUEST_QUERY_COMPLETE, often after available
quests were first drawn. Recalculate available quests once char.complete is
populated by that event so completed quests are removed (also clears the
already-completed subset of #8).

#9: An accepted quest's available '!' could linger on the minimap until
/reload. UnloadQuestFramesByDataType unloaded the frame but left its name in
questIdFrames and _G; it now removes those references so the icon is torn
down immediately on both map and minimap.

#10: Added 'Hide repeatable quests below level 60' (Icons tab, off by
default) to hide repeatable available quests (e.g. the Ascension Callboard)
from map/minimap until level 60. Enforced in _DrawQuestIfAvailable and
ShouldBeHidden so existing minimap pins are removed too; reappear at 60.

Lint: selene 0 errors. Tests: 145 successes / same 7 pre-existing failures.
This commit is contained in:
Xurkon
2026-06-09 23:18:38 -05:00
parent 4827a3131e
commit ab560d5711
7 changed files with 42 additions and 1 deletions
@@ -187,6 +187,23 @@ function QuestieOptions.tabs.icons:Initialize()
QuestieQuest:ToggleNotes(value)
end,
},
hideRepeatableBelowMaxLevel = {
type = "toggle",
order = 2.035,
name = function() return l10n('Hide repeatable quests below level 60'); end,
desc = function() return l10n('Hides repeatable available quests (such as the Ascension Callboard) from the map and minimap until the character reaches level 60, where they become relevant.'); end,
width = 1.595,
disabled = function() return (not Questie.db.profile.enabled) or (not Questie.db.profile.showRepeatableQuests); end,
get = function(info) return Questie.db.profile.hideRepeatableBelowMaxLevel end,
set = function(info, value)
Questie.db.profile.hideRepeatableBelowMaxLevel = value
QuestieQuest:ToggleNotes(true)
local AvailableQuests = QuestieLoader:ImportModule("AvailableQuests")
if AvailableQuests and AvailableQuests.CalculateAndDrawAll then
AvailableQuests.CalculateAndDrawAll()
end
end,
},
showPvPQuests = {
type = "toggle",
order = 2.04,
@@ -177,6 +177,7 @@ function QuestieOptionsDefaults:Load()
hideUnexploredMapIcons = false,
hideUntrackedQuestsMapIcons = false,
showRepeatableQuests = true,
hideRepeatableBelowMaxLevel = false,
showEventQuests = true,
showDungeonQuests = true,
showRaidQuests = true,