react-native-share 8.2.2 → 9.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/RNShare.podspec +18 -1
  2. package/android/build.gradle +16 -0
  3. package/android/src/main/java/cl/json/{RNShareModule.java → RNShareImpl.java} +52 -60
  4. package/android/src/main/java/cl/json/RNSharePackage.java +34 -17
  5. package/android/src/main/java/cl/json/social/FacebookStoriesShare.java +1 -1
  6. package/android/src/main/java/cl/json/social/InstagramShare.java +7 -1
  7. package/android/src/main/java/cl/json/social/InstagramStoriesShare.java +1 -1
  8. package/android/src/main/java/cl/json/social/ShareIntent.java +11 -6
  9. package/android/src/main/java/cl/json/social/SingleShareIntent.java +15 -6
  10. package/android/src/main/java/cl/json/social/TargetChosenReceiver.java +23 -17
  11. package/android/src/newarch/cl/json/RNShare.java +55 -0
  12. package/android/src/oldarch/cl/json/RNShare.java +52 -0
  13. package/ios/EmailShare.h +1 -1
  14. package/ios/EmailShare.m +5 -5
  15. package/ios/FacebookStories.h +1 -1
  16. package/ios/FacebookStories.m +4 -4
  17. package/ios/GenericShare.h +1 -1
  18. package/ios/GenericShare.m +5 -5
  19. package/ios/GooglePlusShare.h +1 -1
  20. package/ios/GooglePlusShare.m +4 -4
  21. package/ios/InstagramShare.h +3 -3
  22. package/ios/InstagramShare.m +16 -16
  23. package/ios/InstagramStories.h +1 -1
  24. package/ios/InstagramStories.m +4 -4
  25. package/ios/MessengerShare.h +1 -1
  26. package/ios/MessengerShare.m +3 -3
  27. package/ios/RNShare.h +16 -2
  28. package/ios/{RNShare.m → RNShare.mm} +71 -25
  29. package/ios/TelegramShare.h +1 -1
  30. package/ios/TelegramShare.m +4 -4
  31. package/ios/ViberShare.h +1 -1
  32. package/ios/ViberShare.m +4 -4
  33. package/ios/WhatsAppShare.h +1 -1
  34. package/ios/WhatsAppShare.m +8 -8
  35. package/lib/commonjs/components/Button.js +21 -25
  36. package/lib/commonjs/components/Button.js.map +1 -1
  37. package/lib/commonjs/components/Overlay.js +7 -15
  38. package/lib/commonjs/components/Overlay.js.map +1 -1
  39. package/lib/commonjs/components/ShareSheet.js +10 -21
  40. package/lib/commonjs/components/ShareSheet.js.map +1 -1
  41. package/lib/commonjs/components/Sheet.js +7 -13
  42. package/lib/commonjs/components/Sheet.js.map +1 -1
  43. package/lib/commonjs/helpers/requireAndAskPermissions.js +6 -16
  44. package/lib/commonjs/helpers/requireAndAskPermissions.js.map +1 -1
  45. package/lib/commonjs/index.js +40 -68
  46. package/lib/commonjs/index.js.map +1 -1
  47. package/lib/commonjs/types.js +9 -12
  48. package/lib/commonjs/types.js.map +1 -1
  49. package/lib/module/components/Button.js +19 -18
  50. package/lib/module/components/Button.js.map +1 -1
  51. package/lib/module/components/Overlay.js +5 -7
  52. package/lib/module/components/Overlay.js.map +1 -1
  53. package/lib/module/components/ShareSheet.js +8 -10
  54. package/lib/module/components/ShareSheet.js.map +1 -1
  55. package/lib/module/components/Sheet.js +5 -6
  56. package/lib/module/components/Sheet.js.map +1 -1
  57. package/lib/module/helpers/requireAndAskPermissions.js +6 -15
  58. package/lib/module/helpers/requireAndAskPermissions.js.map +1 -1
  59. package/lib/module/index.js +31 -50
  60. package/lib/module/index.js.map +1 -1
  61. package/lib/module/types.js +8 -9
  62. package/lib/module/types.js.map +1 -1
  63. package/lib/typescript/codegenSpec/NativeRNShare.d.ts +39 -0
  64. package/lib/typescript/{index.d.ts → src/index.d.ts} +17 -17
  65. package/lib/typescript/{types.d.ts → src/types.d.ts} +1 -0
  66. package/package.json +11 -3
  67. package/src/helpers/requireAndAskPermissions.ts +9 -9
  68. package/src/index.tsx +46 -60
  69. package/src/types.ts +1 -0
  70. package/CHANGELOG.md +0 -133
  71. package/lib/commonjs/typings/react-native.d.js +0 -4
  72. package/lib/commonjs/typings/react-native.d.js.map +0 -1
  73. package/lib/module/typings/react-native.d.js +0 -2
  74. package/lib/module/typings/react-native.d.js.map +0 -1
  75. package/src/typings/react-native.d.ts +0 -58
  76. package/windows/.gitignore +0 -92
  77. /package/lib/typescript/{components → src/components}/Button.d.ts +0 -0
  78. /package/lib/typescript/{components → src/components}/Overlay.d.ts +0 -0
  79. /package/lib/typescript/{components → src/components}/ShareSheet.d.ts +0 -0
  80. /package/lib/typescript/{components → src/components}/Sheet.d.ts +0 -0
  81. /package/lib/typescript/{helpers → src/helpers}/requireAndAskPermissions.d.ts +0 -0
