|
Zerotorescue@5
|
1 local MailOpener = LibStub("AceAddon-3.0"):GetAddon("MailOpener");
|
|
Zerotorescue@31
|
2 local mod = MailOpener:NewModule("FailSafe", "AceEvent-3.0", "AceTimer-3.0");
|
|
Zerotorescue@5
|
3
|
|
Zerotorescue@68
|
4 mod.moduleDescription = L["Prevents the mail opening from completely stopping when the opening of a single mail gets stuck."];
|
|
Zerotorescue@31
|
5 mod.moduleRequired = false;
|
|
Zerotorescue@5
|
6
|
|
Zerotorescue@31
|
7 function mod:OnInitialize()
|
|
Zerotorescue@5
|
8 local defaults = {
|
|
Zerotorescue@5
|
9 profile = {
|
|
Zerotorescue@5
|
10 timeout = 20,
|
|
Zerotorescue@5
|
11 },
|
|
Zerotorescue@5
|
12 };
|
|
Zerotorescue@5
|
13
|
|
Zerotorescue@5
|
14 -- Register our saved variables NameSpace
|
|
Zerotorescue@5
|
15 self.db = MailOpener.db:RegisterNamespace("FailSafe", defaults);
|
|
Zerotorescue@5
|
16 end
|
|
Zerotorescue@5
|
17
|
|
Zerotorescue@31
|
18 function mod:OnEnable()
|
|
Zerotorescue@5
|
19 self:Debug("OnEnable");
|
|
Zerotorescue@5
|
20
|
|
Zerotorescue@5
|
21 self:RegisterEvent("MAIL_SHOW");
|
|
Zerotorescue@31
|
22
|
|
Zerotorescue@31
|
23 -- If we were toggling this module on while the mailbox is opened we must register all events again
|
|
Zerotorescue@31
|
24 if MailFrame:IsVisible() then
|
|
Zerotorescue@31
|
25 self:MAIL_SHOW();
|
|
Zerotorescue@31
|
26 end
|
|
Zerotorescue@5
|
27 end
|
|
Zerotorescue@5
|
28
|
|
Zerotorescue@5
|
29 -- Even though Ace can unregister our events it's neater to do it manually too
|
|
Zerotorescue@31
|
30 function mod:OnDisable()
|
|
Zerotorescue@5
|
31 self:Debug("OnDisable");
|
|
Zerotorescue@5
|
32
|
|
Zerotorescue@5
|
33 self:UnregisterEvent("MAIL_SHOW");
|
|
Zerotorescue@42
|
34
|
|
Zerotorescue@42
|
35 -- If we were toggling this module off while the mailbox is opened we must unregister all events
|
|
Zerotorescue@42
|
36 if MailFrame:IsVisible() then
|
|
Zerotorescue@42
|
37 self:MAIL_CLOSED();
|
|
Zerotorescue@42
|
38 end
|
|
Zerotorescue@5
|
39 end
|
|
Zerotorescue@5
|
40
|
|
Zerotorescue@31
|
41 function mod:MAIL_SHOW()
|
|
Zerotorescue@5
|
42 self:Debug("MAIL_SHOW");
|
|
Zerotorescue@5
|
43
|
|
Zerotorescue@5
|
44 self:RegisterEvent("MAIL_CLOSED");
|
|
Zerotorescue@5
|
45
|
|
Zerotorescue@5
|
46 self:RegisterMessage("MO_OPENING_MAIL");
|
|
Zerotorescue@5
|
47 self:RegisterMessage("MO_MAIL_EMPTIED");
|
|
Zerotorescue@5
|
48 end
|
|
Zerotorescue@5
|
49
|
|
Zerotorescue@31
|
50 function mod:MAIL_CLOSED()
|
|
Zerotorescue@5
|
51 self:Debug("MAIL_CLOSED");
|
|
Zerotorescue@5
|
52
|
|
Zerotorescue@5
|
53 self:UnregisterEvent("MAIL_CLOSED");
|
|
Zerotorescue@5
|
54
|
|
Zerotorescue@5
|
55 self:UnregisterMessage("MO_OPENING_MAIL");
|
|
Zerotorescue@5
|
56 self:UnregisterMessage("MO_OPENING_MAIL_FINISHED");
|
|
Zerotorescue@5
|
57
|
|
Zerotorescue@6
|
58 self:CancelTimer(self.tmrTimeout, true);
|
|
Zerotorescue@5
|
59 end
|
|
Zerotorescue@5
|
60
|
|
Zerotorescue@31
|
61 function mod:MO_OPENING_MAIL()
|
|
Zerotorescue@5
|
62 -- Single mail being opened
|
|
Zerotorescue@5
|
63
|
|
Zerotorescue@11
|
64 self:CancelTimer(self.tmrTimeout, true); -- insurance
|
|
Zerotorescue@5
|
65 self.tmrTimeout = self:ScheduleTimer("Continue", self.db.profile.timeout);
|
|
Zerotorescue@5
|
66 end
|
|
Zerotorescue@5
|
67
|
|
Zerotorescue@31
|
68 function mod:MO_MAIL_EMPTIED()
|
|
Zerotorescue@5
|
69 -- Single mail has been opened
|
|
Zerotorescue@5
|
70
|
|
Zerotorescue@6
|
71 self:CancelTimer(self.tmrTimeout, true);
|
|
Zerotorescue@5
|
72 end
|
|
Zerotorescue@5
|
73
|
|
Zerotorescue@31
|
74 function mod:Continue()
|
|
Zerotorescue@5
|
75 MailOpener:GetModule("OpenAll"):Continue();
|
|
Zerotorescue@5
|
76
|
|
Zerotorescue@68
|
77 MailOpener:Print(L["(FailSafe) Mail opening timeout, continuing with the next mail."]);
|
|
Zerotorescue@5
|
78 end
|
|
Zerotorescue@5
|
79
|
|
Zerotorescue@31
|
80 function mod:GetOptionsGroup()
|
|
Zerotorescue@5
|
81 local configGroup = {
|
|
Zerotorescue@31
|
82 order = 0,
|
|
Zerotorescue@31
|
83 type = "modulesSubGroup",
|
|
Zerotorescue@68
|
84 name = L["FailSafe"],
|
|
Zerotorescue@68
|
85 desc = L["Change settings for the FailSafe module."],
|
|
Zerotorescue@5
|
86 args = {
|
|
Zerotorescue@5
|
87 General = {
|
|
Zerotorescue@5
|
88 order = 10,
|
|
Zerotorescue@5
|
89 type = "group",
|
|
Zerotorescue@5
|
90 inline = true,
|
|
Zerotorescue@68
|
91 name = L["General"],
|
|
Zerotorescue@5
|
92 args = {
|
|
Zerotorescue@5
|
93 description = {
|
|
Zerotorescue@5
|
94 order = 10,
|
|
Zerotorescue@5
|
95 type = "description",
|
|
Zerotorescue@5
|
96 name = function()
|
|
Zerotorescue@68
|
97 local descText = L["With this button you can completely toggle this module |cff00ff00on|r or |cffff0000off|r. This setting will be remembered and the module will be automatically toggled |cff00ff00on|r or |cffff0000off|r upon logon as it was last set."] .. "\n\n";
|
|
Zerotorescue@5
|
98
|
|
Zerotorescue@5
|
99 if self:IsEnabled() then
|
|
Zerotorescue@68
|
100 descText = descText .. L["Status: %s"]:format(L["|cff00ff00Enabled|r"]);
|
|
Zerotorescue@5
|
101 else
|
|
Zerotorescue@68
|
102 descText = descText .. L["Status: %s"]:format(L["|cffff0000Disabled|r"]);
|
|
Zerotorescue@5
|
103 end
|
|
Zerotorescue@31
|
104
|
|
Zerotorescue@31
|
105 return descText;
|
|
Zerotorescue@5
|
106 end,
|
|
Zerotorescue@5
|
107 },
|
|
Zerotorescue@5
|
108 disable = {
|
|
Zerotorescue@5
|
109 order = 20,
|
|
Zerotorescue@5
|
110 type = "execute",
|
|
Zerotorescue@5
|
111 name = function()
|
|
Zerotorescue@5
|
112 if self:IsEnabled() then
|
|
Zerotorescue@68
|
113 return L["Disable Module"];
|
|
Zerotorescue@5
|
114 else
|
|
Zerotorescue@68
|
115 return L["Enable Module"];
|
|
Zerotorescue@5
|
116 end
|
|
Zerotorescue@5
|
117 end,
|
|
Zerotorescue@68
|
118 desc = L["Click here to completely toggle this module on or off."],
|
|
Zerotorescue@5
|
119 width = "double",
|
|
Zerotorescue@5
|
120 func = function()
|
|
Zerotorescue@5
|
121 if self:IsEnabled() then
|
|
Zerotorescue@5
|
122 self:Disable();
|
|
Zerotorescue@5
|
123
|
|
Zerotorescue@5
|
124 MailOpener.db.profile.modules[self:GetName()] = false;
|
|
Zerotorescue@5
|
125 else
|
|
Zerotorescue@5
|
126 self:Enable();
|
|
Zerotorescue@5
|
127
|
|
Zerotorescue@5
|
128 MailOpener.db.profile.modules[self:GetName()] = true;
|
|
Zerotorescue@5
|
129 end
|
|
Zerotorescue@5
|
130 end,
|
|
Zerotorescue@5
|
131 },
|
|
Zerotorescue@5
|
132 },
|
|
Zerotorescue@5
|
133 },
|
|
Zerotorescue@5
|
134 SingleMailTimeout = {
|
|
Zerotorescue@5
|
135 order = 20,
|
|
Zerotorescue@5
|
136 type = "group",
|
|
Zerotorescue@5
|
137 inline = true,
|
|
Zerotorescue@68
|
138 name = L["Single Mail Opening Timeout"],
|
|
Zerotorescue@5
|
139 args = {
|
|
Zerotorescue@5
|
140 description = {
|
|
Zerotorescue@5
|
141 order = 10,
|
|
Zerotorescue@5
|
142 type = "description",
|
|
Zerotorescue@68
|
143 name = L["Change how long FailSafe should wait before skipping the last mail and continuing with the next. This will prevent mail opening getting stuck forever because a single mail is frozen for whatever reason."],
|
|
Zerotorescue@5
|
144 },
|
|
Zerotorescue@5
|
145 timeout = {
|
|
Zerotorescue@5
|
146 order = 20,
|
|
Zerotorescue@5
|
147 type = "range",
|
|
Zerotorescue@5
|
148 width = "double",
|
|
Zerotorescue@5
|
149 min = 1,
|
|
Zerotorescue@5
|
150 max = 60,
|
|
Zerotorescue@5
|
151 step = 0.5,
|
|
Zerotorescue@68
|
152 name = L["Single Mail Timeout"],
|
|
Zerotorescue@68
|
153 desc = L["Change how long FailSafe should wait before skipping the last mail and continuing with the next. This should prevent mail opening getting stuck because a single mail is stuck for whatever reason.\n\nDefault value is 20 seconds."],
|
|
Zerotorescue@5
|
154 get = function() return self.db.profile.timeout; end,
|
|
Zerotorescue@5
|
155 set = function(i, v) self.db.profile.timeout = v; end,
|
|
Zerotorescue@5
|
156 },
|
|
Zerotorescue@5
|
157 },
|
|
Zerotorescue@5
|
158 },
|
|
Zerotorescue@5
|
159 },
|
|
Zerotorescue@5
|
160 };
|
|
Zerotorescue@5
|
161
|
|
Zerotorescue@5
|
162 return configGroup;
|
|
Zerotorescue@5
|
163 end
|
|
Zerotorescue@5
|
164
|
|
Zerotorescue@31
|
165 function mod:Debug(t)
|
|
Zerotorescue@5
|
166 return MailOpener:Debug("|cffff0000FailSafe|r:" .. t);
|
|
Zerotorescue@5
|
167 end |