@@ -84,12 +84,21 @@ static void initializeActivityTypeMapping(void) {
8484 });
8585}
8686
87- static UIActivityType activityTypeForString (NSString *activityTypeString) {
88- initializeActivityTypeMapping ();
89- if ([activityTypes.allKeys containsObject: activityTypeString]) {
90- return activityTypes[activityTypeString];
87+ static NSArray <UIActivityType> *activityTypesForStrings (NSArray <NSString *> *activityTypeStrings) {
88+ if (activityTypeStrings == nil || activityTypeStrings.count == 0 ) {
89+ return nil ;
9190 }
92- return nil ;
91+ initializeActivityTypeMapping ();
92+ NSMutableArray <UIActivityType> *result = [NSMutableArray array ];
93+
94+ for (NSString *key in activityTypeStrings) {
95+ UIActivityType mapped = activityTypes[key];
96+ if (mapped) {
97+ [result addObject: mapped];
98+ }
99+ }
100+
101+ return [result copy ];
93102}
94103
95104// We need the companion to avoid ARC deadlock
@@ -307,7 +316,8 @@ + (void)registerWithRegistrar:(NSObject<FlutterPluginRegistrar> *)registrar {
307316 NSNumber *originY = arguments[@" originY" ];
308317 NSNumber *originWidth = arguments[@" originWidth" ];
309318 NSNumber *originHeight = arguments[@" originHeight" ];
310- NSArray *excludedActivityType = arguments[@" excludedActivityType" ];
319+ NSArray *excludedActivityTypeStrings = arguments[@" excludedActivityType" ];
320+ NSArray <UIActivityType> *excludedActivityTypes = activityTypesForStrings (excludedActivityTypeStrings);
311321
312322 CGRect originRect = CGRectZero;
313323 if (originX && originY && originWidth && originHeight) {
@@ -396,7 +406,7 @@ + (void)registerWithRegistrar:(NSObject<FlutterPluginRegistrar> *)registrar {
396406
397407 if (uri) {
398408 [self shareUri: uri
399- excludedActivityType: excludedActivityType
409+ excludedActivityTypes: excludedActivityTypes
400410 withController: topViewController
401411 atSource: originRect
402412 toResult: result];
@@ -405,14 +415,14 @@ + (void)registerWithRegistrar:(NSObject<FlutterPluginRegistrar> *)registrar {
405415 withMimeType: mimeTypes
406416 withSubject: shareTitle
407417 withText: shareText
408- excludedActivityType: excludedActivityType
418+ excludedActivityTypes: excludedActivityTypes
409419 withController: rootViewController
410420 atSource: originRect
411421 toResult: result];
412422 } else if (shareText) {
413423 [self shareText: shareText
414424 subject: shareTitle
415- excludedActivityType: excludedActivityType
425+ excludedActivityTypes: excludedActivityTypes
416426 withController: rootViewController
417427 atSource: originRect
418428 toResult: result];
@@ -429,24 +439,15 @@ + (void)registerWithRegistrar:(NSObject<FlutterPluginRegistrar> *)registrar {
429439
430440+ (void )share : (NSArray *)shareItems
431441 withSubject : (NSString *)subject
432- excludedActivityType : (NSArray *)excludedActivityType
442+ excludedActivityTypes : (NSArray <UIActivityType> *)excludedActivityTypes
433443 withController : (UIViewController *)controller
434444 atSource : (CGRect)origin
435445 toResult : (FlutterResult)result {
436446 UIActivityViewSuccessController *activityViewController =
437447 [[UIActivityViewSuccessController alloc ] initWithActivityItems: shareItems
438448 applicationActivities: nil ];
439449
440- if (excludedActivityType.count > 0 ) {
441- NSMutableArray *excludedActivityTypes = [[NSMutableArray alloc ] init ];
442- for (NSString *type in excludedActivityType) {
443- UIActivityType activityType = activityTypeForString (type);
444- if (activityType != nil ) {
445- [excludedActivityTypes addObject: activityType];
446- }
447- }
448- activityViewController.excludedActivityTypes = excludedActivityTypes;
449- }
450+ activityViewController.excludedActivityTypes = excludedActivityTypes;
450451
451452 // Force subject when sharing a raw url or files
452453 if (![subject isKindOfClass: [NSNull class ]]) {
@@ -496,30 +497,30 @@ + (void)share:(NSArray *)shareItems
496497}
497498
498499+ (void )shareUri: (NSString *)uri
499- excludedActivityType : (NSArray *)excludedActivityType
500+ excludedActivityTypes : (NSArray <UIActivityType> *)excludedActivityTypes
500501 withController: (UIViewController *)controller
501502 atSource: (CGRect)origin
502503 toResult: (FlutterResult)result {
503504 NSURL *data = [NSURL URLWithString: uri];
504505 [self share: @[ data ]
505506 withSubject: nil
506- excludedActivityType: excludedActivityType
507+ excludedActivityTypes: excludedActivityTypes
507508 withController: controller
508509 atSource: origin
509510 toResult: result];
510511}
511512
512513+ (void )shareText: (NSString *)shareText
513514 subject: (NSString *)subject
514- excludedActivityType : (NSArray *)excludedActivityType
515+ excludedActivityTypes : (NSArray <UIActivityType> *)excludedActivityTypes
515516 withController: (UIViewController *)controller
516517 atSource: (CGRect)origin
517518 toResult: (FlutterResult)result {
518519 NSObject *data = [[SharePlusData alloc ] initWithSubject: subject
519520 text: shareText];
520521 [self share: @[ data ]
521522 withSubject: subject
522- excludedActivityType: excludedActivityType
523+ excludedActivityTypes: excludedActivityTypes
523524 withController: controller
524525 atSource: origin
525526 toResult: result];
@@ -529,7 +530,7 @@ + (void)shareFiles:(NSArray *)paths
529530 withMimeType: (NSArray *)mimeTypes
530531 withSubject: (NSString *)subject
531532 withText: (NSString *)text
532- excludedActivityType : (NSArray *)excludedActivityType
533+ excludedActivityTypes : (NSArray <UIActivityType> *)excludedActivityTypes
533534 withController: (UIViewController *)controller
534535 atSource: (CGRect)origin
535536 toResult: (FlutterResult)result {
@@ -549,7 +550,7 @@ + (void)shareFiles:(NSArray *)paths
549550
550551 [self share: items
551552 withSubject: subject
552- excludedActivityType: excludedActivityType
553+ excludedActivityTypes: excludedActivityTypes
553554 withController: controller
554555 atSource: origin
555556 toResult: result];
0 commit comments