Skip to content

Commit d15f8f1

Browse files
authored
Fix: Fixed exception that would sometimes occur when sharing items (#14298)
1 parent 3381944 commit d15f8f1

File tree

3 files changed

+25
-5
lines changed

3 files changed

+25
-5
lines changed

src/Files.App/Actions/Content/Share/ShareItemAction.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,7 @@ public ShareItemAction()
3333

3434
public Task ExecuteAsync()
3535
{
36-
ShareItemHelpers.ShareItems(context.SelectedItems);
37-
38-
return Task.CompletedTask;
36+
return ShareItemHelpers.ShareItemsAsync(context.SelectedItems);
3937
}
4038

4139
private bool IsContextPageTypeAdaptedToCommand()

src/Files.App/Helpers/ShareItemHelpers.cs

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,13 @@
33

44
using Files.App.Extensions;
55
using Files.App.Utils;
6+
using Microsoft.UI.Xaml.Controls;
67
using System;
78
using System.Collections.Generic;
89
using System.Linq;
910
using Windows.ApplicationModel.DataTransfer;
1011
using Windows.Foundation;
12+
using Windows.Foundation.Metadata;
1113
using Windows.Storage;
1214

1315
namespace Files.App.Helpers
@@ -19,15 +21,32 @@ public static bool IsItemShareable(ListedItem item)
1921
(!item.IsShortcut || item.IsLinkItem) &&
2022
(item.PrimaryItemAttribute != StorageItemTypes.Folder || item.IsArchive);
2123

22-
public static void ShareItems(IEnumerable<ListedItem> itemsToShare)
24+
public static async Task ShareItemsAsync(IEnumerable<ListedItem> itemsToShare)
2325
{
2426
var interop = DataTransferManager.As<IDataTransferManagerInterop>();
2527
IntPtr result = interop.GetForWindow(MainWindow.Instance.WindowHandle, InteropHelpers.DataTransferManagerInteropIID);
2628

2729
var manager = WinRT.MarshalInterface<DataTransferManager>.FromAbi(result);
2830
manager.DataRequested += new TypedEventHandler<DataTransferManager, DataRequestedEventArgs>(Manager_DataRequested);
2931

30-
interop.ShowShareUIForWindow(MainWindow.Instance.WindowHandle);
32+
try
33+
{
34+
interop.ShowShareUIForWindow(MainWindow.Instance.WindowHandle);
35+
}
36+
catch (Exception ex)
37+
{
38+
var errorDialog = new ContentDialog()
39+
{
40+
Title = "FaildToShareItems".GetLocalizedResource(),
41+
Content = ex.Message,
42+
PrimaryButtonText = "OK".GetLocalizedResource(),
43+
};
44+
45+
if (ApiInformation.IsApiContractPresent("Windows.Foundation.UniversalApiContract", 8))
46+
errorDialog.XamlRoot = MainWindow.Instance.Content.XamlRoot;
47+
48+
await errorDialog.TryShowAsync();
49+
}
3150

3251
async void Manager_DataRequested(DataTransferManager sender, DataRequestedEventArgs args)
3352
{

src/Files.App/Strings/en-US/Resources.resw

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3662,4 +3662,7 @@
36623662
<data name="FailedToRotateImage" xml:space="preserve">
36633663
<value>Failed to rotate the image</value>
36643664
</data>
3665+
<data name="FaildToShareItems" xml:space="preserve">
3666+
<value>Failed to share items</value>
3667+
</data>
36653668
</root>

0 commit comments

Comments
 (0)