package/ios/EmailShare.m CHANGED
@@ -14,8 +14,8 @@
14
14
 
15
15
 
16
16
  - (void)shareSingle:(NSDictionary *)options
17
- failureCallback:(RCTResponseErrorBlock)failureCallback
18
- successCallback:(RCTResponseSenderBlock)successCallback {
17
+ reject:(RCTPromiseRejectBlock)reject
18
+ resolve:(RCTPromiseResolveBlock)resolve {
19
19
 
20
20
  NSLog(@"Try open view");
21
21
 
@@ -30,7 +30,7 @@
30
30
  NSString *errorMessage = @"Mail services are not available.";
31
31
  NSDictionary *userInfo = @{NSLocalizedFailureReasonErrorKey: NSLocalizedString(errorMessage, nil)};
32
32
  NSError *error = [NSError errorWithDomain:@"com.rnshare" code:1 userInfo:userInfo];
33
- failureCallback(error);
33
+ reject(@"com.rnshare",@"Mail services are not available.",error);
34
34
  return;
35
35
  }
36
36
 
@@ -67,7 +67,7 @@
67
67
  options:(NSDataReadingOptions)0
68
68
  error:&error];
69
69
  if (!data) {
70
- failureCallback(error);
70
+ reject(@"no data",@"no data",error);
71
71
  return;
72
72
  }
73
73
 
@@ -131,7 +131,7 @@
131
131
  // on the finish delegate.
132
132
  // For now, call it here for consistency with
133
133
  // GenericShare.shareSingle
134
- successCallback(@[@true, @""]);
134
+ resolve(@[@true, @""]);
135
135
  });
136
136
  }
137
137
  }
@@ -20,5 +20,5 @@
20
20
  #import <React/RCTUtils.h>
21
21
  @interface FacebookStories : NSObject <RCTBridgeModule>
22
22
 
23
- - (void *) shareSingle:(NSDictionary *)options failureCallback:(RCTResponseErrorBlock)failureCallback successCallback:(RCTResponseSenderBlock)successCallback;
23
+ - (void *) shareSingle:(NSDictionary *)options reject:(RCTPromiseRejectBlock)reject resolve:(RCTPromiseResolveBlock)resolve;
24
24
  @end
@@ -16,13 +16,13 @@
16
16
  RCT_EXPORT_MODULE();
17
17
 
18
18
  - (void)shareSingle:(NSDictionary *)options
