merged main

This commit is contained in:
Burak Kaan Köse
2024-08-31 15:31:29 +02:00
17 changed files with 251 additions and 634 deletions

View File

@@ -80,27 +80,26 @@ namespace Wino.Core.Services
}
else
{
bool isAllFlagged = selectedMailItems.All(a => a.IsFlagged);
bool isAllRead = selectedMailItems.All(a => a.IsRead);
bool isAllUnread = selectedMailItems.All(a => !a.IsRead);
bool isAllFlagged = selectedMailItems.All(a => a.IsFlagged);
bool isAllNotFlagged = selectedMailItems.All(a => !a.IsFlagged);
if (isAllRead)
operationList.Add(MailOperationMenuItem.Create(MailOperation.MarkAsUnread));
else
List<MailOperationMenuItem> readOperations = (isAllRead, isAllUnread) switch
{
if (!isAllUnread)
operationList.Add(MailOperationMenuItem.Create(MailOperation.MarkAsUnread));
(true, false) => [MailOperationMenuItem.Create(MailOperation.MarkAsUnread)],
(false, true) => [MailOperationMenuItem.Create(MailOperation.MarkAsRead)],
_ => [MailOperationMenuItem.Create(MailOperation.MarkAsRead), MailOperationMenuItem.Create(MailOperation.MarkAsUnread)]
};
operationList.AddRange(readOperations);
operationList.Add(MailOperationMenuItem.Create(MailOperation.MarkAsRead));
}
if (isAllFlagged)
operationList.Add(MailOperationMenuItem.Create(MailOperation.ClearFlag));
else
List<MailOperationMenuItem> flagsOperations = (isAllFlagged, isAllNotFlagged) switch
{
operationList.Add(MailOperationMenuItem.Create(MailOperation.ClearFlag));
operationList.Add(MailOperationMenuItem.Create(MailOperation.SetFlag));
}
(true, false) => [MailOperationMenuItem.Create(MailOperation.ClearFlag)],
(false, true) => [MailOperationMenuItem.Create(MailOperation.SetFlag)],
_ => [MailOperationMenuItem.Create(MailOperation.SetFlag), MailOperationMenuItem.Create(MailOperation.ClearFlag)]
};
operationList.AddRange(flagsOperations);
}
// Ignore

View File

@@ -298,7 +298,11 @@ namespace Wino.Core.Services
}
}
bool isContactCached = contactCache.TryGetValue(mailCopy.FromAddress, out AccountContact contactAssignment);
AccountContact contactAssignment = null;
bool isContactCached = !string.IsNullOrEmpty(mailCopy.FromAddress) ?
contactCache.TryGetValue(mailCopy.FromAddress, out contactAssignment) :
false;
if (!isContactCached && accountAssignment != null)
{
@@ -312,11 +316,33 @@ namespace Wino.Core.Services
mailCopy.AssignedFolder = folderAssignment;
mailCopy.AssignedAccount = accountAssignment;
mailCopy.SenderContact = contactAssignment ?? new AccountContact() { Name = mailCopy.FromName, Address = mailCopy.FromAddress };
mailCopy.SenderContact = contactAssignment ?? CreateUnknownContact(mailCopy.FromName, mailCopy.FromAddress);
}
}
}
private AccountContact CreateUnknownContact(string fromName, string fromAddress)
{
if (string.IsNullOrEmpty(fromName) && string.IsNullOrEmpty(fromAddress))
{
return new AccountContact()
{
Name = Translator.UnknownSender,
Address = Translator.UnknownAddress
};
}
else
{
if (string.IsNullOrEmpty(fromName)) fromName = fromAddress;
return new AccountContact()
{
Name = fromName,
Address = fromAddress
};
}
}
private async Task<List<MailCopy>> GetMailItemsAsync(string mailCopyId)
{
var mailCopies = await Connection.Table<MailCopy>().Where(a => a.Id == mailCopyId).ToListAsync();