fix problem reading unread imap msg from mem cache not marking msg read r=naving,sr=sspitzer 24787

This commit is contained in:
bienvenu%netscape.com 2001-04-17 23:32:09 +00:00
Родитель bf9ef32d15
Коммит 6854b90991
2 изменённых файлов: 42 добавлений и 30 удалений

Просмотреть файл

@ -534,35 +534,6 @@ NS_IMETHODIMP nsImapService::DisplayMessage(const char* aMessageURI,
rv = FetchMessage(imapUrl, nsIImapUrl::nsImapMsgFetch, folder, imapMessageSink,
aMsgWindow, aURL, aDisplayConsumer, msgKey, PR_TRUE);
if (NS_SUCCEEDED(rv))
{
imapUrl->GetMsgLoadingFromCache(&msgLoadingFromCache);
// we're reading this msg from the cache - mark it read on the server.
if (msgLoadingFromCache)
{
nsCOMPtr <nsIMsgDatabase> database;
if (NS_SUCCEEDED(folder->GetMsgDatabase(nsnull, getter_AddRefs(database))) && database)
{
PRBool msgRead = PR_TRUE;
database->IsRead(key, &msgRead);
if (!msgRead)
{
nsCOMPtr<nsISupportsArray> messages;
rv = NS_NewISupportsArray(getter_AddRefs(messages));
if (NS_FAILED(rv))
return rv;
nsCOMPtr<nsIMsgDBHdr> message;
GetMsgDBHdrFromURI(aMessageURI, getter_AddRefs(message));
nsCOMPtr<nsISupports> msgSupport(do_QueryInterface(message, &rv));
if (msgSupport)
{
messages->AppendElement(msgSupport);
folder->MarkMessagesRead(messages, PR_TRUE);
}
}
}
}
}
}
}
return rv;

Просмотреть файл

@ -1210,7 +1210,48 @@ NS_IMETHODIMP nsImapUrl::GetUri(char** aURI)
NS_IMPL_GETSET(nsImapUrl, AddDummyEnvelope, PRBool, m_addDummyEnvelope);
NS_IMPL_GETSET(nsImapUrl, CanonicalLineEnding, PRBool, m_canonicalLineEnding);
NS_IMPL_GETSET(nsImapUrl, MsgLoadingFromCache, PRBool, m_msgLoadingFromCache);
NS_IMPL_GETTER(nsImapUrl::GetMsgLoadingFromCache, PRBool, m_msgLoadingFromCache);
NS_IMETHODIMP nsImapUrl::SetMsgLoadingFromCache(PRBool loadingFromCache)
{
nsresult rv = NS_OK;
m_msgLoadingFromCache = loadingFromCache;
if (loadingFromCache)
{
nsCOMPtr<nsIMsgFolder> folder;
nsMsgKey key;
nsresult rv = NS_OK;
nsCAutoString folderURI;
rv = nsParseImapMessageURI(mURI, folderURI, &key, nsnull);
NS_ENSURE_SUCCESS(rv, rv);
rv = GetMsgFolder(getter_AddRefs(folder));
nsCOMPtr <nsIMsgDatabase> database;
if (folder && NS_SUCCEEDED(folder->GetMsgDatabase(nsnull, getter_AddRefs(database))) && database)
{
PRBool msgRead = PR_TRUE;
database->IsRead(key, &msgRead);
if (!msgRead)
{
nsCOMPtr<nsISupportsArray> messages;
rv = NS_NewISupportsArray(getter_AddRefs(messages));
if (NS_FAILED(rv))
return rv;
nsCOMPtr<nsIMsgDBHdr> message;
GetMsgDBHdrFromURI(mURI, getter_AddRefs(message));
nsCOMPtr<nsISupports> msgSupport(do_QueryInterface(message, &rv));
if (msgSupport)
{
messages->AppendElement(msgSupport);
folder->MarkMessagesRead(messages, PR_TRUE);
}
}
}
}
return rv;
}
NS_IMETHODIMP nsImapUrl::SetMessageFile(nsIFileSpec * aFileSpec)
{