22using System . Drawing ;
33using System . Threading . Tasks ;
44using Foundation ;
5+ using LinkPresentation ;
56using UIKit ;
67
78namespace Xamarin . Essentials
@@ -14,12 +15,12 @@ static async Task PlatformRequestAsync(ShareTextRequest request)
1415 var items = new List < NSObject > ( ) ;
1516 if ( ! string . IsNullOrWhiteSpace ( request . Text ) )
1617 {
17- items . Add ( new ShareActivityItemSource ( new NSString ( request . Text ) , request . Title ) ) ;
18+ items . Add ( GetShareItem ( new NSString ( request . Text ) , request . Title ) ) ;
1819 }
1920
2021 if ( ! string . IsNullOrWhiteSpace ( request . Uri ) )
2122 {
22- items . Add ( new ShareActivityItemSource ( NSUrl . FromString ( request . Uri ) , request . Title ) ) ;
23+ items . Add ( GetShareItem ( NSUrl . FromString ( request . Uri ) , request . Title ) ) ;
2324 }
2425
2526 var activityController = new UIActivityViewController ( items . ToArray ( ) , null )
@@ -50,14 +51,10 @@ static async Task PlatformRequestAsync(ShareMultipleFilesRequest request)
5051
5152 var items = new List < NSObject > ( ) ;
5253
53- var hasTitel = ! string . IsNullOrWhiteSpace ( request . Title ) ;
5454 foreach ( var file in request . Files )
5555 {
5656 var fileUrl = NSUrl . FromFilename ( file . FullPath ) ;
57- if ( hasTitel )
58- items . Add ( new ShareActivityItemSource ( fileUrl , request . Title ) ) ; // Share with title (subject)
59- else
60- items . Add ( fileUrl ) ; // No title specified
57+ items . Add ( GetShareItem ( fileUrl , request . Title ) ) ;
6158 }
6259
6360 var activityController = new UIActivityViewController ( items . ToArray ( ) , null )
@@ -81,23 +78,40 @@ static async Task PlatformRequestAsync(ShareMultipleFilesRequest request)
8178 await vc . PresentViewControllerAsync ( activityController , true ) ;
8279 await src . Task ;
8380 }
81+
82+ static NSObject GetShareItem ( NSString obj , string title )
83+ => new ShareActivityItemSource ( obj , string . IsNullOrWhiteSpace ( title ) ? obj : title ) ;
84+
85+ static NSObject GetShareItem ( NSObject obj , string title )
86+ => string . IsNullOrWhiteSpace ( title )
87+ ? obj
88+ : new ShareActivityItemSource ( obj , title ) ;
8489 }
8590
8691 class ShareActivityItemSource : UIActivityItemSource
8792 {
8893 readonly NSObject item ;
89- readonly string subject ;
94+ readonly string title ;
9095
91- internal ShareActivityItemSource ( NSObject item , string subject )
96+ internal ShareActivityItemSource ( NSObject item , string title )
9297 {
9398 this . item = item ;
94- this . subject = subject ;
99+ this . title = title ;
95100 }
96101
97102 public override NSObject GetItemForActivity ( UIActivityViewController activityViewController , NSString activityType ) => item ;
98103
99104 public override NSObject GetPlaceholderData ( UIActivityViewController activityViewController ) => item ;
100105
101- public override string GetSubjectForActivity ( UIActivityViewController activityViewController , NSString activityType ) => subject ;
106+ public override LPLinkMetadata GetLinkMetadata ( UIActivityViewController activityViewController )
107+ {
108+ var meta = new LPLinkMetadata ( ) ;
109+ if ( ! string . IsNullOrWhiteSpace ( title ) )
110+ meta . Title = title ;
111+ if ( item is NSUrl url )
112+ meta . Url = url ;
113+
114+ return meta ;
115+ }
102116 }
103117}
0 commit comments