New contact retrival method.

This commit is contained in:
Burak Kaan Köse
2024-08-23 02:07:50 +02:00
parent 36eec9d061
commit 9950729080
2 changed files with 16 additions and 6 deletions

View File

@@ -33,11 +33,8 @@ namespace Wino.Core.Services
return Connection.QueryAsync<AccountContact>(rawLikeQuery); return Connection.QueryAsync<AccountContact>(rawLikeQuery);
} }
public async Task<AccountContact> GetAddressInformationByAddressAsync(string address) public Task<AccountContact> GetAddressInformationByAddressAsync(string address)
{ => Connection.Table<AccountContact>().Where(a => a.Address == address).FirstOrDefaultAsync();
return await Connection.Table<AccountContact>().Where(a => a.Address == address).FirstOrDefaultAsync()
?? new AccountContact() { Name = address, Address = address };
}
public async Task SaveAddressInformationAsync(MimeMessage message) public async Task SaveAddressInformationAsync(MimeMessage message)
{ {
@@ -48,7 +45,15 @@ namespace Wino.Core.Services
var addressInformations = recipients.Select(a => new AccountContact() { Name = a.Name, Address = a.Address }); var addressInformations = recipients.Select(a => new AccountContact() { Name = a.Name, Address = a.Address });
foreach (var info in addressInformations) foreach (var info in addressInformations)
{
var currentContact = await GetAddressInformationByAddressAsync(info.Address).ConfigureAwait(false);
if (currentContact == null)
{
await Connection.InsertAsync(info).ConfigureAwait(false);
}
await Connection.InsertOrReplaceAsync(info).ConfigureAwait(false); await Connection.InsertOrReplaceAsync(info).ConfigureAwait(false);
}
} }
} }
} }

View File

@@ -296,7 +296,11 @@ namespace Wino.Core.Services
if (!isContactCached && accountAssignment != null) if (!isContactCached && accountAssignment != null)
{ {
contactAssignment = await GetSenderContactForAccountAsync(accountAssignment, mailCopy.FromAddress).ConfigureAwait(false); contactAssignment = await GetSenderContactForAccountAsync(accountAssignment, mailCopy.FromAddress).ConfigureAwait(false);
_ = contactCache.TryAdd(mailCopy.FromAddress, contactAssignment);
if (contactAssignment != null)
{
_ = contactCache.TryAdd(mailCopy.FromAddress, contactAssignment);
}
} }
mailCopy.AssignedFolder = folderAssignment; mailCopy.AssignedFolder = folderAssignment;
@@ -320,6 +324,7 @@ namespace Wino.Core.Services
private Task<AccountContact> GetSenderContactForAccountAsync(MailAccount account, string fromAddress) private Task<AccountContact> GetSenderContactForAccountAsync(MailAccount account, string fromAddress)
{ {
// Make sure to return the latest up to date contact information for the original account.
if (fromAddress == account.Address) if (fromAddress == account.Address)
{ {
return Task.FromResult(new AccountContact() { Address = account.Address, Name = account.SenderName, Base64ContactPicture = account.Base64ProfilePictureData }); return Task.FromResult(new AccountContact() { Address = account.Address, Name = account.SenderName, Base64ContactPicture = account.Base64ProfilePictureData });