Here's what I use, seems to work fine for me atleast:
Lua Code:
local lastMissionID
local function QueryMissions()
local missions = C_Garrison.GetCompleteMissions()
if(#missions > 0) then
lastMissionID = missions[1].missionID
C_Garrison.MarkMissionComplete(lastMissionID)
else
GarrisonMissionFrame.MissionTab.MissionList.CompleteDialog:Hide()
end
end
Handler('GARRISON_MISSION_NPC_OPENED', QueryMissions)
Handler('GARRISON_MISSION_COMPLETE_RESPONSE', function(missionID, canComplete, success)
if(missionID == lastMissionID and canComplete) then
if(success and C_Garrison.CanOpenMissionChest(missionID)) then
C_Garrison.MissionBonusRoll(missionID)
return
end
C_Timer.After(1/2, QueryMissions)
end
end)