From 20f485740595336c165735de5f5992459bd812b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Burak=20Kaan=20K=C3=B6se?= Date: Sat, 24 Aug 2024 00:14:32 +0200 Subject: [PATCH] Root contact concept. --- Wino.Core.Domain/Entities/AccountContact.cs | 1 + Wino.Core/Services/AccountService.cs | 3 ++- Wino.Core/Services/ContactService.cs | 5 ++++- Wino.Core/Services/MailService.cs | 2 +- 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/Wino.Core.Domain/Entities/AccountContact.cs b/Wino.Core.Domain/Entities/AccountContact.cs index 9eae9198..e761e40e 100644 --- a/Wino.Core.Domain/Entities/AccountContact.cs +++ b/Wino.Core.Domain/Entities/AccountContact.cs @@ -17,6 +17,7 @@ namespace Wino.Core.Domain.Entities public string Address { get; set; } public string Name { get; set; } public string Base64ContactPicture { get; set; } + public bool IsRootContact { get; set; } public string DisplayName => Address == Name ? Address : $"{Name} <{Address}>"; diff --git a/Wino.Core/Services/AccountService.cs b/Wino.Core/Services/AccountService.cs index f7a6842d..246f2ba4 100644 --- a/Wino.Core/Services/AccountService.cs +++ b/Wino.Core/Services/AccountService.cs @@ -338,7 +338,8 @@ namespace Wino.Core.Services { Address = account.Address, Name = account.SenderName, - Base64ContactPicture = account.Base64ProfilePictureData + Base64ContactPicture = account.Base64ProfilePictureData, + IsRootContact = true }; await Connection.InsertOrReplaceAsync(accountContact).ConfigureAwait(false); diff --git a/Wino.Core/Services/ContactService.cs b/Wino.Core/Services/ContactService.cs index 4729e875..3963b853 100644 --- a/Wino.Core/Services/ContactService.cs +++ b/Wino.Core/Services/ContactService.cs @@ -52,7 +52,10 @@ namespace Wino.Core.Services { await Connection.InsertAsync(info).ConfigureAwait(false); } - await Connection.InsertOrReplaceAsync(info).ConfigureAwait(false); + else if (!currentContact.IsRootContact) // Don't update root contacts. They belong to accounts. + { + await Connection.InsertOrReplaceAsync(info).ConfigureAwait(false); + } } } } diff --git a/Wino.Core/Services/MailService.cs b/Wino.Core/Services/MailService.cs index 862f856a..aa11a313 100644 --- a/Wino.Core/Services/MailService.cs +++ b/Wino.Core/Services/MailService.cs @@ -305,7 +305,7 @@ namespace Wino.Core.Services mailCopy.AssignedFolder = folderAssignment; mailCopy.AssignedAccount = accountAssignment; - mailCopy.SenderContact = contactAssignment; + mailCopy.SenderContact = contactAssignment ?? new AccountContact() { Name = mailCopy.FromName, Address = mailCopy.FromAddress }; } } }