New contact retrival method.
This commit is contained in:
@@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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 });
|
||||||
|
|||||||
Reference in New Issue
Block a user