Added save of drafts when closing app (#546)
This commit is contained in:
@@ -90,6 +90,7 @@
|
|||||||
</Applications>
|
</Applications>
|
||||||
|
|
||||||
<Capabilities>
|
<Capabilities>
|
||||||
|
<rescap:Capability Name="confirmAppClose" />
|
||||||
<Capability Name="internetClient" />
|
<Capability Name="internetClient" />
|
||||||
<Capability Name="privateNetworkClientServer"/>
|
<Capability Name="privateNetworkClientServer"/>
|
||||||
<Capability Name="internetClientServer"/>
|
<Capability Name="internetClientServer"/>
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ using MimeKit;
|
|||||||
using Windows.ApplicationModel.DataTransfer;
|
using Windows.ApplicationModel.DataTransfer;
|
||||||
using Windows.Foundation;
|
using Windows.Foundation;
|
||||||
using Windows.Storage;
|
using Windows.Storage;
|
||||||
|
using Windows.UI.Core.Preview;
|
||||||
using Windows.UI.ViewManagement.Core;
|
using Windows.UI.ViewManagement.Core;
|
||||||
using Windows.UI.Xaml;
|
using Windows.UI.Xaml;
|
||||||
using Windows.UI.Xaml.Controls;
|
using Windows.UI.Xaml.Controls;
|
||||||
@@ -48,13 +49,15 @@ namespace Wino.Views
|
|||||||
public static readonly DependencyProperty IsComposerDarkModeProperty = DependencyProperty.Register(nameof(IsComposerDarkMode), typeof(bool), typeof(ComposePage), new PropertyMetadata(false, OnIsComposerDarkModeChanged));
|
public static readonly DependencyProperty IsComposerDarkModeProperty = DependencyProperty.Register(nameof(IsComposerDarkMode), typeof(bool), typeof(ComposePage), new PropertyMetadata(false, OnIsComposerDarkModeChanged));
|
||||||
public WebView2 GetWebView() => Chromium;
|
public WebView2 GetWebView() => Chromium;
|
||||||
|
|
||||||
private TaskCompletionSource<bool> DOMLoadedTask = new TaskCompletionSource<bool>();
|
private readonly TaskCompletionSource<bool> _domLoadedTask = new TaskCompletionSource<bool>();
|
||||||
|
|
||||||
private List<IDisposable> Disposables = new List<IDisposable>();
|
private readonly List<IDisposable> _disposables = new List<IDisposable>();
|
||||||
|
private readonly SystemNavigationManagerPreview _navManagerPreview = SystemNavigationManagerPreview.GetForCurrentView();
|
||||||
|
|
||||||
public ComposePage()
|
public ComposePage()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
_navManagerPreview.CloseRequested += OnClose;
|
||||||
|
|
||||||
Environment.SetEnvironmentVariable("WEBVIEW2_DEFAULT_BACKGROUND_COLOR", "00FFFFFF");
|
Environment.SetEnvironmentVariable("WEBVIEW2_DEFAULT_BACKGROUND_COLOR", "00FFFFFF");
|
||||||
Environment.SetEnvironmentVariable("WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS", "--enable-features=OverlayScrollbar,msOverlayScrollbarWinStyle,msOverlayScrollbarWinStyleAnimation");
|
Environment.SetEnvironmentVariable("WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS", "--enable-features=OverlayScrollbar,msOverlayScrollbarWinStyle,msOverlayScrollbarWinStyleAnimation");
|
||||||
@@ -378,7 +381,7 @@ namespace Wino.Views
|
|||||||
|
|
||||||
public async Task UpdateEditorThemeAsync()
|
public async Task UpdateEditorThemeAsync()
|
||||||
{
|
{
|
||||||
await DOMLoadedTask.Task;
|
await _domLoadedTask.Task;
|
||||||
|
|
||||||
if (IsComposerDarkMode)
|
if (IsComposerDarkMode)
|
||||||
{
|
{
|
||||||
@@ -394,7 +397,7 @@ namespace Wino.Views
|
|||||||
|
|
||||||
private async Task RenderInternalAsync(string htmlBody)
|
private async Task RenderInternalAsync(string htmlBody)
|
||||||
{
|
{
|
||||||
await DOMLoadedTask.Task;
|
await _domLoadedTask.Task;
|
||||||
|
|
||||||
await UpdateEditorThemeAsync();
|
await UpdateEditorThemeAsync();
|
||||||
await InitializeEditorAsync();
|
await InitializeEditorAsync();
|
||||||
@@ -437,8 +440,8 @@ namespace Wino.Views
|
|||||||
|
|
||||||
private void DisposeDisposables()
|
private void DisposeDisposables()
|
||||||
{
|
{
|
||||||
if (Disposables.Any())
|
if (_disposables.Any())
|
||||||
Disposables.ForEach(a => a.Dispose());
|
_disposables.ForEach(a => a.Dispose());
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override async void OnNavigatedTo(NavigationEventArgs e)
|
protected override async void OnNavigatedTo(NavigationEventArgs e)
|
||||||
@@ -452,9 +455,9 @@ namespace Wino.Views
|
|||||||
|
|
||||||
DisposeDisposables();
|
DisposeDisposables();
|
||||||
|
|
||||||
Disposables.Add(GetSuggestionBoxDisposable(ToBox));
|
_disposables.Add(GetSuggestionBoxDisposable(ToBox));
|
||||||
Disposables.Add(GetSuggestionBoxDisposable(CCBox));
|
_disposables.Add(GetSuggestionBoxDisposable(CCBox));
|
||||||
Disposables.Add(GetSuggestionBoxDisposable(BccBox));
|
_disposables.Add(GetSuggestionBoxDisposable(BccBox));
|
||||||
|
|
||||||
Chromium.CoreWebView2Initialized -= ChromiumInitialized;
|
Chromium.CoreWebView2Initialized -= ChromiumInitialized;
|
||||||
Chromium.CoreWebView2Initialized += ChromiumInitialized;
|
Chromium.CoreWebView2Initialized += ChromiumInitialized;
|
||||||
@@ -539,7 +542,7 @@ namespace Wino.Views
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DOMLoaded(CoreWebView2 sender, CoreWebView2DOMContentLoadedEventArgs args) => DOMLoadedTask.TrySetResult(true);
|
private void DOMLoaded(CoreWebView2 sender, CoreWebView2DOMContentLoadedEventArgs args) => _domLoadedTask.TrySetResult(true);
|
||||||
|
|
||||||
async void IRecipient<CreateNewComposeMailRequested>.Receive(CreateNewComposeMailRequested message)
|
async void IRecipient<CreateNewComposeMailRequested>.Receive(CreateNewComposeMailRequested message)
|
||||||
{
|
{
|
||||||
@@ -678,10 +681,21 @@ namespace Wino.Views
|
|||||||
base.OnNavigatingFrom(e);
|
base.OnNavigatingFrom(e);
|
||||||
|
|
||||||
FocusManager.GotFocus -= GlobalFocusManagerGotFocus;
|
FocusManager.GotFocus -= GlobalFocusManagerGotFocus;
|
||||||
|
_navManagerPreview.CloseRequested -= OnClose;
|
||||||
await ViewModel.UpdateMimeChangesAsync();
|
await ViewModel.UpdateMimeChangesAsync();
|
||||||
|
|
||||||
DisposeDisposables();
|
DisposeDisposables();
|
||||||
DisposeWebView2();
|
DisposeWebView2();
|
||||||
}
|
}
|
||||||
|
private async void OnClose(object sender, SystemNavigationCloseRequestedPreviewEventArgs e)
|
||||||
|
{
|
||||||
|
var deferral = e.GetDeferral();
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
await ViewModel.UpdateMimeChangesAsync();
|
||||||
|
}
|
||||||
|
finally { deferral.Complete(); }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user