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.
- package/RNShare.podspec +18 -1
- package/android/build.gradle +16 -0
- package/android/src/main/java/cl/json/{RNShareModule.java → RNShareImpl.java} +52 -60
- package/android/src/main/java/cl/json/RNSharePackage.java +34 -17
- package/android/src/main/java/cl/json/social/FacebookStoriesShare.java +1 -1
- package/android/src/main/java/cl/json/social/InstagramShare.java +7 -1
- package/android/src/main/java/cl/json/social/InstagramStoriesShare.java +1 -1
- package/android/src/main/java/cl/json/social/ShareIntent.java +11 -6
- package/android/src/main/java/cl/json/social/SingleShareIntent.java +15 -6
- package/android/src/main/java/cl/json/social/TargetChosenReceiver.java +23 -17
- package/android/src/newarch/cl/json/RNShare.java +55 -0
- package/android/src/oldarch/cl/json/RNShare.java +52 -0
- package/ios/EmailShare.h +1 -1
- package/ios/EmailShare.m +5 -5
- package/ios/FacebookStories.h +1 -1
- package/ios/FacebookStories.m +4 -4
- package/ios/GenericShare.h +1 -1
- package/ios/GenericShare.m +5 -5
- package/ios/GooglePlusShare.h +1 -1
- package/ios/GooglePlusShare.m +4 -4
- package/ios/InstagramShare.h +3 -3
- package/ios/InstagramShare.m +16 -16
- package/ios/InstagramStories.h +1 -1
- package/ios/InstagramStories.m +4 -4
- package/ios/MessengerShare.h +1 -1
- package/ios/MessengerShare.m +3 -3
- package/ios/RNShare.h +16 -2
- package/ios/{RNShare.m → RNShare.mm} +71 -25
- package/ios/TelegramShare.h +1 -1
- package/ios/TelegramShare.m +4 -4
- package/ios/ViberShare.h +1 -1
- package/ios/ViberShare.m +4 -4
- package/ios/WhatsAppShare.h +1 -1
- package/ios/WhatsAppShare.m +8 -8
- package/lib/commonjs/components/Button.js +21 -25
- package/lib/commonjs/components/Button.js.map +1 -1
- package/lib/commonjs/components/Overlay.js +7 -15
- package/lib/commonjs/components/Overlay.js.map +1 -1
- package/lib/commonjs/components/ShareSheet.js +10 -21
- package/lib/commonjs/components/ShareSheet.js.map +1 -1
- package/lib/commonjs/components/Sheet.js +7 -13
- package/lib/commonjs/components/Sheet.js.map +1 -1
- package/lib/commonjs/helpers/requireAndAskPermissions.js +6 -16
- package/lib/commonjs/helpers/requireAndAskPermissions.js.map +1 -1
- package/lib/commonjs/index.js +40 -68
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/types.js +9 -12
- package/lib/commonjs/types.js.map +1 -1
- package/lib/module/components/Button.js +19 -18
- package/lib/module/components/Button.js.map +1 -1
- package/lib/module/components/Overlay.js +5 -7
- package/lib/module/components/Overlay.js.map +1 -1
- package/lib/module/components/ShareSheet.js +8 -10
- package/lib/module/components/ShareSheet.js.map +1 -1
- package/lib/module/components/Sheet.js +5 -6
- package/lib/module/components/Sheet.js.map +1 -1
- package/lib/module/helpers/requireAndAskPermissions.js +6 -15
- package/lib/module/helpers/requireAndAskPermissions.js.map +1 -1
- package/lib/module/index.js +31 -50
- package/lib/module/index.js.map +1 -1
- package/lib/module/types.js +8 -9
- package/lib/module/types.js.map +1 -1
- package/lib/typescript/codegenSpec/NativeRNShare.d.ts +39 -0
- package/lib/typescript/{index.d.ts → src/index.d.ts} +17 -17
- package/lib/typescript/{types.d.ts → src/types.d.ts} +1 -0
- package/package.json +11 -3
- package/src/helpers/requireAndAskPermissions.ts +9 -9
- package/src/index.tsx +46 -60
- package/src/types.ts +1 -0
- package/CHANGELOG.md +0 -133
- package/lib/commonjs/typings/react-native.d.js +0 -4
- package/lib/commonjs/typings/react-native.d.js.map +0 -1
- package/lib/module/typings/react-native.d.js +0 -2
- package/lib/module/typings/react-native.d.js.map +0 -1
- package/src/typings/react-native.d.ts +0 -58
- package/windows/.gitignore +0 -92
- /package/lib/typescript/{components → src/components}/Button.d.ts +0 -0
- /package/lib/typescript/{components → src/components}/Overlay.d.ts +0 -0
- /package/lib/typescript/{components → src/components}/ShareSheet.d.ts +0 -0
- /package/lib/typescript/{components → src/components}/Sheet.d.ts +0 -0
- /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
|
-
|
|
18
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
134
|
+
resolve(@[@true, @""]);
|
|
135
135
|
});
|
|
136
136
|
}
|
|
137
137
|
}
|
package/ios/FacebookStories.h
CHANGED
|
@@ -20,5 +20,5 @@
|
|
|
20
20
|
#import <React/RCTUtils.h>
|
|
21
21
|
@interface FacebookStories : NSObject <RCTBridgeModule>
|
|
22
22
|
|
|
23
|
-
- (void *) shareSingle:(NSDictionary *)options
|
|
23
|
+
- (void *) shareSingle:(NSDictionary *)options reject:(RCTPromiseRejectBlock)reject resolve:(RCTPromiseResolveBlock)resolve;
|
|
24
24
|
@end
|
package/ios/FacebookStories.m
CHANGED
|
@@ -16,13 +16,13 @@
|
|
|
16
16
|
RCT_EXPORT_MODULE();
|
|
17
17
|
|
|
18
18
|
- (void)shareSingle:(NSDictionary *)options
|
|
19
|
-
|
|
20
|
-
|
|
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
|
-
|
|
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
|
-
|
|
83
|
+
resolve(@[@true, @""]);
|
|
84
84
|
}
|
|
85
85
|
|
|
86
86
|
- (NSError*)fallbackFacebook {
|
package/ios/GenericShare.h
CHANGED
|
@@ -21,6 +21,6 @@
|
|
|
21
21
|
#import <React/RCTUtils.h>
|
|
22
22
|
@interface GenericShare : NSObject <RCTBridgeModule>
|
|
23
23
|
|
|
24
|
-
- (void) shareSingle:(NSDictionary *)options
|
|
24
|
+
- (void) shareSingle:(NSDictionary *)options reject:(RCTPromiseRejectBlock)reject resolve:(RCTPromiseResolveBlock)resolve serviceType:(NSString*)serviceType
|
|
25
25
|
inAppBaseUrl:(NSString *)inAppBaseUrl;
|
|
26
26
|
@end
|
package/ios/GenericShare.m
CHANGED
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
@implementation GenericShare
|
|
12
12
|
RCT_EXPORT_MODULE();
|
|
13
13
|
- (void)shareSingle:(NSDictionary *)options
|
|
14
|
-
|
|
15
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
57
|
+
reject(@"com.rnshare",@"Not installed",error);
|
|
58
58
|
|
|
59
59
|
NSString *escapedString = [options[@"message"] stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLHostAllowedCharacterSet]];
|
|
60
60
|
|
package/ios/GooglePlusShare.h
CHANGED
|
@@ -18,5 +18,5 @@
|
|
|
18
18
|
#import <React/RCTUtils.h>
|
|
19
19
|
@interface GooglePlusShare : NSObject <RCTBridgeModule>
|
|
20
20
|
|
|
21
|
-
- (void) shareSingle:(NSDictionary *)options
|
|
21
|
+
- (void) shareSingle:(NSDictionary *)options reject:(RCTPromiseRejectBlock)reject resolve:(RCTPromiseResolveBlock)resolve;
|
|
22
22
|
@end
|
package/ios/GooglePlusShare.m
CHANGED
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
@implementation GooglePlusShare
|
|
12
12
|
RCT_EXPORT_MODULE();
|
|
13
13
|
- (void)shareSingle:(NSDictionary *)options
|
|
14
|
-
|
|
15
|
-
|
|
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
|
-
|
|
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
|
-
|
|
33
|
+
reject(@"com.rnshare",errorMessage,error);
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
}
|
package/ios/InstagramShare.h
CHANGED
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
#import <React/RCTUtils.h>
|
|
19
19
|
@interface InstagramShare : NSObject <RCTBridgeModule>
|
|
20
20
|
|
|
21
|
-
- (void) shareSingle:(NSDictionary *)options
|
|
21
|
+
- (void) shareSingle:(NSDictionary *)options reject:(RCTPromiseRejectBlock)reject resolve:(RCTPromiseResolveBlock)resolve;
|
|
22
22
|
- (void)shareSingleImage:(NSDictionary *)options
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
reject:(RCTPromiseRejectBlock)reject
|
|
24
|
+
resolve:(RCTPromiseResolveBlock)resolve;
|
|
25
25
|
@end
|
package/ios/InstagramShare.m
CHANGED
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
@implementation InstagramShare
|
|
13
13
|
RCT_EXPORT_MODULE();
|
|
14
14
|
- (void)shareSingle:(NSDictionary *)options
|
|
15
|
-
|
|
16
|
-
|
|
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
|
-
|
|
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
|
-
|
|
61
|
+
reject(@"com.rnshare",@"Not installed",error);
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
64
|
|
|
65
65
|
- (void)shareSingleImage:(NSDictionary *)options
|
|
66
|
-
|
|
67
|
-
|
|
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
|
-
|
|
78
|
+
reject(@"com.rnshare",@"no data",error);
|
|
79
79
|
return;
|
|
80
80
|
}
|
|
81
81
|
image = [UIImage imageWithData: data];
|
|
82
82
|
[self savePictureAndOpenInstagram: image
|
|
83
|
-
|
|
84
|
-
|
|
83
|
+
reject: reject
|
|
84
|
+
resolve: resolve];
|
|
85
85
|
}
|
|
86
86
|
} else {
|
|
87
87
|
[[UIApplication sharedApplication] openURL: [NSURL URLWithString:@"instagram://camera"]];
|
|
88
|
-
|
|
88
|
+
resolve(@[@true, @""]);
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
91
|
|
|
92
92
|
-(void)savePictureAndOpenInstagram:(UIImage *)base64Image
|
|
93
|
-
|
|
94
|
-
|
|
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 (
|
|
116
|
-
|
|
115
|
+
if (resolve != NULL) {
|
|
116
|
+
resolve(@[@true, @""]);
|
|
117
117
|
}
|
|
118
118
|
}
|
|
119
119
|
}
|
|
120
120
|
else {
|
|
121
121
|
//Error while writing
|
|
122
|
-
if (
|
|
123
|
-
|
|
122
|
+
if (reject != NULL) {
|
|
123
|
+
reject(@"com.rnshare",@"error",error);
|
|
124
124
|
}
|
|
125
125
|
}
|
|
126
126
|
}];
|
package/ios/InstagramStories.h
CHANGED
|
@@ -19,5 +19,5 @@
|
|
|
19
19
|
#import <React/RCTUtils.h>
|
|
20
20
|
@interface InstagramStories : NSObject <RCTBridgeModule>
|
|
21
21
|
|
|
22
|
-
- (void *) shareSingle:(NSDictionary *)options
|
|
22
|
+
- (void *) shareSingle:(NSDictionary *)options reject:(RCTPromiseRejectBlock)reject resolve:(RCTPromiseResolveBlock)resolve;
|
|
23
23
|
@end
|
package/ios/InstagramStories.m
CHANGED
|
@@ -15,13 +15,13 @@
|
|
|
15
15
|
RCT_EXPORT_MODULE();
|
|
16
16
|
|
|
17
17
|
- (void)shareSingle:(NSDictionary *)options
|
|
18
|
-
|
|
19
|
-
|
|
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
|
-
|
|
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
|
-
|
|
80
|
+
resolve(@[@true, @""]);
|
|
81
81
|
}
|
|
82
82
|
|
|
83
83
|
- (NSError*)fallbackInstagram {
|
package/ios/MessengerShare.h
CHANGED
|
@@ -4,5 +4,5 @@
|
|
|
4
4
|
|
|
5
5
|
@interface MessengerShare : NSObject <RCTBridgeModule>
|
|
6
6
|
|
|
7
|
-
- (void)shareSingle:(NSDictionary *)options
|
|
7
|
+
- (void)shareSingle:(NSDictionary *)options reject:(RCTPromiseRejectBlock)reject resolve:(RCTPromiseResolveBlock)resolve;
|
|
8
8
|
@end
|
package/ios/MessengerShare.m
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
@implementation MessengerShare
|
|
6
6
|
RCT_EXPORT_MODULE();
|
|
7
7
|
|
|
8
|
-
- (void)shareSingle:(NSDictionary *)options
|
|
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
|
-
|
|
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
|
-
|
|
30
|
+
reject(@"Not installed",@"Not installed",error);
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
33
|
}
|
package/ios/RNShare.h
CHANGED
|
@@ -1,7 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
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
|
-
|
|
29
|
-
|
|
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
|
-
|
|
100
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
143
|
+
[shareCtl shareSingleImage:options reject: reject resolve: resolve];
|
|
136
144
|
} else {
|
|
137
|
-
[shareCtl shareSingle:options
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
167
|
-
|
|
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
|
-
|
|
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 =
|
|
240
|
-
rejectBlock =
|
|
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
|
-
|
|
287
|
+
reject(@"error",@"activityError",activityError);
|
|
280
288
|
} else {
|
|
281
|
-
|
|
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(@
|
|
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
|
package/ios/TelegramShare.h
CHANGED
|
@@ -18,6 +18,6 @@
|
|
|
18
18
|
#import <React/RCTUtils.h>
|
|
19
19
|
@interface TelegramShare : NSObject <RCTBridgeModule>
|
|
20
20
|
|
|
21
|
-
- (void) shareSingle:(NSDictionary *)options
|
|
21
|
+
- (void) shareSingle:(NSDictionary *)options reject:(RCTPromiseRejectBlock)reject resolve:(RCTPromiseResolveBlock)resolve;
|
|
22
22
|
|
|
23
23
|
@end
|
package/ios/TelegramShare.m
CHANGED
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
@implementation TelegramShare
|
|
13
13
|
RCT_EXPORT_MODULE();
|
|
14
14
|
- (void)shareSingle:(NSDictionary *)options
|
|
15
|
-
|
|
16
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
14
|
-
|
|
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
|
-
|
|
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
|
-
|
|
42
|
+
reject(errorMessage,errorMessage,error);
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
45
|
|
package/ios/WhatsAppShare.h
CHANGED
|
@@ -19,5 +19,5 @@
|
|
|
19
19
|
#import <React/RCTUtils.h>
|
|
20
20
|
@interface WhatsAppShare : NSObject <RCTBridgeModule,UIDocumentInteractionControllerDelegate>
|
|
21
21
|
|
|
22
|
-
- (void) shareSingle:(NSDictionary *)options
|
|
22
|
+
- (void) shareSingle:(NSDictionary *)options reject:(RCTPromiseRejectBlock)reject resolve:(RCTPromiseResolveBlock)resolve;
|
|
23
23
|
@end
|