react-native-share 9.2.3 → 9.3.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.
@@ -55,13 +55,16 @@ public class RNShareImpl implements ActivityEventListener {
55
55
  WritableMap reply = Arguments.createMap();
56
56
  reply.putBoolean("success", false);
57
57
  reply.putString("message", "CANCELED");
58
+ TargetChosenReceiver.callbackResolve(reply);
58
59
  } else if (resultCode == Activity.RESULT_OK) {
59
60
  WritableMap reply = Arguments.createMap();
60
61
  reply.putBoolean("success", true);
62
+ TargetChosenReceiver.callbackResolve(reply);
61
63
  }
62
64
  }
63
65
  }
64
-
66
+
67
+ @Override
65
68
  public void onActivityResult(Activity activity, int requestCode, int resultCode, Intent data) {
66
69
  onActivityResult(requestCode, resultCode, data);
67
70
  }
package/ios/RNShare.mm CHANGED
@@ -20,6 +20,7 @@
20
20
  #import "TelegramShare.h"
21
21
  #import "ViberShare.h"
22
22
  #import "MessengerShare.h"
23
+ #import "SmsShare.h"
23
24
  #import "RNShareActivityItemSource.h"
24
25
  #import "RNShareUtils.h"
25
26
 
@@ -36,6 +37,7 @@ RCTPromiseResolveBlock resolveBlock;
36
37
  // may implement a delegate and could be garbage collected
37
38
  // before it is called
38
39
  EmailShare *shareCtl;
40
+ SmsShare *smsShareCtl;
39
41
 
40
42
  - (dispatch_queue_t)methodQueue
41
43
  {
@@ -51,6 +53,7 @@ EmailShare *shareCtl;
51
53
  {
52
54
  if ((self = [super init])) {
53
55
  shareCtl = [[EmailShare alloc] init];
56
+ smsShareCtl = [[SmsShare alloc] init];
54
57
  }
55
58
  return self;
56
59
  }
@@ -91,7 +94,7 @@ RCT_EXPORT_MODULE()
91
94
  @"EMAIL": @"email",
92
95
  @"MESSENGER": @"messanger",
93
96
  @"VIBER": @"viber",
94
-
97
+ @"SMS": @"sms",
95
98
  @"SHARE_BACKGROUND_IMAGE": @"shareBackgroundImage",
96
99
  @"SHARE_BACKGROUND_VIDEO": @"shareBackgroundVideo",
97
100
  @"SHARE_STICKER_IMAGE": @"shareStickerImage",
@@ -163,6 +166,9 @@ RCT_EXPORT_METHOD(shareSingle:(NSDictionary *)options
163
166
  NSLog(@"TRY OPEN messenger");
164
167
  MessengerShare *shareCtl = [[MessengerShare alloc] init];
165
168
  [shareCtl shareSingle:options reject: reject resolve: resolve];
169
+ } else if([social isEqualToString:@"sms"]) {
170
+ NSLog(@"TRY OPEN sms");
171
+ [smsShareCtl shareSingle:options reject: reject resolve: resolve];
166
172
  }
167
173
  } else {
168
174
  RCTLogError(@"key 'social' missing in options");
@@ -10,6 +10,7 @@
10
10
  6513A53928AF109A00F0AE09 /* MessengerShare.m in Sources */ = {isa = PBXBuildFile; fileRef = 6513A53828AF109A00F0AE09 /* MessengerShare.m */; };
11
11
  65B4E1BA28AF0DC800D905B8 /* RNShareUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 65B4E1B928AF0DC800D905B8 /* RNShareUtils.m */; };
12
12
  6D697F8423A86EBC00F754A1 /* RNShareActivityItemSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D697F8323A86EBC00F754A1 /* RNShareActivityItemSource.m */; };
13
+ 962C1A3C2A8A714D0046A9E0 /* SmsShare.m in Sources */ = {isa = PBXBuildFile; fileRef = 962C1A3B2A8A714D0046A9E0 /* SmsShare.m */; };
13
14
  B33C22851D441713006BCD98 /* GenericShare.m in Sources */ = {isa = PBXBuildFile; fileRef = B33C22841D441713006BCD98 /* GenericShare.m */; };
