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
+4
View File
@@ -122,6 +122,9 @@ _CalculateAvailableQuests = function()
local completedQuests = Questie.db.char.complete
local showRepeatableQuests = Questie.db.profile.showRepeatableQuests
-- Hide repeatable available quests (e.g. the Ascension Callboard '!') below level 60,
-- where they aren't relevant yet. (#10)
local hideRepeatableBelowMax = Questie.db.profile.hideRepeatableBelowMaxLevel and playerLevel < 60
local showDungeonQuests = Questie.db.profile.showDungeonQuests
local showRaidQuests = Questie.db.profile.showRaidQuests
local showPvPQuests = Questie.db.profile.showPvPQuests
@@ -163,6 +166,7 @@ _CalculateAvailableQuests = function()
if (
((not showRepeatableQuests) and QuestieDB.IsRepeatable(questId)) or -- Don't show repeatable quests if option is disabled
(hideRepeatableBelowMax and QuestieDB.IsRepeatable(questId)) or -- Hide repeatable (Callboard) quests below level 60 (#10)
((not showPvPQuests) and QuestieDB.IsPvPQuest(questId)) or -- Don't show PvP quests if option is disabled
((not showDungeonQuests) and QuestieDB.IsDungeonQuest(questId)) or -- Don't show dungeon quests if option is disabled
((not showRaidQuests) and QuestieDB.IsRaidQuest(questId)) or -- Don't show raid quests if option is disabled