diff ClassPlan.lua @ 8:802abb8a10ea

Fixed loss of mission progress data while changing zones by using `GARRISON_LANDINGPAGE_SHIPMENTS' as the trigger point for mission scoops. * `MISSION_LIST_UPDATE' fires before all data is available, and if this is happens on a loading screen, then several landing page items may get snipped.
author Nenue
date Sun, 23 Oct 2016 07:19:53 -0400
parents 48001b6a9496
children a2b623043970
line wrap: on
line diff
--- a/ClassPlan.lua	Sat Oct 22 15:36:25 2016 -0400
+++ b/ClassPlan.lua	Sun Oct 23 07:19:53 2016 -0400
@@ -28,7 +28,7 @@
 }
 ClassPlanMissionMixin = {
   templateName = 'ClassPlanMissionEntry',
-  events = {'GARRISON_MISSION_LIST_UPDATE', 'GARRISON_MISSION_STARTED', 'GARRISON_MISSION_FINISHED'},}
+  events = {'GARRISON_MISSION_LIST_UPDATE', 'GARRISON_MISSION_STARTED', 'GARRISON_MISSION_FINISHED', 'GARRISON_LANDINGPAGE_SHIPMENTS'},}
 ClassPlanShipmentMixin = {
   templateName = 'ClassPlanShipmentEntry',
   parent = false,
@@ -56,19 +56,16 @@
   if not self.profile then
     return
   end
-  self.items = C_Garrison.GetLandingPageItems(LE_GARRISON_TYPE_7_0)
+  local items = C_Garrison.GetLandingPageItems(LE_GARRISON_TYPE_7_0)
+  print(#items)
 
   wipe(self.profile.missions)
-  for index, data in ipairs(self.items) do
+  for index, data in ipairs(items) do
     print('  ',data.name, '|cFF00FF00'.. data.timeLeft .. '|r', date("%A %I:%m %p", data.missionEndTime))
     tinsert(self.profile.missions, data)
   end
   print('items update pending')
   self.isStale = true
-
-  if self:IsVisible() then
-    self:Refresh()
-  end
 end
 
 MissionsHandler.OnGetItem = function(data)
@@ -131,7 +128,7 @@
   if not creationTime then
     return
   end
-  print(shipmentType, name, shipmentCapacity, shipmentsReady, shipmentsTotal, creationTime, duration, timeleftString)
+  --print(shipmentType, name, shipmentCapacity, shipmentsReady, shipmentsTotal, creationTime, duration, timeleftString)
   tinsert(ShipmentsInfo,
     {
       shipmentType = shipmentType,
@@ -203,14 +200,10 @@
   end
   self.isStale = true
 
-  if self:IsVisible() then
-    self:Refresh()
-  end
 end
 
 function core:OnLoad ()
   self:RegisterEvent('PLAYER_LOGIN')
-  self:RegisterEvent('PLAYER_ENTERING_WORLD')
   self:RegisterEvent('ADDON_LOADED')
   self:RegisterEvent('PLAYER_REGEN_ENABLED')
   self:RegisterEvent('PLAYER_REGEN_DISABLED')
@@ -343,6 +336,11 @@
       print('|cFF88FF00' .. tostring(ptype) .. '|r:GetPlayerData() --', numCalls)
       eventFunc(self, event)
     end
+
+
+    if self:IsVisible() then
+      self:Refresh()
+    end
   end
 end