19
- failureCallback:(RCTResponseErrorBlock)failureCallback
20
- successCallback:(RCTResponseSenderBlock)successCallback {
19
+ reject:(RCTPromiseRejectBlock)reject
20
+ resolve:(RCTPromiseResolveBlock)resolve {
21
21
 
22
22
  NSURL *urlScheme = [NSURL URLWithString:@"facebook-stories://share"];
23
23
  if (![[UIApplication sharedApplication] canOpenURL:urlScheme]) {
24
24
  NSError* error = [self fallbackFacebook];
25
- failureCallback(error);
25
+ reject(@"cannot open URL",@"cannot open URL",error);
26
26
  return;
27
27
  }
28
28
 
@@ -80,7 +80,7 @@ RCT_EXPORT_MODULE();
80
80
  [[UIPasteboard generalPasteboard] setItems:pasteboardItems options:pasteboardOptions];
81
81
  [[UIApplication sharedApplication] openURL:urlScheme options:@{} completionHandler:nil];
82
82
 
83
- successCallback(@[@true, @""]);
83
+ resolve(@[@true, @""]);
84
84
  }
85
85
 
86
86
  - (NSError*)fallbackFacebook {
@@ -21,6 +21,6 @@
21
21
  #import <React/RCTUtils.h>
22
22
  @interface GenericShare : NSObject <RCTBridgeModule>
23
23
 
24
- - (void) shareSingle:(NSDictionary *)options failureCallback:(RCTResponseErrorBlock)failureCallback successCallback:(RCTResponseSenderBlock)successCallback serviceType:(NSString*)serviceType
24
+ - (void) shareSingle:(NSDictionary *)options reject:(RCTPromiseRejectBlock)reject resolve:(RCTPromiseResolveBlock)resolve serviceType:(NSString*)serviceType
25
25
  inAppBaseUrl:(NSString *)inAppBaseUrl;
26
26
  @end
@@ -11,8 +11,8 @@
11
11
  @implementation GenericShare
12
12
  RCT_EXPORT_MODULE();
13
13
  - (void)shareSingle:(NSDictionary *)options
14
- failureCallback:(RCTResponseErrorBlock)failureCallback
15
- successCallback:(RCTResponseSenderBlock)successCallback
14
+ reject:(RCTPromiseRejectBlock)reject
15
+ resolve:(RCTPromiseResolveBlock)resolve
16
16
  serviceType:(NSString*)serviceType
17
17
  inAppBaseUrl:(NSString *)inAppBaseUrl {
18
18
 
@@ -28,7 +28,7 @@
28
28
  options:(NSDataReadingOptions)0
29
29
  error:&error];
30
30
  if (!data) {
31
- failureCallback(error);
31
+ reject(@"no data",@"no data",error);
32
32
  return;
33
33
  }
34
34
  UIImage *image = [UIImage imageWithData: data];
@@ -47,14 +47,14 @@
47
47
 
48
48
  UIViewController *ctrl = RCTPresentedViewController();
49
49
  [ctrl presentViewController:composeController animated:YES completion:Nil];
50
- successCallback(@[@true, @""]);
50
+ resolve(@[@true, @""]);
51
51
  } else {
52
52
  NSString *errorMessage = @"Not installed";
53
53
  NSDictionary *userInfo = @{NSLocalizedFailureReasonErrorKey: NSLocalizedString(errorMessage, nil)};
54
54
  NSError *error = [NSError errorWithDomain:@"com.rnshare" code:1 userInfo:userInfo];
55
55
 
56
56
  NSLog(@"%@", errorMessage);
57
- failureCallback(error);
57
+ reject(@"com.rnshare",@"Not installed",error);
58
58
 
59
59
  NSString *escapedString = [options[@"message"] stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLHostAllowedCharacterSet]];
60
60
 
@@ -18,5 +18,5 @@
18
18
  #import <React/RCTUtils.h>
19
19
  @interface GooglePlusShare : NSObject <RCTBridgeModule>
20
20
 
21
- - (void) shareSingle:(NSDictionary *)options failureCallback:(RCTResponseErrorBlock)failureCallback successCallback:(RCTResponseSenderBlock)successCallback;
21
+ - (void) shareSingle:(NSDictionary *)options reject:(RCTPromiseRejectBlock)reject resolve:(RCTPromiseResolveBlock)resolve;
22
22
  @end
@@ -11,8 +11,8 @@
11
11
  @implementation GooglePlusShare
12
12
  RCT_EXPORT_MODULE();
13
13
  - (void)shareSingle:(NSDictionary *)options
14
- failureCallback:(RCTResponseErrorBlock)failureCallback
15
- successCallback:(RCTResponseSenderBlock)successCallback {
14
+ reject:(RCTPromiseRejectBlock)reject
15
+ resolve:(RCTPromiseResolveBlock)resolve {
16
16
 
17
17
  NSLog(@"Try open view");
18
18
 
@@ -22,7 +22,7 @@
22
22
 
23
23
  if ([[UIApplication sharedApplication] canOpenURL: gplusURL]) {
24
24
  [[UIApplication sharedApplication] openURL:gplusURL];
25
- successCallback(@[@true, @""]);
25
+ resolve(@[@true, @""]);
26
26
  } else {
27
27
  // Cannot open gplus
28
28
  NSString *errorMessage = @"Not installed";
@@ -30,7 +30,7 @@
30
30
  NSError *error = [NSError errorWithDomain:@"com.rnshare" code:1 userInfo:userInfo];
31
31
 
32
32
  NSLog(errorMessage);
33
- failureCallback(error);
33
+ reject(@"com.rnshare",errorMessage,error);
34
34
  }
35
35
  }
36
36
  }
@@ -18,8 +18,8 @@
18
18
  #import <React/RCTUtils.h>
19
19
  @interface InstagramShare : NSObject <RCTBridgeModule>
20
20
 
21
- - (void) shareSingle:(NSDictionary *)options failureCallback:(RCTResponseErrorBlock)failureCallback successCallback:(RCTResponseSenderBlock)successCallback;
21
+ - (void) shareSingle:(NSDictionary *)options reject:(RCTPromiseRejectBlock)reject resolve:(RCTPromiseResolveBlock)resolve;
22
22
  - (void)shareSingleImage:(NSDictionary *)options
23
- failureCallback:(RCTResponseErrorBlock)failureCallback
24
- successCallback:(RCTResponseSenderBlock)successCallback;
23
+ reject:(RCTPromiseRejectBlock)reject
24
+ resolve:(RCTPromiseResolveBlock)resolve;
25
25
  @end
@@ -12,8 +12,8 @@
12
12
  @implementation InstagramShare
13
13
  RCT_EXPORT_MODULE();
14
14
  - (void)shareSingle:(NSDictionary *)options
15
- failureCallback:(RCTResponseErrorBlock)failureCallback
16
- successCallback:(RCTResponseSenderBlock)successCallback {
15
+ reject:(RCTPromiseRejectBlock)reject
16
+ resolve:(RCTPromiseResolveBlock)resolve {
17
17
 
18
18
  NSLog(@"Try open view");
19
19
 
@@ -45,7 +45,7 @@
45
45
 
46
46
  if ([[UIApplication sharedApplication] canOpenURL: shareURL]) {
47
47
  [[UIApplication sharedApplication] openURL: shareURL];
48
- successCallback(@[@true, @""]);
48
+ resolve(@[@true, @""]);
49
49
  } else {
50
50
  // Cannot open instagram
51
51
  NSString *stringURL = @"https://itunes.apple.com/app/instagram/id389801252";
@@ -58,13 +58,13 @@
58
58
  NSError *error = [NSError errorWithDomain:@"com.rnshare" code:1 userInfo:userInfo];
59
59
 
60
60
  NSLog(@"%@", errorMessage);
61
- failureCallback(error);
61
+ reject(@"com.rnshare",@"Not installed",error);
62
62
  }
63
63
  }
64
64
 
65
65
  - (void)shareSingleImage:(NSDictionary *)options
66
- failureCallback:(RCTResponseErrorBlock)failureCallback
67
- successCallback:(RCTResponseSenderBlock)successCallback {
66
+ reject:(RCTPromiseRejectBlock)reject
67
+ resolve:(RCTPromiseResolveBlock)resolve {
68
68
 
69
69
  UIImage *image;
70
70
  NSURL *imageURL = [RCTConvert NSURL:options[@"url"]];
@@ -75,23 +75,23 @@
75
75
  options:(NSDataReadingOptions)0
76
76
  error:&error];
77
77
  if (!data) {
78
- failureCallback(error);
78
+ reject(@"com.rnshare",@"no data",error);
79
79
  return;
80
80
  }
81
81
  image = [UIImage imageWithData: data];
82
82
  [self savePictureAndOpenInstagram: image
83
- failureCallback: failureCallback
84
- successCallback: successCallback];
83
+ reject: reject
84
+ resolve: resolve];
85
85
  }
86
86
  } else {
87
87
  [[UIApplication sharedApplication] openURL: [NSURL URLWithString:@"instagram://camera"]];
88
- successCallback(@[@true, @""]);
88
+ resolve(@[@true, @""]);
89
89
  }
