* Ground work for NET9 UWP switch. * Add launch settings for Wino.Mail * Added new test WAP project * fix platforms in slnx solution * ManagePackageVersionsCentrally set default * Fixing assets and couple issues with the new packaging project. * Add back markdown * Fix nuget warnings * FIx error in WAP about build tools * Add build.props with default language preview * Some AOT compilation progress. * More AOT stuff. * Remove deprecated protocol auth activation handler. * Fix remaining protocol handler for google auth. * Even more AOT * More more AOT fixes * Fix a few more AOT warnings * Fix signature editor AOT * Fix composer and renderer AOT JSON * Outlook Sync AOT * Fixing bundle generation and package signing. --------- Co-authored-by: Burak Kaan Köse <bkaankose@outlook.com>
69 lines
2.7 KiB
C#
69 lines
2.7 KiB
C#
using System;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
using Windows.ApplicationModel.Activation;
|
|
using Windows.Storage;
|
|
using Windows.UI.Xaml;
|
|
using Windows.UI.Xaml.Controls;
|
|
using Windows.UI.Xaml.Media.Animation;
|
|
using Wino.Core.Domain.Enums;
|
|
using Wino.Core.Domain.Interfaces;
|
|
using Wino.Core.UWP.Extensions;
|
|
using Wino.Views;
|
|
|
|
namespace Wino.Activation
|
|
{
|
|
internal class FileActivationHandler : ActivationHandler<FileActivatedEventArgs>
|
|
{
|
|
private readonly INativeAppService _nativeAppService;
|
|
private readonly IMimeFileService _mimeFileService;
|
|
private readonly IStatePersistanceService _statePersistanceService;
|
|
private readonly INavigationService _winoNavigationService;
|
|
|
|
public FileActivationHandler(INativeAppService nativeAppService,
|
|
IMimeFileService mimeFileService,
|
|
IStatePersistanceService statePersistanceService,
|
|
INavigationService winoNavigationService)
|
|
{
|
|
_nativeAppService = nativeAppService;
|
|
_mimeFileService = mimeFileService;
|
|
_statePersistanceService = statePersistanceService;
|
|
_winoNavigationService = winoNavigationService;
|
|
}
|
|
|
|
protected override async Task HandleInternalAsync(FileActivatedEventArgs args)
|
|
{
|
|
// Always handle the last item passed.
|
|
// Multiple files are not supported.
|
|
|
|
var file = args.Files.Last() as StorageFile;
|
|
|
|
// Only EML files are supported now.
|
|
var fileExtension = Path.GetExtension(file.Path);
|
|
|
|
if (string.Equals(fileExtension, ".eml", StringComparison.OrdinalIgnoreCase))
|
|
{
|
|
var fileBytes = await file.ToByteArrayAsync();
|
|
var directoryName = Path.GetDirectoryName(file.Path);
|
|
|
|
var messageInformation = await _mimeFileService.GetMimeMessageInformationAsync(fileBytes, directoryName).ConfigureAwait(false);
|
|
|
|
if (_nativeAppService.IsAppRunning())
|
|
{
|
|
// TODO: Activate another Window and go to mail rendering page.
|
|
_winoNavigationService.Navigate(WinoPage.MailRenderingPage, messageInformation, NavigationReferenceFrame.RenderingFrame);
|
|
}
|
|
else
|
|
{
|
|
_statePersistanceService.ShouldShiftMailRenderingDesign = true;
|
|
(Window.Current.Content as Frame).Navigate(typeof(MailRenderingPage), messageInformation, new DrillInNavigationTransitionInfo());
|
|
}
|
|
}
|
|
}
|
|
|
|
protected override bool CanHandleInternal(FileActivatedEventArgs args) => args.Files.Any();
|
|
|
|
}
|
|
}
|