зеркало из https://github.com/mozilla/pjs.git
fix folder busy alert when getting all new messages and multiple servers use a common inbox; also fix startup case where the default server uses a common inbox, sr=mscott 260447
This commit is contained in:
Родитель
c55074ba1a
Коммит
17abd2c887
|
@ -740,11 +740,11 @@ function MsgGetMessagesForAllServers(defaultServer)
|
|||
try
|
||||
{
|
||||
var allServers = accountManager.allServers;
|
||||
var firstPop3DownloadServer;
|
||||
|
||||
// these arrays are parallel
|
||||
var pop3DownloadServersArray = new Array; // array of isupportsarrays of servers for a particular folder
|
||||
var localFoldersToDownloadTo; // parallel isupports array of folders to download to...
|
||||
// array of isupportsarrays of servers for a particular folder
|
||||
var pop3DownloadServersArray = new Array;
|
||||
// parallel isupports array of folders to download to...
|
||||
var localFoldersToDownloadTo = Components.classes["@mozilla.org/supports-array;1"].createInstance(Components.interfaces.nsISupportsArray);
|
||||
var pop3Server;
|
||||
|
||||
for (var i=0;i<allServers.Count();i++)
|
||||
{
|
||||
|
@ -752,32 +752,18 @@ function MsgGetMessagesForAllServers(defaultServer)
|
|||
var protocolinfo = Components.classes["@mozilla.org/messenger/protocol/info;1?type=" + currentServer.type].getService(Components.interfaces.nsIMsgProtocolInfo);
|
||||
if (protocolinfo.canLoginAtStartUp && currentServer.loginAtStartUp)
|
||||
{
|
||||
if (defaultServer && defaultServer.equals(currentServer))
|
||||
if (defaultServer && defaultServer.equals(currentServer) &&
|
||||
!defaultServer.isDeferredTo &&
|
||||
defaultServer.msgFolder == defaultServer.rootMsgFolder)
|
||||
{
|
||||
//dump(currentServer.serverURI + "...skipping, already opened\n");
|
||||
dump(currentServer.serverURI + "...skipping, already opened\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
if (currentServer.type == "pop3" && currentServer.downloadOnBiff)
|
||||
{
|
||||
var outNumFolders = new Object();
|
||||
var inboxFolder = currentServer.rootMsgFolder.getFoldersWithFlag(0x1000, 1, outNumFolders);
|
||||
CoalesceGetMsgsForPop3ServersByDestFolder(currentServer, pop3DownloadServersArray, localFoldersToDownloadTo);
|
||||
pop3Server = currentServer.QueryInterface(Components.interfaces.nsIPop3IncomingServer);
|
||||
if (!localFoldersToDownloadTo)
|
||||
localFoldersToDownloadTo = Components.classes["@mozilla.org/supports-array;1"].createInstance(Components.interfaces.nsISupportsArray);
|
||||
// coalesce the servers that download into the same folder...
|
||||
var index = localFoldersToDownloadTo.GetIndexOf(inboxFolder);
|
||||
if (index == -1)
|
||||
{
|
||||
localFoldersToDownloadTo.AppendElement(inboxFolder);
|
||||
index = pop3DownloadServersArray.length
|
||||
pop3DownloadServersArray[index] = Components.classes["@mozilla.org/supports-array;1"].createInstance(Components.interfaces.nsISupportsArray);
|
||||
pop3DownloadServersArray[index].AppendElement(currentServer);
|
||||
}
|
||||
else
|
||||
{
|
||||
pop3DownloadServersArray[index].AppendElement(currentServer);
|
||||
}
|
||||
}
|
||||
else
|
||||
// Check to see if there are new messages on the server
|
||||
|
@ -1934,22 +1920,71 @@ function SendUnsentMessages()
|
|||
}
|
||||
}
|
||||
|
||||
function CoalesceGetMsgsForPop3ServersByDestFolder(currentServer, pop3DownloadServersArray, localFoldersToDownloadTo)
|
||||
{
|
||||
var outNumFolders = new Object();
|
||||
var inboxFolder = currentServer.rootMsgFolder.getFoldersWithFlag(0x1000, 1, outNumFolders);
|
||||
pop3Server = currentServer.QueryInterface(Components.interfaces.nsIPop3IncomingServer);
|
||||
// coalesce the servers that download into the same folder...
|
||||
var index = localFoldersToDownloadTo.GetIndexOf(inboxFolder);
|
||||
if (index == -1)
|
||||
{
|
||||
if(inboxFolder)
|
||||
{
|
||||
inboxFolder.biffState = Components.interfaces.nsIMsgFolder.nsMsgBiffState_NoMail;
|
||||
|
||||
if (inboxFolder.hasNewMessages)
|
||||
inboxFolder.clearNewMessages();
|
||||
}
|
||||
localFoldersToDownloadTo.AppendElement(inboxFolder);
|
||||
index = pop3DownloadServersArray.length
|
||||
pop3DownloadServersArray[index] = Components.classes["@mozilla.org/supports-array;1"].createInstance(Components.interfaces.nsISupportsArray);
|
||||
pop3DownloadServersArray[index].AppendElement(currentServer);
|
||||
}
|
||||
else
|
||||
{
|
||||
pop3DownloadServersArray[index].AppendElement(currentServer);
|
||||
}
|
||||
}
|
||||
|
||||
function GetMessagesForAllAuthenticatedAccounts()
|
||||
{
|
||||
try {
|
||||
// now log into any server
|
||||
try
|
||||
{
|
||||
var allServers = accountManager.allServers;
|
||||
for (var i=0;i<allServers.Count();i++) {
|
||||
|
||||
// array of isupportsarrays of servers for a particular folder
|
||||
var pop3DownloadServersArray = new Array;
|
||||
// parallel isupports array of folders to download to...
|
||||
var localFoldersToDownloadTo = Components.classes["@mozilla.org/supports-array;1"].createInstance(Components.interfaces.nsISupportsArray);
|
||||
var pop3Server;
|
||||
|
||||
for (var i=0;i<allServers.Count();i++)
|
||||
{
|
||||
var currentServer = allServers.GetElementAt(i).QueryInterface(Components.interfaces.nsIMsgIncomingServer);
|
||||
var protocolinfo = Components.classes["@mozilla.org/messenger/protocol/info;1?type=" +
|
||||
currentServer.type].getService(Components.interfaces.nsIMsgProtocolInfo);
|
||||
if (protocolinfo.canGetMessages && !currentServer.passwordPromptRequired) {
|
||||
// Get new messages now
|
||||
GetMessagesForInboxOnServer(currentServer);
|
||||
var protocolinfo = Components.classes["@mozilla.org/messenger/protocol/info;1?type=" + currentServer.type].getService(Components.interfaces.nsIMsgProtocolInfo);
|
||||
if (protocolinfo.canGetMessages && !currentServer.passwordPromptRequired)
|
||||
{
|
||||
if (currentServer.type == "pop3")
|
||||
{
|
||||
CoalesceGetMsgsForPop3ServersByDestFolder(currentServer, pop3DownloadServersArray, localFoldersToDownloadTo);
|
||||
pop3Server = currentServer.QueryInterface(Components.interfaces.nsIPop3IncomingServer);
|
||||
}
|
||||
else
|
||||
// get new messages on the server for imap or rss
|
||||
GetMessagesForInboxOnServer(currentServer);
|
||||
}
|
||||
}
|
||||
for (var i = 0; i < pop3DownloadServersArray.length; i++)
|
||||
{
|
||||
// any ol' pop3Server will do - the serversArray specifies which servers to download from
|
||||
pop3Server.downloadMailFromServers(pop3DownloadServersArray[i], msgWindow, localFoldersToDownloadTo.GetElementAt(i), null);
|
||||
}
|
||||
}
|
||||
catch(ex) {
|
||||
dump(ex + "\n");
|
||||
catch(ex)
|
||||
{
|
||||
dump(ex + "\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -893,12 +893,13 @@ function loadStartFolder(initialUri)
|
|||
|
||||
SelectFolder(startFolder.URI);
|
||||
|
||||
// only do this on startup, when we pass in null
|
||||
if (!initialUri && isLoginAtStartUpEnabled && gLoadStartFolder)
|
||||
{
|
||||
// Perform biff on the server to check for new mail
|
||||
defaultServer.PerformBiff(msgWindow);
|
||||
}
|
||||
// Perform biff on the server to check for new mail, except for imap
|
||||
// or a pop3 account that is deferred or deferred to,
|
||||
// or the case where initialUri is non-null (non-startup)
|
||||
if (!initialUri && isLoginAtStartUpEnabled && gLoadStartFolder
|
||||
&& defaultServer.type != "imap" && !defaultServer.isDeferredTo &&
|
||||
defaultServer.msgFolder == defaultServer.rootMsgFolder)
|
||||
defaultServer.PerformBiff(msgWindow);
|
||||
|
||||
|
||||
// because the "open" state persists, we'll call
|
||||
|
@ -949,14 +950,6 @@ function loadStartFolder(initialUri)
|
|||
}
|
||||
}
|
||||
|
||||
function TriggerGetMessages(server)
|
||||
{
|
||||
// downloadMessagesAtStartup for a given server type indicates whether
|
||||
// or not there is a need to Trigger GetMessages action
|
||||
if (server.downloadMessagesAtStartup)
|
||||
MsgGetMessage();
|
||||
}
|
||||
|
||||
function AddToSession()
|
||||
{
|
||||
try {
|
||||
|
|
|
@ -722,11 +722,11 @@ function MsgGetMessagesForAllServers(defaultServer)
|
|||
try
|
||||
{
|
||||
var allServers = accountManager.allServers;
|
||||
var firstPop3DownloadServer;
|
||||
|
||||
// these arrays are parallel
|
||||
var pop3DownloadServersArray = new Array; // array of isupportsarrays of servers for a particular folder
|
||||
var localFoldersToDownloadTo; // isupports array of folders to download to...
|
||||
// array of isupportsarrays of servers for a particular folder
|
||||
var pop3DownloadServersArray = new Array;
|
||||
// parallel isupports array of folders to download to...
|
||||
var localFoldersToDownloadTo = Components.classes["@mozilla.org/supports-array;1"].createInstance(Components.interfaces.nsISupportsArray);
|
||||
var pop3Server;
|
||||
|
||||
for (var i=0;i<allServers.Count();i++)
|
||||
{
|
||||
|
@ -734,32 +734,18 @@ function MsgGetMessagesForAllServers(defaultServer)
|
|||
var protocolinfo = Components.classes["@mozilla.org/messenger/protocol/info;1?type=" + currentServer.type].getService(Components.interfaces.nsIMsgProtocolInfo);
|
||||
if (protocolinfo.canLoginAtStartUp && currentServer.loginAtStartUp)
|
||||
{
|
||||
if (defaultServer && defaultServer.equals(currentServer))
|
||||
if (defaultServer && defaultServer.equals(currentServer) &&
|
||||
!defaultServer.isDeferredTo &&
|
||||
defaultServer.msgFolder == defaultServer.rootMsgFolder)
|
||||
{
|
||||
//dump(currentServer.serverURI + "...skipping, already opened\n");
|
||||
dump(currentServer.serverURI + "...skipping, already opened\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
if (currentServer.type == "pop3" && currentServer.downloadOnBiff)
|
||||
{
|
||||
var outNumFolders = new Object();
|
||||
var inboxFolder = currentServer.rootMsgFolder.getFoldersWithFlag(0x1000, 1, outNumFolders);
|
||||
CoalesceGetMsgsForPop3ServersByDestFolder(currentServer, pop3DownloadServersArray, localFoldersToDownloadTo);
|
||||
pop3Server = currentServer.QueryInterface(Components.interfaces.nsIPop3IncomingServer);
|
||||
if (!localFoldersToDownloadTo)
|
||||
localFoldersToDownloadTo = Components.classes["@mozilla.org/supports-array;1"].createInstance(Components.interfaces.nsISupportsArray);
|
||||
// coalesce the servers that download into the same folder...
|
||||
var index = localFoldersToDownloadTo.GetIndexOf(inboxFolder);
|
||||
if (index == -1)
|
||||
{
|
||||
localFoldersToDownloadTo.AppendElement(inboxFolder);
|
||||
index = pop3DownloadServersArray.length
|
||||
pop3DownloadServersArray[index] = Components.classes["@mozilla.org/supports-array;1"].createInstance(Components.interfaces.nsISupportsArray);
|
||||
pop3DownloadServersArray[index].AppendElement(currentServer);
|
||||
}
|
||||
else
|
||||
{
|
||||
pop3DownloadServersArray[index].AppendElement(currentServer);
|
||||
}
|
||||
}
|
||||
else
|
||||
// Check to see if there are new messages on the server
|
||||
|
@ -1916,22 +1902,71 @@ function SendUnsentMessages()
|
|||
}
|
||||
}
|
||||
|
||||
function CoalesceGetMsgsForPop3ServersByDestFolder(currentServer, pop3DownloadServersArray, localFoldersToDownloadTo)
|
||||
{
|
||||
var outNumFolders = new Object();
|
||||
var inboxFolder = currentServer.rootMsgFolder.getFoldersWithFlag(0x1000, 1, outNumFolders);
|
||||
pop3Server = currentServer.QueryInterface(Components.interfaces.nsIPop3IncomingServer);
|
||||
// coalesce the servers that download into the same folder...
|
||||
var index = localFoldersToDownloadTo.GetIndexOf(inboxFolder);
|
||||
if (index == -1)
|
||||
{
|
||||
if(inboxFolder)
|
||||
{
|
||||
inboxFolder.biffState = Components.interfaces.nsIMsgFolder.nsMsgBiffState_NoMail;
|
||||
|
||||
if (inboxFolder.hasNewMessages)
|
||||
inboxFolder.clearNewMessages();
|
||||
}
|
||||
localFoldersToDownloadTo.AppendElement(inboxFolder);
|
||||
index = pop3DownloadServersArray.length
|
||||
pop3DownloadServersArray[index] = Components.classes["@mozilla.org/supports-array;1"].createInstance(Components.interfaces.nsISupportsArray);
|
||||
pop3DownloadServersArray[index].AppendElement(currentServer);
|
||||
}
|
||||
else
|
||||
{
|
||||
pop3DownloadServersArray[index].AppendElement(currentServer);
|
||||
}
|
||||
}
|
||||
|
||||
function GetMessagesForAllAuthenticatedAccounts()
|
||||
{
|
||||
try {
|
||||
// now log into any server
|
||||
try
|
||||
{
|
||||
var allServers = accountManager.allServers;
|
||||
for (var i=0;i<allServers.Count();i++) {
|
||||
|
||||
// array of isupportsarrays of servers for a particular folder
|
||||
var pop3DownloadServersArray = new Array;
|
||||
// parallel isupports array of folders to download to...
|
||||
var localFoldersToDownloadTo = Components.classes["@mozilla.org/supports-array;1"].createInstance(Components.interfaces.nsISupportsArray);
|
||||
var pop3Server;
|
||||
|
||||
for (var i=0;i<allServers.Count();i++)
|
||||
{
|
||||
var currentServer = allServers.GetElementAt(i).QueryInterface(Components.interfaces.nsIMsgIncomingServer);
|
||||
var protocolinfo = Components.classes["@mozilla.org/messenger/protocol/info;1?type=" +
|
||||
currentServer.type].getService(Components.interfaces.nsIMsgProtocolInfo);
|
||||
if (protocolinfo.canGetMessages && !currentServer.passwordPromptRequired) {
|
||||
// Get new messages now
|
||||
GetMessagesForInboxOnServer(currentServer);
|
||||
var protocolinfo = Components.classes["@mozilla.org/messenger/protocol/info;1?type=" + currentServer.type].getService(Components.interfaces.nsIMsgProtocolInfo);
|
||||
if (protocolinfo.canGetMessages && !currentServer.passwordPromptRequired)
|
||||
{
|
||||
if (currentServer.type == "pop3")
|
||||
{
|
||||
CoalesceGetMsgsForPop3ServersByDestFolder(currentServer, pop3DownloadServersArray, localFoldersToDownloadTo);
|
||||
pop3Server = currentServer.QueryInterface(Components.interfaces.nsIPop3IncomingServer);
|
||||
}
|
||||
else
|
||||
// get new messages on the server for imap or rss
|
||||
GetMessagesForInboxOnServer(currentServer);
|
||||
}
|
||||
}
|
||||
for (var i = 0; i < pop3DownloadServersArray.length; i++)
|
||||
{
|
||||
// any ol' pop3Server will do - the serversArray specifies which servers to download from
|
||||
pop3Server.downloadMailFromServers(pop3DownloadServersArray[i], msgWindow, localFoldersToDownloadTo.GetElementAt(i), null);
|
||||
}
|
||||
}
|
||||
catch(ex) {
|
||||
dump(ex + "\n");
|
||||
catch(ex)
|
||||
{
|
||||
dump(ex + "\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -770,12 +770,13 @@ function loadStartFolder(initialUri)
|
|||
|
||||
var startFolder = startFolderResource.QueryInterface(Components.interfaces.nsIMsgFolder);
|
||||
|
||||
// only do this on startup, when we pass in null
|
||||
if (!initialUri && isLoginAtStartUpEnabled && gLoadStartFolder)
|
||||
{
|
||||
// Perform biff on the server to check for new mail
|
||||
defaultServer.PerformBiff(msgWindow);
|
||||
}
|
||||
// Perform biff on the server to check for new mail, except for imap
|
||||
// or a pop3 account that is deferred or deferred to,
|
||||
// or the case where initialUri is non-null (non-startup)
|
||||
if (!initialUri && isLoginAtStartUpEnabled && gLoadStartFolder
|
||||
&& defaultServer.type != "imap" && !defaultServer.isDeferredTo &&
|
||||
defaultServer.msgFolder == defaultServer.rootMsgFolder)
|
||||
defaultServer.PerformBiff(msgWindow);
|
||||
|
||||
SelectFolder(startFolder.URI);
|
||||
|
||||
|
@ -820,14 +821,6 @@ function loadStartFolder(initialUri)
|
|||
}
|
||||
}
|
||||
|
||||
function TriggerGetMessages(server)
|
||||
{
|
||||
// downloadMessagesAtStartup for a given server type indicates whether
|
||||
// or not there is a need to Trigger GetMessages action
|
||||
if (server.downloadMessagesAtStartup)
|
||||
MsgGetMessage();
|
||||
}
|
||||
|
||||
function AddToSession()
|
||||
{
|
||||
try {
|
||||
|
|
Загрузка…
Ссылка в новой задаче