90
90
  }
91
91
 
92
92
  -(void)savePictureAndOpenInstagram:(UIImage *)base64Image
93
- failureCallback:(RCTResponseErrorBlock)failureCallback
94
- successCallback:(RCTResponseSenderBlock)successCallback {
93
+ reject:(RCTPromiseRejectBlock)reject
94
+ resolve:(RCTPromiseResolveBlock)resolve {
95
95
 
96
96
  NSURL *URL = [self fileURLWithTemporaryImageData:UIImageJPEGRepresentation(base64Image, 0.9)];
97
97
  __block PHAssetChangeRequest *_mChangeRequest = nil;
@@ -112,15 +112,15 @@
112
112
  if (@available(iOS 10.0, *)) {
113
113
  [[UIApplication sharedApplication] openURL:instagramURL options:@{} completionHandler:NULL];
114
114
  }
115
- if (successCallback != NULL) {
116
- successCallback(@[@true, @""]);
115
+ if (resolve != NULL) {
116
+ resolve(@[@true, @""]);
117
117
  }
118
118
  }
119
119
  }
120
120
  else {
121
121
  //Error while writing
122
- if (failureCallback != NULL) {
123
- failureCallback(error);
122
+ if (reject != NULL) {
123
+ reject(@"com.rnshare",@"error",error);
124
124
  }
125
125
  }
126
126
  }];
@@ -19,5 +19,5 @@
19
19
  #import <React/RCTUtils.h>
20
20
  @interface InstagramStories : NSObject <RCTBridgeModule>
21
21
 
22
- - (void *) shareSingle:(NSDictionary *)options failureCallback:(RCTResponseErrorBlock)failureCallback successCallback:(RCTResponseSenderBlock)successCallback;
22
+ - (void *) shareSingle:(NSDictionary *)options reject:(RCTPromiseRejectBlock)reject resolve:(RCTPromiseResolveBlock)resolve;
23
23
  @end
@@ -15,13 +15,13 @@
15
15
  RCT_EXPORT_MODULE();
16
16
 
17
17
  - (void)shareSingle:(NSDictionary *)options