14
15
  B33C22891D4419E8006BCD98 /* WhatsAppShare.m in Sources */ = {isa = PBXBuildFile; fileRef = B33C22881D4419E8006BCD98 /* WhatsAppShare.m */; };
15
16
  B33C228B1D442577006BCD98 /* EmailShare.m in Sources */ = {isa = PBXBuildFile; fileRef = B33C228A1D442576006BCD98 /* EmailShare.m */; };
@@ -40,6 +41,8 @@
40
41
  65B4E1B928AF0DC800D905B8 /* RNShareUtils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RNShareUtils.m; sourceTree = "<group>"; };
41
42
  6D697F8223A86EBC00F754A1 /* RNShareActivityItemSource.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RNShareActivityItemSource.h; sourceTree = "<group>"; };
42
43
  6D697F8323A86EBC00F754A1 /* RNShareActivityItemSource.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RNShareActivityItemSource.m; sourceTree = "<group>"; };
44
+ 962C1A3A2A8A71400046A9E0 /* SmsShare.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SmsShare.h; sourceTree = "<group>"; };
45
+ 962C1A3B2A8A714D0046A9E0 /* SmsShare.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SmsShare.m; sourceTree = "<group>"; };
43
46
  B33C22841D441713006BCD98 /* GenericShare.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GenericShare.m; sourceTree = "<group>"; };
44
47
  B33C22861D441723006BCD98 /* GenericShare.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GenericShare.h; sourceTree = "<group>"; };
45
48
  B33C22871D4419DA006BCD98 /* WhatsAppShare.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WhatsAppShare.h; sourceTree = "<group>"; };
@@ -110,6 +113,8 @@
110
113
  65B4E1B928AF0DC800D905B8 /* RNShareUtils.m */,
111
114
  B33C22871D4419DA006BCD98 /* WhatsAppShare.h */,
112
115
  B33C22881D4419E8006BCD98 /* WhatsAppShare.m */,
116
+ 962C1A3A2A8A71400046A9E0 /* SmsShare.h */,
117
+ 962C1A3B2A8A714D0046A9E0 /* SmsShare.m */,
113
118
  );
114
119
  name = social;
115
120
  sourceTree = "<group>";
@@ -178,6 +183,7 @@
178
183
  B3EEE48E1D4844E7008422B6 /* GooglePlusShare.m in Sources */,
179
184
  B3E7B58A1CC2AC0600A0062D /* RNShare.m in Sources */,
180
185
  B33C22891D4419E8006BCD98 /* WhatsAppShare.m in Sources */,
186
+ 962C1A3C2A8A714D0046A9E0 /* SmsShare.m in Sources */,
181
187
  B33C228B1D442577006BCD98 /* EmailShare.m in Sources */,
182
188
  FCC7BB4F221457EF00E1EA39 /* InstagramStories.m in Sources */,
183
189
  6513A53928AF109A00F0AE09 /* MessengerShare.m in Sources */,
