Skip to content

Commit e8c6d9f

Browse files
committed
Improve startup
1 parent ecd6cd6 commit e8c6d9f

File tree

2 files changed

+41
-10
lines changed

2 files changed

+41
-10
lines changed

content/folderPane.js

Lines changed: 40 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11

2-
(function () {
2+
(async function () {
3+
4+
/* Utility */
5+
const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));
6+
37
/* For folder sorting */
48

59
const Cc = Components.classes;
@@ -158,13 +162,25 @@
158162
myPrefObserver.register();
159163

160164
/* Refresh pane */
165+
let refreshCount = 0;
166+
for (let win of Services.wm.getEnumerator("mail:3pane")) {
167+
++refreshCount;
168+
}
169+
tblog.debug("Refresh pane ("+refreshCount+")");
161170
function refreshPane(win) {
162-
try { win.gFolderTreeView._rebuild(); }
163-
catch (e) { setTimeout(refreshPane, 5, win); }
171+
try {
172+
win.gFolderTreeView._rebuild();
173+
--refreshCount;
174+
} catch (e) {
175+
setTimeout(refreshPane, 5, win);
176+
}
164177
}
165178
for (let win of Services.wm.getEnumerator("mail:3pane")) {
166179
refreshPane(win);
167180
}
181+
while (refreshCount > 0) {
182+
await sleep(10);
183+
}
168184

169185
/* Ensures that the selected folder is on the screen. */
170186
{
@@ -211,15 +227,30 @@
211227
Since Thunderbird 98, add-on startup has been delayed until Thunderbird is mostly done.
212228
So there is no way other than immediately selecting the folder.
213229
*/
214-
const folder = MailUtils.getExistingFolder(startup_folder);
215-
if (folder) {
216-
if (!gFolderTreeView.selectFolder(folder, true)) {
217-
tblog.debug("selectFolder failed");
230+
const retryMax = 10;
231+
for (let retry = 1; retry <= retryMax; retry++) {
232+
let folder = MailUtils.getExistingFolder(startup_folder);
233+
if (folder) {
234+
if (gFolderTreeView.selectFolder(folder, true)) {
235+
tblog.debug("selectFolder succeeded");
236+
} else {
237+
tblog.debug("selectFolder failed");
238+
}
239+
break;
240+
} else {
241+
if (retry < retryMax) {
242+
tblog.debug(startup_folder+" not found ("+retry+") ..retry");
243+
await sleep(200);
244+
} else {
245+
tblog.debug(startup_folder+" not found ("+retry+") ..giving up");
246+
}
218247
}
219-
} else {
220-
tblog.debug(startup_folder+" not found");
221248
}
222249
}
250+
} else {
251+
tblog.debug("No startup folder specified");
223252
}
224253

254+
tblog.debug("Init done");
255+
225256
})()

manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"manifest_version": 2,
33
"name": "Manually sort folders",
44
"description": "__MSG_extensionDescription__",
5-
"version": "2.2.5",
5+
"version": "2.2.6",
66
"author": "Jonathan Protzenko and Itagaki Fumihiko",
77
"homepage_url": "https://github.com/protz/Manually-Sort-Folders/wiki",
88
"applications": {

0 commit comments

Comments
 (0)