18
- failureCallback:(RCTResponseErrorBlock)failureCallback
19
- successCallback:(RCTResponseSenderBlock)successCallback {
18
+ reject:(RCTPromiseRejectBlock)reject
19
+ resolve:(RCTPromiseResolveBlock)resolve {
20
20
 
21
21
  NSURL *urlScheme = [NSURL URLWithString:[NSString stringWithFormat:@"instagram-stories://share?source_application=%@", options[@"appId"]]];
22
22
  if (![[UIApplication sharedApplication] canOpenURL:urlScheme]) {
23
23
  NSError* error = [self fallbackInstagram];
24
- failureCallback(error);
24
+ reject(@"cannot open URL",@"cannot open URL",error);
25
25
  return;
26
26
  }
27
27
 
@@ -77,7 +77,7 @@ RCT_EXPORT_MODULE();
77
77
  [[UIPasteboard generalPasteboard] setItems:pasteboardItems options:pasteboardOptions];
78
78
  [[UIApplication sharedApplication] openURL:urlScheme options:@{} completionHandler:nil];
79
79
 
80
- successCallback(@[@true, @""]);
80
+ resolve(@[@true, @""]);
81
81
  }
82
82
 
83
83
  - (NSError*)fallbackInstagram {
@@ -4,5 +4,5 @@
4
4
 
5
5
  @interface MessengerShare : NSObject <RCTBridgeModule>
6
6
 
7
- - (void)shareSingle:(NSDictionary *)options failureCallback:(RCTResponseErrorBlock)failureCallback successCallback:(RCTResponseSenderBlock)successCallback;
7
+ - (void)shareSingle:(NSDictionary *)options reject:(RCTPromiseRejectBlock)reject resolve:(RCTPromiseResolveBlock)resolve;
8
8
  @end
@@ -5,7 +5,7 @@
5
5
  @implementation MessengerShare
6
6
  RCT_EXPORT_MODULE();
7
7
 
8
- - (void)shareSingle:(NSDictionary *)options failureCallback:(RCTResponseErrorBlock)failureCallback successCallback:(RCTResponseSenderBlock)successCallback {
8
+ - (void)shareSingle:(NSDictionary *)options reject:(RCTPromiseRejectBlock)reject resolve:(RCTPromiseResolveBlock)resolve {
9
9
 
10
10
  if ([options objectForKey:@"url"] && [options objectForKey:@"url"] != [NSNull null]) {
11
11
 
@@ -15,7 +15,7 @@ RCT_EXPORT_MODULE();
15
15
  if ([[UIApplication sharedApplication] canOpenURL:url]) {
16
16
  [[UIApplication sharedApplication] openURL:url options:@{} completionHandler:nil];
17
17
 
18
- successCallback(@[@true, @""]);
18
+ resolve(@[@true, @""]);
19
19
  } else {
20
20
  // Cannot open Messenger
21
21
  NSString *contentLinkString = @"https://apps.apple.com/us/app/messenger/id454638411";
@@ -27,7 +27,7 @@ RCT_EXPORT_MODULE();
27
27
  NSError *error = [NSError errorWithDomain:@"com.rnshare" code:1 userInfo:userInfo];
28
28
 
29
29
  NSLog(@"%@", errorMessage);
30
- failureCallback(error);
30
+ reject(@"Not installed",@"Not installed",error);
31
31
  }
32
32
  }
33
33
  }
package/ios/RNShare.h CHANGED
@@ -1,7 +1,21 @@
1
- @import UIKit;
2
- // import RCTBridgeModule
1
+ //@import UIKit;
2
+
3
+ #if __has_include(<React/RCTBridgeModule.h>)
3
4
  #import <React/RCTBridgeModule.h>
5
+ #elif __has_include("RCTBridgeModule.h")
6
+ #import "RCTBridgeModule.h"
7
+ #else
8
+ #import "React/RCTBridgeModule.h"
9
+ #endif
10
+
11
+ #if RCT_NEW_ARCH_ENABLED
12
+ #import <React-Codegen/RNShareSpec/RNShareSpec.h>
13
+ #endif
4
14
 
5
15
  @interface RNShare : NSObject <RCTBridgeModule, UIDocumentPickerDelegate>
16
+ @end
6
17
 
18
+ #if RCT_NEW_ARCH_ENABLED
19
+ @interface RNShare () <NativeRNShareSpec, UIDocumentPickerDelegate>
7
20
  @end
21
+ #endif
@@ -23,10 +23,14 @@
23
23
  #import "RNShareActivityItemSource.h"
24
24
  #import "RNShareUtils.h"
25
25
 
26
+ #if RCT_NEW_ARCH_ENABLED
27
+ #import <RNShareSpec/RNShareSpec.h>
28
+ #endif
29
+
26
30
  @implementation RNShare
27
31
 
28
- RCTResponseErrorBlock rejectBlock;
29
- RCTResponseSenderBlock resolveBlock;
32
+ RCTPromiseRejectBlock rejectBlock;
33
+ RCTPromiseResolveBlock resolveBlock;
30
34
 
31
35
  // we need this since this controller
32
36
  // may implement a delegate and could be garbage collected
@@ -95,9 +99,13 @@ RCT_EXPORT_MODULE()
95
99
  };
96
100
  }
97
101
 
102
+ - (NSDictionary*) getConstants {
103
+ return [self constantsToExport];
104
+ }
105
+
98
106
  RCT_EXPORT_METHOD(shareSingle:(NSDictionary *)options
99
- failureCallback:(RCTResponseErrorBlock)failureCallback
100
- successCallback:(RCTResponseSenderBlock)successCallback)
107
+ resolve:(RCTPromiseResolveBlock)resolve
108
+ reject:(RCTPromiseRejectBlock)reject)
101
109
  {
102
110
  NSString *social = [RCTConvert NSString:options[@"social"]];
103
111
  if (social) {
@@ -105,13 +113,13 @@ RCT_EXPORT_METHOD(shareSingle:(NSDictionary *)options
105
113
  if([social isEqualToString:@"facebook"]) {
106
114
  NSLog(@"TRY OPEN FACEBOOK");
107
115
  GenericShare *shareCtl = [[GenericShare alloc] init];
108
- [shareCtl shareSingle:options failureCallback: failureCallback successCallback: successCallback serviceType: SLServiceTypeFacebook inAppBaseUrl:@"fb://"];
116
+ [shareCtl shareSingle:options reject: reject resolve: resolve serviceType: SLServiceTypeFacebook inAppBaseUrl:@"fb://"];
109
117
  } else if([social isEqualToString:@"facebookstories"]) {
110
118
  NSString *appId = [RCTConvert NSString:options[@"appId"]];
111
119
  if (appId) {
112
120
  NSLog(@"TRY OPEN FACEBOOK STORIES");
113
121
  FacebookStories *shareCtl = [[FacebookStories alloc] init];
114
- [shareCtl shareSingle:options failureCallback: failureCallback successCallback: successCallback];
122
+ [shareCtl shareSingle:options reject: reject resolve: resolve];
115
123
  } else {
116
124
  RCTLogError(@"key 'appId' missing in options");
117
125
  return;
@@ -119,42 +127,42 @@ RCT_EXPORT_METHOD(shareSingle:(NSDictionary *)options
119
127
  } else if([social isEqualToString:@"twitter"]) {
120
128
  NSLog(@"TRY OPEN Twitter");
121
129
  GenericShare *shareCtl = [[GenericShare alloc] init];
122
- [shareCtl shareSingle:options failureCallback: failureCallback successCallback: successCallback serviceType: SLServiceTypeTwitter inAppBaseUrl:@"twitter://"];
130
+ [shareCtl shareSingle:options reject: reject resolve: resolve serviceType: SLServiceTypeTwitter inAppBaseUrl:@"twitter://"];
123
131
  } else if([social isEqualToString:@"googleplus"]) {
124
132
  NSLog(@"TRY OPEN google plus");
125
133
  GooglePlusShare *shareCtl = [[GooglePlusShare alloc] init];
126
- [shareCtl shareSingle:options failureCallback: failureCallback successCallback: successCallback];
134
+ [shareCtl shareSingle:options reject: reject resolve: resolve];
127
135
  } else if([social isEqualToString:@"whatsapp"]) {
128
136
  NSLog(@"TRY OPEN whatsapp");
129
137
  WhatsAppShare *shareCtl = [[WhatsAppShare alloc] init];
130
- [shareCtl shareSingle:options failureCallback: failureCallback successCallback: successCallback];
138
+ [shareCtl shareSingle:options reject: reject resolve: resolve];
131
139
  } else if([social isEqualToString:@"instagram"]) {
132
140
  NSLog(@"TRY OPEN instagram");
133
141
  InstagramShare *shareCtl = [[InstagramShare alloc] init];
134
142
  if([self isImageMimeType:options[@"url"]]) {// Condition to handle image
135
- [shareCtl shareSingleImage:options failureCallback: failureCallback successCallback: successCallback];
143
+ [shareCtl shareSingleImage:options reject: reject resolve: resolve];
136
144
  } else {
137
- [shareCtl shareSingle:options failureCallback: failureCallback successCallback: successCallback];
145
+ [shareCtl shareSingle:options reject: reject resolve: resolve];
138
146
  }
139
147
  } else if([social isEqualToString:@"instagramstories"]) {
140
148
  NSLog(@"TRY OPEN instagram-stories");
141
149
  InstagramStories *shareCtl = [[InstagramStories alloc] init];
142
- [shareCtl shareSingle:options failureCallback: failureCallback successCallback: successCallback];
150
+ [shareCtl shareSingle:options reject: reject resolve: resolve];
143
151
  } else if([social isEqualToString:@"telegram"]) {
144
152
  NSLog(@"TRY OPEN telegram");
145
153
  TelegramShare *shareCtl = [[TelegramShare alloc] init];
146
- [shareCtl shareSingle:options failureCallback: failureCallback successCallback: successCallback];
154
+ [shareCtl shareSingle:options reject: reject resolve: resolve];
147
155
  } else if([social isEqualToString:@"email"]) {
148
156
  NSLog(@"TRY OPEN email");
149
- [shareCtl shareSingle:options failureCallback: failureCallback successCallback: successCallback];
157
+ [shareCtl shareSingle:options reject: reject resolve: resolve];
150
158
  } else if([social isEqualToString:@"viber"]) {
151
159
  NSLog(@"TRY OPEN viber");
152
160
  ViberShare *shareCtl = [[ViberShare alloc] init];
153
- [shareCtl shareSingle:options failureCallback: failureCallback successCallback: successCallback];
161
+ [shareCtl shareSingle:options reject: reject resolve: resolve];
154
162
  } else if([social isEqualToString:@"messenger"]) {
155
163
  NSLog(@"TRY OPEN messenger");
156
164
  MessengerShare *shareCtl = [[MessengerShare alloc] init];
157
- [shareCtl shareSingle:options failureCallback: failureCallback successCallback: successCallback];
165
+ [shareCtl shareSingle:options reject: reject resolve: resolve];
158
166
  }
159
167
  } else {
160
168
  RCTLogError(@"key 'social' missing in options");
@@ -163,8 +171,8 @@ RCT_EXPORT_METHOD(shareSingle:(NSDictionary *)options
163
171
  }
164
172
 
165
173
  RCT_EXPORT_METHOD(open:(NSDictionary *)options
166
- failureCallback:(RCTResponseErrorBlock)failureCallback
167
- successCallback:(RCTResponseSenderBlock)successCallback)
174
+ resolve:(RCTPromiseResolveBlock)resolve
175
+ reject:(RCTPromiseRejectBlock)reject)
168
176
  {
169
177
  if (RCTRunningInAppExtension()) {
170
178
  RCTLogError(@"Unable to show action sheet from app extension");
@@ -189,7 +197,7 @@ RCT_EXPORT_METHOD(open:(NSDictionary *)options
189
197
  options:(NSDataReadingOptions)0
190
198
  error:&error];
191
199
  if (!data) {
192
- failureCallback(error);
200
+ reject(@"no data",@"no data",error);
193
201
  return;
194
202
  }
195
203
  if (saveToFiles) {
@@ -236,8 +244,8 @@ RCT_EXPORT_METHOD(open:(NSDictionary *)options
236
244
  return;
237
245
  }
238
246
  if (@available(iOS 11.0, macCatalyst 13.1, *)) {
239
- resolveBlock = successCallback;
240
- rejectBlock = failureCallback;
247
+ resolveBlock = resolve;
248
+ rejectBlock = reject;
241
249
  UIDocumentPickerViewController *documentPicker = nil;
242
250
  if (@available(iOS 15.0, macCatalyst 15.0, *)) {
243
251
  documentPicker = [[UIDocumentPickerViewController alloc] initForExportingURLs:urls asCopy:YES];
@@ -276,9 +284,12 @@ RCT_EXPORT_METHOD(open:(NSDictionary *)options
276
284
 
277
285
 
278
286
  if (activityError) {
279
- failureCallback(activityError);
287
+ reject(@"error",@"activityError",activityError);
280
288
  } else {
281
- successCallback(@[@(completed), RCTNullIfNil(activityType)]);
289
+ resolve(@{
290
+ @"success": @(completed),
291
+ @"message": (RCTNullIfNil(activityType) ?: @"")
292
+ });
282
293
  }
283
294
 
284
295
  // clear the completion handler to prevent cycles
@@ -300,17 +311,52 @@ RCT_EXPORT_METHOD(open:(NSDictionary *)options
300
311
  shareController.view.tintColor = [RCTConvert UIColor:options[@"tintColor"]];
301
312
  }
302
313
 
314
+
315
+ RCT_EXPORT_METHOD(isBase64File:(NSString *)url
316
+ resolve:(RCTPromiseResolveBlock)resolve
317
+ reject:(RCTPromiseRejectBlock)reject)
318
+ {
319
+ NSError *err = [NSError errorWithDomain:@"NOT IMPLEMENTED" code: 500
320
+ userInfo:@{NSLocalizedDescriptionKey:@"isBase64File is not implemented for iOS"}];
321
+ reject(@"NOT IMPLEMENTED",@"NOT IMPLEMENTED",err);
322
+ }
323
+
324
+
325
+ RCT_EXPORT_METHOD(isPackageInstalled:(NSString *)packagename
326
+ resolve:(RCTPromiseResolveBlock)resolve
327
+ reject:(RCTPromiseRejectBlock)reject)
328
+ {
329
+ NSError *err = [NSError errorWithDomain:@"NOT IMPLEMENTED" code: 500
330
+ userInfo:@{NSLocalizedDescriptionKey:@"isPackageInstalled is not implemented for iOS"}];
331
+ reject(@"NOT IMPLEMENTED",@"NOT IMPLEMENTED",err);
332
+ }
333
+
303
334
  - (void)documentPickerWasCancelled:(UIDocumentPickerViewController *)controller {
304
335
  if (rejectBlock) {
305
336
  NSError *error = [NSError errorWithDomain:@"CANCELLED" code: 500 userInfo:@{NSLocalizedDescriptionKey:@"PICKER_WAS_CANCELLED"}];
306
- rejectBlock(error);
337
+ rejectBlock(@"CANCELLED",@"CANCELLED",error);
307
338
  }
308
339
  }
309
340
 
310
341
  - (void)documentPicker:(UIDocumentPickerViewController *)controller didPickDocumentsAtURLs:(NSArray<NSURL *> *)urls {
311
342
  if (resolveBlock) {
312
- resolveBlock(@[@(YES), @"com.apple.DocumentsApp"]);
343
+ resolveBlock(@{
344
+ @"success": @(YES),
345
+ @"message": @"com.apple.DocumentsApp"
346
+ });
313
347
  }
314
348
  }
315
349
 
350
+ # pragma mark - New Architecture
351
+
352
+ #if RCT_NEW_ARCH_ENABLED
353
+
354
+ - (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
355
+ (const facebook::react::ObjCTurboModule::InitParams &)params
356
+ {
357
+ return std::make_shared<facebook::react::NativeRNShareSpecJSI>(params);
358
+ }
359
+
360
+ #endif
361
+
316
362
  @end
@@ -18,6 +18,6 @@
18
18
  #import <React/RCTUtils.h>
19
19
  @interface TelegramShare : NSObject <RCTBridgeModule>
20
20
 
21
- - (void) shareSingle:(NSDictionary *)options failureCallback:(RCTResponseErrorBlock)failureCallback successCallback:(RCTResponseSenderBlock)successCallback;
21
+ - (void) shareSingle:(NSDictionary *)options reject:(RCTPromiseRejectBlock)reject resolve:(RCTPromiseResolveBlock)resolve;
22
22
 
23
23
  @end
@@ -12,8 +12,8 @@
12
12
  @implementation TelegramShare
13
13
  RCT_EXPORT_MODULE();
14
14
  - (void)shareSingle:(NSDictionary *)options
15
- failureCallback:(RCTResponseErrorBlock)failureCallback
16
- successCallback:(RCTResponseSenderBlock)successCallback {
15
+ reject:(RCTPromiseRejectBlock)reject
16
+ resolve:(RCTPromiseResolveBlock)resolve {
17
17
 
18
18
  NSString *text = [RCTConvert NSString:options[@"message"]];
19
19
  text = (NSString*)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(NULL,(CFStringRef) text, NULL,CFSTR("!*'();:@&=+$,/?%#[]"),kCFStringEncodingUTF8));
@@ -28,7 +28,7 @@
28
28
 
29
29
  if ([[UIApplication sharedApplication] canOpenURL: shareURL]) {
30
30
  [[UIApplication sharedApplication] openURL: shareURL];
31
- successCallback(@[@true, @""]);
31
+ resolve(@[@true, @""]);
32
32
  } else {
33
33
  // Cannot open telegram
34
34
  NSString *stringURL = @"https://itunes.apple.com/app/telegram-messenger/id686449807";
@@ -41,7 +41,7 @@
41
41
  NSError *error = [NSError errorWithDomain:@"com.rnshare" code:1 userInfo:userInfo];
42
42
 
43
43
  NSLog(@"%@", errorMessage);
44
- failureCallback(error);
44
+ reject(@"Not installed",@"Not installed",error);
45
45
  }
46
46
  }
47
47
 
package/ios/ViberShare.h CHANGED
@@ -16,6 +16,6 @@
16
16
  #import <React/RCTUtils.h>
17
17
  @interface ViberShare : NSObject <RCTBridgeModule>
18
18
 
19
- - (void) shareSingle:(NSDictionary *)options failureCallback:(RCTResponseErrorBlock)failureCallback successCallback:(RCTResponseSenderBlock)successCallback;
19
+ - (void) shareSingle:(NSDictionary *)options reject:(RCTPromiseRejectBlock)reject resolve:(RCTPromiseResolveBlock)resolve;
20
20
 
21
21
  @end
package/ios/ViberShare.m CHANGED
@@ -10,8 +10,8 @@
10
10
  @implementation ViberShare
11
11
  RCT_EXPORT_MODULE();
12
12
  - (void)shareSingle:(NSDictionary *)options
13
- failureCallback:(RCTResponseErrorBlock)failureCallback
14
- successCallback:(RCTResponseSenderBlock)successCallback {
13
+ reject:(RCTPromiseRejectBlock)reject
14
+ resolve:(RCTPromiseResolveBlock)resolve {
15
15
 
16
16
  NSString *text = [RCTConvert NSString:options[@"message"]];
17
17
  text = (NSString*)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(NULL,(CFStringRef) text, NULL,CFSTR("!*'();:@&=+$,/?%#[]"),kCFStringEncodingUTF8));
@@ -26,7 +26,7 @@
26
26
 
27
27
  if ([[UIApplication sharedApplication] canOpenURL: shareURL]) {
28
28
  [[UIApplication sharedApplication] openURL: shareURL];
29
- successCallback(@[@true, @""]);
29
+ resolve(@[@true, @""]);
30
30
  } else {
31
31
  // Cannot open viber
32
32
  NSString *stringURL = @"https://apps.apple.com/app/viber-messenger-chats-calls/id382617920";
@@ -39,7 +39,7 @@
39
39
  NSError *error = [NSError errorWithDomain:@"com.rnshare" code:1 userInfo:userInfo];
40
40
 
41
41
  NSLog(@"%@", errorMessage);
42
- failureCallback(error);
42
+ reject(errorMessage,errorMessage,error);
43
43
  }
44
44
  }
45
45
 
@@ -19,5 +19,5 @@
19
19
  #import <React/RCTUtils.h>
20
20
  @interface WhatsAppShare : NSObject <RCTBridgeModule,UIDocumentInteractionControllerDelegate>
21
21
 
22
- - (void) shareSingle:(NSDictionary *)options failureCallback:(RCTResponseErrorBlock)failureCallback successCallback:(RCTResponseSenderBlock)successCallback;
22
+ - (void) shareSingle:(NSDictionary *)options reject:(RCTPromiseRejectBlock)reject resolve:(RCTPromiseResolveBlock)resolve;
23
23
  @end