Immidiate ui reflection for calendar events and some more error handling.
This commit is contained in:
@@ -530,7 +530,7 @@ public class WinoMailCollection : ObservableRecipient, IRecipient<SelectedItemsC
|
||||
|
||||
private async Task UpdateExistingItemAsync(MailItemContainer itemContainer,
|
||||
MailCopy updatedItem,
|
||||
MailUpdateSource mailUpdateSource = MailUpdateSource.Server,
|
||||
EntityUpdateSource mailUpdateSource = EntityUpdateSource.Server,
|
||||
MailCopyChangeFlags changeHint = MailCopyChangeFlags.None)
|
||||
{
|
||||
if (itemContainer?.ItemViewModel == null)
|
||||
@@ -559,7 +559,7 @@ public class WinoMailCollection : ObservableRecipient, IRecipient<SelectedItemsC
|
||||
itemContainer.ThreadViewModel?.ResumeChildPropertyNotifications();
|
||||
}
|
||||
|
||||
existingItem.IsBusy = mailUpdateSource == MailUpdateSource.ClientUpdated;
|
||||
existingItem.IsBusy = mailUpdateSource == EntityUpdateSource.ClientUpdated;
|
||||
|
||||
UpdateUniqueIdHashes(existingItem, true);
|
||||
UpdateThreadIdCache(threadOwner, true);
|
||||
@@ -849,7 +849,7 @@ public class WinoMailCollection : ObservableRecipient, IRecipient<SelectedItemsC
|
||||
/// </summary>
|
||||
/// <param name="updatedMailCopy">Updated mail copy.</param>
|
||||
/// <returns></returns>
|
||||
public Task UpdateMailCopy(MailCopy updatedMailCopy, MailUpdateSource mailUpdateSource, MailCopyChangeFlags changedProperties = MailCopyChangeFlags.None)
|
||||
public Task UpdateMailCopy(MailCopy updatedMailCopy, EntityUpdateSource mailUpdateSource, MailCopyChangeFlags changedProperties = MailCopyChangeFlags.None)
|
||||
=> RunSerializedAsync(() =>
|
||||
{
|
||||
var itemContainer = GetMailItemContainer(updatedMailCopy.UniqueId);
|
||||
|
||||
@@ -874,7 +874,7 @@ public partial class ComposePageViewModel : MailBaseViewModel,
|
||||
_dialogService.InfoBarMessage(Translator.Info_InvalidAddressTitle, string.Format(Translator.Info_InvalidAddressMessage, address), InfoBarMessageType.Warning);
|
||||
}
|
||||
|
||||
protected override async void OnMailUpdated(MailCopy updatedMail, MailUpdateSource source, MailCopyChangeFlags changedProperties)
|
||||
protected override async void OnMailUpdated(MailCopy updatedMail, EntityUpdateSource source, MailCopyChangeFlags changedProperties)
|
||||
{
|
||||
base.OnMailUpdated(updatedMail, source, changedProperties);
|
||||
|
||||
|
||||
@@ -20,9 +20,9 @@ public class MailBaseViewModel : CoreBaseViewModel,
|
||||
IRecipient<FolderDeleted>,
|
||||
IRecipient<FolderSynchronizationEnabled>
|
||||
{
|
||||
protected virtual void OnMailAdded(MailCopy addedMail) { }
|
||||
protected virtual void OnMailRemoved(MailCopy removedMail) { }
|
||||
protected virtual void OnMailUpdated(MailCopy updatedMail, MailUpdateSource source, MailCopyChangeFlags changedProperties) { }
|
||||
protected virtual void OnMailAdded(MailCopy addedMail, EntityUpdateSource source) { }
|
||||
protected virtual void OnMailRemoved(MailCopy removedMail, EntityUpdateSource source) { }
|
||||
protected virtual void OnMailUpdated(MailCopy updatedMail, EntityUpdateSource source, MailCopyChangeFlags changedProperties) { }
|
||||
protected virtual void OnMailDownloaded(MailCopy downloadedMail) { }
|
||||
protected virtual void OnDraftCreated(MailCopy draftMail, MailAccount account) { }
|
||||
protected virtual void OnDraftFailed(MailCopy draftMail, MailAccount account) { }
|
||||
@@ -31,8 +31,8 @@ public class MailBaseViewModel : CoreBaseViewModel,
|
||||
protected virtual void OnFolderDeleted(MailItemFolder folder) { }
|
||||
protected virtual void OnFolderSynchronizationEnabled(IMailItemFolder mailItemFolder) { }
|
||||
|
||||
void IRecipient<MailAddedMessage>.Receive(MailAddedMessage message) => OnMailAdded(message.AddedMail);
|
||||
void IRecipient<MailRemovedMessage>.Receive(MailRemovedMessage message) => OnMailRemoved(message.RemovedMail);
|
||||
void IRecipient<MailAddedMessage>.Receive(MailAddedMessage message) => OnMailAdded(message.AddedMail, message.Source);
|
||||
void IRecipient<MailRemovedMessage>.Receive(MailRemovedMessage message) => OnMailRemoved(message.RemovedMail, message.Source);
|
||||
void IRecipient<MailUpdatedMessage>.Receive(MailUpdatedMessage message) => OnMailUpdated(message.UpdatedMail, message.Source, message.ChangedProperties);
|
||||
void IRecipient<MailDownloadedMessage>.Receive(MailDownloadedMessage message) => OnMailDownloaded(message.DownloadedMail);
|
||||
|
||||
|
||||
@@ -745,7 +745,7 @@ public partial class MailListPageViewModel : MailBaseViewModel,
|
||||
var fi = MailCollection.GetFirst();
|
||||
if (fi == null) return;
|
||||
|
||||
Messenger.Send(new MailRemovedMessage(fi.MailCopy));
|
||||
Messenger.Send(new MailRemovedMessage(fi.MailCopy, EntityUpdateSource.Server));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -758,9 +758,9 @@ public partial class MailListPageViewModel : MailBaseViewModel,
|
||||
return MailCollection.ContainsThreadId(mailItem.ThreadId);
|
||||
}
|
||||
|
||||
protected override async void OnMailAdded(MailCopy addedMail)
|
||||
protected override async void OnMailAdded(MailCopy addedMail, EntityUpdateSource source)
|
||||
{
|
||||
base.OnMailAdded(addedMail);
|
||||
base.OnMailAdded(addedMail, source);
|
||||
|
||||
if (addedMail.AssignedAccount == null || addedMail.AssignedFolder == null) return;
|
||||
|
||||
@@ -847,6 +847,15 @@ public partial class MailListPageViewModel : MailBaseViewModel,
|
||||
// AddAsync already handles UI threading internally, no need to wrap it
|
||||
await MailCollection.AddAsync(addedMail);
|
||||
|
||||
if (source == EntityUpdateSource.ClientUpdated)
|
||||
{
|
||||
var addedContainer = MailCollection.GetMailItemContainer(addedMail.UniqueId);
|
||||
if (addedContainer?.ItemViewModel != null)
|
||||
{
|
||||
addedContainer.ItemViewModel.IsBusy = true;
|
||||
}
|
||||
}
|
||||
|
||||
await ExecuteUIThread(() =>
|
||||
{
|
||||
NotifyItemFoundState();
|
||||
@@ -862,7 +871,7 @@ public partial class MailListPageViewModel : MailBaseViewModel,
|
||||
}
|
||||
}
|
||||
|
||||
protected override async void OnMailUpdated(MailCopy updatedMail, MailUpdateSource source, MailCopyChangeFlags changedProperties)
|
||||
protected override async void OnMailUpdated(MailCopy updatedMail, EntityUpdateSource source, MailCopyChangeFlags changedProperties)
|
||||
{
|
||||
base.OnMailUpdated(updatedMail, source, changedProperties);
|
||||
|
||||
@@ -890,9 +899,9 @@ public partial class MailListPageViewModel : MailBaseViewModel,
|
||||
await ExecuteUIThread(() => { SetupTopBarActions(); });
|
||||
}
|
||||
|
||||
protected override async void OnMailRemoved(MailCopy removedMail)
|
||||
protected override async void OnMailRemoved(MailCopy removedMail, EntityUpdateSource source)
|
||||
{
|
||||
base.OnMailRemoved(removedMail);
|
||||
base.OnMailRemoved(removedMail, source);
|
||||
|
||||
if (removedMail.AssignedAccount == null) return;
|
||||
|
||||
|
||||
@@ -639,7 +639,7 @@ public partial class MailRenderingPageViewModel : MailBaseViewModel,
|
||||
MenuItems.Add(MailOperationMenuItem.Create(MailOperation.MarkAsRead, true, false));
|
||||
}
|
||||
|
||||
protected override async void OnMailUpdated(MailCopy updatedMail, MailUpdateSource source, MailCopyChangeFlags changedProperties)
|
||||
protected override async void OnMailUpdated(MailCopy updatedMail, EntityUpdateSource source, MailCopyChangeFlags changedProperties)
|
||||
{
|
||||
base.OnMailUpdated(updatedMail, source, changedProperties);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user