package/ios/SmsShare.h ADDED
@@ -0,0 +1,16 @@
1
+ #import <UIKit/UIKit.h>
2
+ // import RCTConvertttt
3
+ #import <React/RCTConvert.h>
4
+ // import RCTBridge
5
+ #import <React/RCTBridge.h>
6
+ // import RCTUIManager
7
+ #import <React/RCTUIManager.h>
8
+ // import RCTLog
9
+ #import <React/RCTLog.h>
10
+ // import RCTUtils
11
+ #import <React/RCTUtils.h>
12
+ #import <MessageUI/MessageUI.h>
13
+ @interface SmsShare : NSObject <MFMessageComposeViewControllerDelegate>
14
+
15
+ - (void) shareSingle:(NSDictionary *)options reject:(RCTPromiseRejectBlock)reject resolve:(RCTPromiseResolveBlock)resolve;
16
+ @end
package/ios/SmsShare.m ADDED
@@ -0,0 +1,81 @@
1
+ #import "SmsShare.h"
2
+ #import "RNShareUtils.h"
3
+
4
+
5
+ @implementation SmsShare
6
+
7
+
8
+ - (void)shareSingle:(NSDictionary *)options
9
+ reject:(RCTPromiseRejectBlock)reject
10
+ resolve:(RCTPromiseResolveBlock)resolve {
11
+
12
+ if ([options objectForKey:@"message"] && [options objectForKey:@"message"] != [NSNull null]) {
13
+
14
+ NSString *message = [RCTConvert NSString:options[@"message"]];
15
+ NSString *recipient = [RCTConvert NSString:options[@"recipient"]];
16
+
17
+ if (![MFMessageComposeViewController canSendText]) {
18
+ NSString *errorMessage = @"Sms services is not available.";
19
+ NSDictionary *userInfo = @{NSLocalizedFailureReasonErrorKey: NSLocalizedString(errorMessage, nil)};
20
+ NSError *error = [NSError errorWithDomain:@"com.rnshare" code:1 userInfo:userInfo];
21
+ reject(@"com.rnshare", errorMessage, error);
22
+ return;
23
+ }
24
+
25
+ MFMessageComposeViewController *mc = [[MFMessageComposeViewController alloc] init];
26
+ mc.messageComposeDelegate = self;
27
+
28
+ NSMutableArray *recipients = [[NSMutableArray alloc] init];
29
+ if (![recipient isEqual: @""]) {
30
+ [recipients addObject:recipient];
31
+ }
32
+ mc.recipients = recipients;
33
+ mc.body = message;
34
+
35
+ NSURL *URL = [RCTConvert NSURL:options[@"url"]];
36
+ if (URL) {
37
+ BOOL isDataScheme = [URL.scheme.lowercaseString isEqualToString:@"data"];
38
+
39
+ // Only handling data scheme urls here. To handle the case of URL.isFileURL
40
+ // one could add a case similar to the process in EmailShare.m
41
+ if (isDataScheme) {
42
+ NSError *error;
43
+ NSData *data = [NSData dataWithContentsOfURL:URL
44
+ options:(NSDataReadingOptions)0
45
+ error:&error];
46
+ if (!data) {
47
+ reject(@"com.rnshare", @"No data", error);
48
+ return;
49
+ }
50
+
51
+ NSURL *filePath = [RNShareUtils getPathFromBase64:URL.absoluteString with:data fileName:@"file"];
52
+ if (filePath) {
53
+ // public.image typeIdentifier works for both images and files
54
+ [mc addAttachmentData:data typeIdentifier:@"public.image" filename:filePath.absoluteString];
55
+ }
56
+ } else {
57
+ // if not a file, just append URL to message
58
+ NSString *urlString = [RCTConvert NSString:options[@"url"]];
59
+ message = [message stringByAppendingString: [@" " stringByAppendingString: urlString]];
60
+ [mc setBody:message];
61
+ }
62
+ }
63
+
64
+
65
+ dispatch_async(dispatch_get_main_queue(), ^{
66
+ UIViewController *ctrl = RCTPresentedViewController();
67
+ [ctrl presentViewController:mc animated:YES completion:NULL];
68
+ resolve(@[@true, @""]);
69
+ });
70
+ }
71
+ }
72
+
73
+ - (void)messageComposeViewController:(MFMessageComposeViewController *)controller
74
+ didFinishWithResult:(MessageComposeResult)result {
75
+ dispatch_async(dispatch_get_main_queue(), ^{
76
+ UIViewController *ctrl = RCTPresentedViewController();
77
+ [ctrl dismissViewControllerAnimated:YES completion:NULL];
78
+ });
79
+ }
80
+
81
+ @end
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "react-native-share",
3
3
  "description": "Social share, sending simple data to other apps.",
4
- "version": "9.2.3",
4
+ "version": "9.3.0",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "git+https://github.com/react-native-community/react-native-share.git"