react-native-share 7.8.0 → 7.9.1
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.
- package/android/src/main/java/cl/json/social/InstagramShare.java +22 -9
- package/ios/MessengerShare.h +8 -0
- package/ios/MessengerShare.m +35 -0
- package/ios/RNShare.m +7 -1
- package/ios/RNShare.xcodeproj/project.pbxproj +22 -16
- package/ios/RNShareUtils.h +2 -0
- package/ios/WhatsAppShare.m +1 -1
- package/package.json +1 -1
|
@@ -45,13 +45,10 @@ public class InstagramShare extends SingleShareIntent {
|
|
|
45
45
|
return;
|
|
46
46
|
}
|
|
47
47
|
String type = options.getString("type");
|
|
48
|
+
String extension = this.getExtension(type);
|
|
48
49
|
Boolean isImage = type.startsWith("image");
|
|
49
50
|
|
|
50
|
-
|
|
51
|
-
this.openInstagramIntentChooserForImage(url, chooserTitle);
|
|
52
|
-
} else {
|
|
53
|
-
super.openIntentChooser();
|
|
54
|
-
}
|
|
51
|
+
this.openInstagramIntentChooser(url, chooserTitle, isImage, extension);
|
|
55
52
|
}
|
|
56
53
|
|
|
57
54
|
protected void openInstagramUrlScheme(String url) {
|
|
@@ -61,18 +58,33 @@ public class InstagramShare extends SingleShareIntent {
|
|
|
61
58
|
super.openIntentChooser();
|
|
62
59
|
}
|
|
63
60
|
|
|
64
|
-
|
|
61
|
+
private String getExtension(String url) {
|
|
62
|
+
String[] ext = url.split("/");
|
|
63
|
+
return ext[ext.length -1];
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
protected void openInstagramIntentChooser(String url, String chooserTitle, Boolean isImage, String extension) {
|
|
65
67
|
Boolean shouldUseInternalStorage = ShareIntent.hasValidKey("useInternalStorage", options) && options.getBoolean("useInternalStorage");
|
|
66
|
-
ShareFile shareFile =
|
|
68
|
+
ShareFile shareFile = isImage
|
|
69
|
+
? new ShareFile(url, "image/" + extension, "image", shouldUseInternalStorage, this.reactContext)
|
|
70
|
+
: new ShareFile(url, "video/" + extension, "video", shouldUseInternalStorage, this.reactContext);
|
|
67
71
|
Uri uri = shareFile.getURI();
|
|
68
72
|
|
|
69
73
|
Intent feedIntent = new Intent(Intent.ACTION_SEND);
|
|
70
|
-
|
|
74
|
+
|
|
75
|
+
if (isImage) {
|
|
76
|
+
feedIntent.setType("image/*");
|
|
77
|
+
} else {
|
|
78
|
+
feedIntent.setType("video/*");
|
|
79
|
+
}
|
|
80
|
+
|
|
71
81
|
feedIntent.putExtra(Intent.EXTRA_STREAM, uri);
|
|
72
82
|
feedIntent.setPackage(PACKAGE);
|
|
73
83
|
|
|
74
84
|
Intent storiesIntent = new Intent("com.instagram.share.ADD_TO_STORY");
|
|
75
|
-
|
|
85
|
+
|
|
86
|
+
storiesIntent.setDataAndType(uri, extension);
|
|
87
|
+
|
|
76
88
|
storiesIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
|
77
89
|
storiesIntent.setPackage(PACKAGE);
|
|
78
90
|
|
|
@@ -83,6 +95,7 @@ public class InstagramShare extends SingleShareIntent {
|
|
|
83
95
|
Activity activity = this.reactContext.getCurrentActivity();
|
|
84
96
|
activity.grantUriPermission(PACKAGE, uri, Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
|
85
97
|
this.reactContext.startActivity(chooserIntent);
|
|
98
|
+
TargetChosenReceiver.sendCallback(true, true, this.getIntent().getPackage());
|
|
86
99
|
}
|
|
87
100
|
|
|
88
101
|
@Override
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
#import <UIKit/UIKit.h>
|
|
2
|
+
|
|
3
|
+
#import <React/RCTBridgeModule.h>
|
|
4
|
+
|
|
5
|
+
@interface MessengerShare : NSObject <RCTBridgeModule>
|
|
6
|
+
|
|
7
|
+
- (void)shareSingle:(NSDictionary *)options failureCallback:(RCTResponseErrorBlock)failureCallback successCallback:(RCTResponseSenderBlock)successCallback;
|
|
8
|
+
@end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
#import "MessengerShare.h"
|
|
2
|
+
|
|
3
|
+
#import <React/RCTConvert.h>
|
|
4
|
+
|
|
5
|
+
@implementation MessengerShare
|
|
6
|
+
RCT_EXPORT_MODULE();
|
|
7
|
+
|
|
8
|
+
- (void)shareSingle:(NSDictionary *)options failureCallback:(RCTResponseErrorBlock)failureCallback successCallback:(RCTResponseSenderBlock)successCallback {
|
|
9
|
+
|
|
10
|
+
if ([options objectForKey:@"url"] && [options objectForKey:@"url"] != [NSNull null]) {
|
|
11
|
+
|
|
12
|
+
NSString *urlString = [NSString stringWithFormat:@"fb-messenger://share?link=%@", [RCTConvert NSString:options[@"url"]]];
|
|
13
|
+
NSURL *url = [NSURL URLWithString:urlString];
|
|
14
|
+
|
|
15
|
+
if ([[UIApplication sharedApplication] canOpenURL:url]) {
|
|
16
|
+
[[UIApplication sharedApplication] openURL:url options:@{} completionHandler:nil];
|
|
17
|
+
|
|
18
|
+
successCallback(@[@true, @""]);
|
|
19
|
+
} else {
|
|
20
|
+
// Cannot open Messenger
|
|
21
|
+
NSString *contentLinkString = @"https://apps.apple.com/us/app/messenger/id454638411";
|
|
22
|
+
NSURL *url = [NSURL URLWithString:contentLinkString];
|
|
23
|
+
[[UIApplication sharedApplication] openURL:url options:@{} completionHandler:nil];
|
|
24
|
+
|
|
25
|
+
NSString *errorMessage = @"Not installed";
|
|
26
|
+
NSDictionary *userInfo = @{NSLocalizedFailureReasonErrorKey: NSLocalizedString(errorMessage, nil)};
|
|
27
|
+
NSError *error = [NSError errorWithDomain:@"com.rnshare" code:1 userInfo:userInfo];
|
|
28
|
+
|
|
29
|
+
NSLog(@"%@", errorMessage);
|
|
30
|
+
failureCallback(error);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
@end
|
package/ios/RNShare.m
CHANGED
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
#import "EmailShare.h"
|
|
20
20
|
#import "TelegramShare.h"
|
|
21
21
|
#import "ViberShare.h"
|
|
22
|
+
#import "MessengerShare.h"
|
|
22
23
|
#import "RNShareActivityItemSource.h"
|
|
23
24
|
#import "RNShareUtils.h"
|
|
24
25
|
|
|
@@ -84,6 +85,7 @@ RCT_EXPORT_MODULE()
|
|
|
84
85
|
@"INSTAGRAMSTORIES": @"instagramstories",
|
|
85
86
|
@"TELEGRAM": @"telegram",
|
|
86
87
|
@"EMAIL": @"email",
|
|
88
|
+
@"MESSENGER": @"messanger",
|
|
87
89
|
@"VIBER": @"viber",
|
|
88
90
|
|
|
89
91
|
@"SHARE_BACKGROUND_IMAGE": @"shareBackgroundImage",
|
|
@@ -149,7 +151,11 @@ RCT_EXPORT_METHOD(shareSingle:(NSDictionary *)options
|
|
|
149
151
|
NSLog(@"TRY OPEN viber");
|
|
150
152
|
ViberShare *shareCtl = [[ViberShare alloc] init];
|
|
151
153
|
[shareCtl shareSingle:options failureCallback: failureCallback successCallback: successCallback];
|
|
152
|
-
}
|
|
154
|
+
} else if([social isEqualToString:@"messenger"]) {
|
|
155
|
+
NSLog(@"TRY OPEN messenger");
|
|
156
|
+
MessengerShare *shareCtl = [[MessengerShare alloc] init];
|
|
157
|
+
[shareCtl shareSingle:options failureCallback: failureCallback successCallback: successCallback];
|
|
158
|
+
}
|
|
153
159
|
} else {
|
|
154
160
|
RCTLogError(@"key 'social' missing in options");
|
|
155
161
|
return;
|
|
@@ -7,7 +7,8 @@
|
|
|
7
7
|
objects = {
|
|
8
8
|
|
|
9
9
|
/* Begin PBXBuildFile section */
|
|
10
|
-
|
|
10
|
+
6513A53928AF109A00F0AE09 /* MessengerShare.m in Sources */ = {isa = PBXBuildFile; fileRef = 6513A53828AF109A00F0AE09 /* MessengerShare.m */; };
|
|
11
|
+
65B4E1BA28AF0DC800D905B8 /* RNShareUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 65B4E1B928AF0DC800D905B8 /* RNShareUtils.m */; };
|
|
11
12
|
6D697F8423A86EBC00F754A1 /* RNShareActivityItemSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D697F8323A86EBC00F754A1 /* RNShareActivityItemSource.m */; };
|
|
12
13
|
B33C22851D441713006BCD98 /* GenericShare.m in Sources */ = {isa = PBXBuildFile; fileRef = B33C22841D441713006BCD98 /* GenericShare.m */; };
|
|
13
14
|
B33C22891D4419E8006BCD98 /* WhatsAppShare.m in Sources */ = {isa = PBXBuildFile; fileRef = B33C22881D4419E8006BCD98 /* WhatsAppShare.m */; };
|
|
@@ -33,8 +34,10 @@
|
|
|
33
34
|
|
|
34
35
|
/* Begin PBXFileReference section */
|
|
35
36
|
134814201AA4EA6300B7C361 /* libRNShare.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libRNShare.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
|
36
|
-
|
|
37
|
-
|
|
37
|
+
6513A53728AF108500F0AE09 /* MessengerShare.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessengerShare.h; sourceTree = "<group>"; };
|
|
38
|
+
6513A53828AF109A00F0AE09 /* MessengerShare.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessengerShare.m; sourceTree = "<group>"; };
|
|
39
|
+
65B4E1B828AF0DB400D905B8 /* RNShareUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RNShareUtils.h; sourceTree = "<group>"; };
|
|
40
|
+
65B4E1B928AF0DC800D905B8 /* RNShareUtils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RNShareUtils.m; sourceTree = "<group>"; };
|
|
38
41
|
6D697F8223A86EBC00F754A1 /* RNShareActivityItemSource.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RNShareActivityItemSource.h; sourceTree = "<group>"; };
|
|
39
42
|
6D697F8323A86EBC00F754A1 /* RNShareActivityItemSource.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RNShareActivityItemSource.m; sourceTree = "<group>"; };
|
|
40
43
|
B33C22841D441713006BCD98 /* GenericShare.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GenericShare.m; sourceTree = "<group>"; };
|
|
@@ -89,22 +92,24 @@
|
|
|
89
92
|
B33C22801D43F9B0006BCD98 /* social */ = {
|
|
90
93
|
isa = PBXGroup;
|
|
91
94
|
children = (
|
|
92
|
-
CE0C76361E9E7DE100ED396E /* InstagramShare.m */,
|
|
93
|
-
CE0C76621E9E869300ED396E /* InstagramShare.h */,
|
|
94
|
-
B33C22841D441713006BCD98 /* GenericShare.m */,
|
|
95
|
-
B33C22861D441723006BCD98 /* GenericShare.h */,
|
|
96
|
-
B33C22871D4419DA006BCD98 /* WhatsAppShare.h */,
|
|
97
|
-
B33C22881D4419E8006BCD98 /* WhatsAppShare.m */,
|
|
98
|
-
B33C228A1D442576006BCD98 /* EmailShare.m */,
|
|
99
95
|
B33C228C1D442583006BCD98 /* EmailShare.h */,
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
96
|
+
B33C228A1D442576006BCD98 /* EmailShare.m */,
|
|
97
|
+
F1A1AD562444B09B00E32E33 /* FacebookStories.h */,
|
|
98
|
+
F1A1AD572444B09B00E32E33 /* FacebookStories.m */,
|
|
99
|
+
B33C22861D441723006BCD98 /* GenericShare.h */,
|
|
100
|
+
B33C22841D441713006BCD98 /* GenericShare.m */,
|
|
103
101
|
B3EEE48F1D4844F4008422B6 /* GooglePlusShare.h */,
|
|
102
|
+
B3EEE48D1D4844E7008422B6 /* GooglePlusShare.m */,
|
|
103
|
+
CE0C76621E9E869300ED396E /* InstagramShare.h */,
|
|
104
|
+
CE0C76361E9E7DE100ED396E /* InstagramShare.m */,
|
|
104
105
|
FCC7BB4D2214566C00E1EA39 /* InstagramStories.h */,
|
|
105
106
|
FCC7BB4E221457EF00E1EA39 /* InstagramStories.m */,
|
|
106
|
-
|
|
107
|
-
|
|
107
|
+
6513A53728AF108500F0AE09 /* MessengerShare.h */,
|
|
108
|
+
6513A53828AF109A00F0AE09 /* MessengerShare.m */,
|
|
109
|
+
65B4E1B828AF0DB400D905B8 /* RNShareUtils.h */,
|
|
110
|
+
65B4E1B928AF0DC800D905B8 /* RNShareUtils.m */,
|
|
111
|
+
B33C22871D4419DA006BCD98 /* WhatsAppShare.h */,
|
|
112
|
+
B33C22881D4419E8006BCD98 /* WhatsAppShare.m */,
|
|
108
113
|
);
|
|
109
114
|
name = social;
|
|
110
115
|
sourceTree = "<group>";
|
|
@@ -167,14 +172,15 @@
|
|
|
167
172
|
buildActionMask = 2147483647;
|
|
168
173
|
files = (
|
|
169
174
|
F1A1AD582444B09B00E32E33 /* FacebookStories.m in Sources */,
|
|
175
|
+
65B4E1BA28AF0DC800D905B8 /* RNShareUtils.m in Sources */,
|
|
170
176
|
6D697F8423A86EBC00F754A1 /* RNShareActivityItemSource.m in Sources */,
|
|
171
177
|
CE0C76371E9E7DE100ED396E /* InstagramShare.m in Sources */,
|
|
172
|
-
4EED9CAF24F5A2EB006505C4 /* Utils.m in Sources */,
|
|
173
178
|
B3EEE48E1D4844E7008422B6 /* GooglePlusShare.m in Sources */,
|
|
174
179
|
B3E7B58A1CC2AC0600A0062D /* RNShare.m in Sources */,
|
|
175
180
|
B33C22891D4419E8006BCD98 /* WhatsAppShare.m in Sources */,
|
|
176
181
|
B33C228B1D442577006BCD98 /* EmailShare.m in Sources */,
|
|
177
182
|
FCC7BB4F221457EF00E1EA39 /* InstagramStories.m in Sources */,
|
|
183
|
+
6513A53928AF109A00F0AE09 /* MessengerShare.m in Sources */,
|
|
178
184
|
B33C22851D441713006BCD98 /* GenericShare.m in Sources */,
|
|
179
185
|
);
|
|
180
186
|
runOnlyForDeploymentPostprocessing = 0;
|
package/ios/RNShareUtils.h
CHANGED
package/ios/WhatsAppShare.m
CHANGED
package/package.json
CHANGED