react-native-share 11.0.4 → 12.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/README.md CHANGED
@@ -6,6 +6,67 @@ React Native Share, is a simple tool for sharing messages and files with other a
6
6
 
7
7
  ---
8
8
 
9
+ ## Expo Managed Workflow
10
+
11
+ For Expo projects, you will need to be on a managed workflow and use the following command:
12
+
13
+ ```shell
14
+ npx expo install react-native-share
15
+ ```
16
+
17
+ Configure you `app.config.ts` or `app.json` to use the permissions needed by the library:
18
+
19
+ ```json
20
+ {
21
+ "plugins": [
22
+ [
23
+ "react-native-share",
24
+ {
25
+ "ios": [
26
+ "fb",
27
+ "instagram",
28
+ "twitter",
29
+ "tiktoksharesdk",
30
+ ],
31
+ "android": [
32
+ "com.facebook.katana",
33
+ "com.instagram.android",
34
+ "com.twitter.android",
35
+ "com.zhiliaoapp.musically",
36
+ ]
37
+ }
38
+ ]
39
+ ]
40
+ }
41
+ ```
42
+
43
+ `ios` parameter will take care of adding queries (LSApplicationQueriesSchemes) to the Info.plist.
44
+
45
+ ```xml
46
+ <key>LSApplicationQueriesSchemes</key>
47
+ <array>
48
+ <string>fb</string>
49
+ <string>instagram</string>
50
+ <string>twitter</string>
51
+ <string>tiktoksharesdk</string>
52
+ </array>
53
+ ```
54
+
55
+ `android` parameter will take care of adding queries to the AndroidManifest.xml.
56
+
57
+ ```xml
58
+ <queries>
59
+ <package android:name="com.facebook.katana" />
60
+ <package android:name="com.instagram.android" />
61
+ <package android:name="com.twitter.android" />
62
+ <package android:name="com.zhiliaoapp.musically" />
63
+ </queries>
64
+ ```
65
+
66
+ And prebuild the project with `expo prebuild`.
67
+
68
+ ## Bare React Native
69
+
9
70
  If you are using `react-native >= 0.7X` and/or the new arch you just need to do a simple:
10
71
 
11
72
  ```shell
@@ -22,6 +83,8 @@ After that, we need to install the dependencies to use the project on iOS(you ca
22
83
 
23
84
  Now run a simple: `npx pod-install` or `cd ios && pod install`. After that, you should be able to use the library on both Platforms, iOS and Android.
24
85
 
86
+ # Usage
87
+
25
88
  Then simply import:
26
89
 
27
90
  ```js
@@ -83,6 +83,14 @@ public class InstagramStoriesShare extends SingleShareIntent {
83
83
  useInternalStorage = options.getBoolean("useInternalStorage");
84
84
  }
85
85
 
86
+ if (this.hasValidKey("linkUrl", options)) {
87
+ this.intent.putExtra("link_url", options.getString("linkUrl"));
88
+ }
89
+
90
+ if (this.hasValidKey("linkText", options)) {
91
+ this.intent.putExtra("link_text", options.getString("linkText"));
92
+ }
93
+
86
94
  Boolean hasBackgroundAsset = this.hasValidKey("backgroundImage", options)
87
95
  || this.hasValidKey("backgroundVideo", options);
88
96
 
@@ -8,12 +8,24 @@
8
8
 
9
9
  // import RCTLog
10
10
  #import <React/RCTLog.h>
11
+ #import <Photos/Photos.h>
11
12
 
12
13
  #import "InstagramStories.h"
13
14
 
14
15
  @implementation InstagramStories
15
16
  RCT_EXPORT_MODULE();
16
17
 
18
+ - (void)openInstagramWithItems:(NSDictionary *)items urlScheme:(NSURL *)urlScheme resolve:(RCTPromiseResolveBlock)resolve {
19
+ // Putting dictionary of options inside an array
20
+ NSArray *pasteboardItems = @[items];
21
+ NSDictionary *pasteboardOptions = @{UIPasteboardOptionExpirationDate : [[NSDate date] dateByAddingTimeInterval:60 * 5]};
22
+
23
+ [[UIPasteboard generalPasteboard] setItems:pasteboardItems options:pasteboardOptions];
24
+ [[UIApplication sharedApplication] openURL:urlScheme options:@{} completionHandler:nil];
25
+
26
+ resolve(@[@true, @""]);
27
+ }
28
+
17
29
  - (void)shareSingle:(NSDictionary *)options
18
30
  reject:(RCTPromiseRejectBlock)reject
19
31
  resolve:(RCTPromiseResolveBlock)resolve {
@@ -40,12 +52,6 @@ RCT_EXPORT_MODULE();
40
52
  [items setObject: UIImagePNGRepresentation(image) forKey: @"com.instagram.sharedSticker.stickerImage"];
41
53
  }
42
54
 
43
- if(![options[@"backgroundVideo"] isEqual:[NSNull null]] && options[@"backgroundVideo"] != nil) {
44
- NSURL *backgroundVideoURL = [RCTConvert NSURL:options[@"backgroundVideo"]];
45
- NSData *video = [NSData dataWithContentsOfURL:backgroundVideoURL];
46
- [items setObject: video forKey: @"com.instagram.sharedSticker.backgroundVideo"];
47
- }
48
-
49
55
  if(![options[@"attributionURL"] isEqual:[NSNull null]] && options[@"attributionURL"] != nil) {
50
56
  NSString *attrURL = [RCTConvert NSString:options[@"attributionURL"]];
51
57
  [items setObject: attrURL forKey: @"com.instagram.sharedSticker.contentURL"];
@@ -67,17 +73,66 @@ RCT_EXPORT_MODULE();
67
73
  }
68
74
  [items setObject: backgroundBottomColor forKey: @"com.instagram.sharedSticker.backgroundBottomColor"];
69
75
 
70
- // Putting dictionary of options inside an array
71
- NSArray *pasteboardItems = @[items];
72
-
73
- // Prepare options to instagram
74
- NSDictionary *pasteboardOptions = @{UIPasteboardOptionExpirationDate : [[NSDate date] dateByAddingTimeInterval:60 * 5]};
76
+ if(![options[@"linkUrl"] isEqual:[NSNull null]] && options[@"linkUrl"] != nil) {
77
+ NSString *linkURL = [RCTConvert NSString:options[@"linkUrl"]];
78
+ [items setObject: linkURL forKey: @"com.instagram.sharedSticker.linkURL"];
79
+ }
75
80
 
76
- // This call is iOS 10+, can use 'setItems' depending on what versions you support
77
- [[UIPasteboard generalPasteboard] setItems:pasteboardItems options:pasteboardOptions];
78
- [[UIApplication sharedApplication] openURL:urlScheme options:@{} completionHandler:nil];
81
+ if(![options[@"linkText"] isEqual:[NSNull null]] && options[@"linkText"] != nil) {
82
+ NSString *linkText = [RCTConvert NSString:options[@"linkText"]];
83
+ [items setObject: linkText forKey: @"com.instagram.sharedSticker.linkText"];
84
+ }
79
85
 
80
- resolve(@[@true, @""]);
86
+ if(![options[@"backgroundVideo"] isEqual:[NSNull null]] && options[@"backgroundVideo"] != nil) {
87
+ NSURL *backgroundVideoURL = [RCTConvert NSURL:options[@"backgroundVideo"]];
88
+ NSString *urlString = backgroundVideoURL.absoluteString;
89
+ NSURLComponents *components = [[NSURLComponents alloc] initWithString:urlString];
90
+ NSString *assetId = nil;
91
+
92
+ // Get asset ID from URL
93
+ for (NSURLQueryItem *item in components.queryItems) {
94
+ if ([item.name isEqualToString:@"id"]) {
95
+ assetId = item.value;
96
+ break;
97
+ }
98
+ }
99
+
100
+ if (assetId) {
101
+ // Fetch the asset
102
+ PHFetchResult *fetchResult = [PHAsset fetchAssetsWithLocalIdentifiers:@[assetId] options:nil];
103
+ PHAsset *asset = fetchResult.firstObject;
104
+
105
+ if (asset) {
106
+ PHVideoRequestOptions *options = [[PHVideoRequestOptions alloc] init];
107
+ options.networkAccessAllowed = YES;
108
+ options.deliveryMode = PHVideoRequestOptionsDeliveryModeHighQualityFormat;
109
+
110
+ [[PHImageManager defaultManager] requestAVAssetForVideo:asset
111
+ options:options
112
+ resultHandler:^(AVAsset * _Nullable avAsset, AVAudioMix * _Nullable audioMix, NSDictionary * _Nullable info) {
113
+ if ([avAsset isKindOfClass:[AVURLAsset class]]) {
114
+ AVURLAsset *urlAsset = (AVURLAsset *)avAsset;
115
+ NSData *video = [NSData dataWithContentsOfURL:urlAsset.URL];
116
+
117
+ dispatch_async(dispatch_get_main_queue(), ^{
118
+ if (video) {
119
+ [items setObject:video forKey:@"com.instagram.sharedSticker.backgroundVideo"];
120
+ [self openInstagramWithItems:items urlScheme:urlScheme resolve:resolve];
121
+ } else {
122
+ NSLog(@"Failed to convert video asset to NSData");
123
+ [self openInstagramWithItems:items urlScheme:urlScheme resolve:resolve];
124
+ }
125
+ });
126
+ }
127
+ }];
128
+ } else {
129
+ NSLog(@"Could not find asset with ID: %@", assetId);
130
+ [self openInstagramWithItems:items urlScheme:urlScheme resolve:resolve];
131
+ }
132
+ }
133
+ } else {
134
+ [self openInstagramWithItems:items urlScheme:urlScheme resolve:resolve];
135
+ }
81
136
  }
82
137
 
83
138
  - (NSError*)fallbackInstagram {
@@ -102,6 +102,39 @@
102
102
  return nil;
103
103
  }
104
104
 
105
+ + (UIImage *)adjustedForShareSheetPreviewIconProvider:(UIImage *)image {
106
+ UIColor *replaceTransparencyWithColor = [UIColor whiteColor]; // Change as required
107
+ CGFloat minimumSize = 40.0; // Points
108
+
109
+ UIGraphicsImageRendererFormat *format = [[UIGraphicsImageRendererFormat alloc] init];
110
+ format.opaque = YES;
111
+ format.scale = image.scale;
112
+
113
+ CGFloat imageWidth = image.size.width;
114
+ CGFloat imageHeight = image.size.height;
115
+ CGFloat imageLargestDimension = MAX(imageWidth, imageHeight);
116
+ CGFloat deviceScale = [UIScreen mainScreen].scale;
117
+ CGFloat resizeFactor = (minimumSize * deviceScale) / (imageLargestDimension * image.scale);
118
+
119
+ CGSize size;
120
+ if (resizeFactor > 1.0) {
121
+ size = CGSizeMake(imageWidth * resizeFactor, imageHeight * resizeFactor);
122
+ } else {
123
+ size = image.size;
124
+ }
125
+
126
+ UIGraphicsImageRenderer *renderer = [[UIGraphicsImageRenderer alloc] initWithSize:size format:format];
127
+
128
+ UIImage *modifiedImage = [renderer imageWithActions:^(UIGraphicsImageRendererContext *context) {
129
+ CGSize contextSize = context.format.bounds.size;
130
+ [replaceTransparencyWithColor setFill];
131
+ [context fillRect:CGRectMake(0, 0, contextSize.width, contextSize.height)];
132
+ [image drawInRect:CGRectMake(0, 0, contextSize.width, contextSize.height)];
133
+ }];
134
+
135
+ return modifiedImage;
136
+ }
137
+
105
138
  #ifdef __IPHONE_13_0
106
139
  + (nullable LPLinkMetadata *)linkMetadataFromDictionary:(NSDictionary *)dictionary API_AVAILABLE(ios(13.0)) {
107
140
  if (dictionary) {
@@ -109,10 +142,30 @@
109
142
  linkMetadata.originalURL = [RCTConvert NSURL:dictionary[@"originalUrl"]];
110
143
  linkMetadata.URL = [RCTConvert NSURL:dictionary[@"url"]];
111
144
  linkMetadata.title = [RCTConvert NSString:dictionary[@"title"]];
112
- NSURL *iconURL = [RCTConvert NSURL:dictionary[@"icon"]];
113
- if (iconURL) {
114
- linkMetadata.iconProvider = [[NSItemProvider alloc] initWithContentsOfURL:iconURL];
145
+
146
+ // Handle base64Icon
147
+ NSString *base64Icon = [RCTConvert NSString:dictionary[@"base64Icon"]];
148
+ if (base64Icon) {
149
+ // Remove data URI prefix if present
150
+ if ([base64Icon containsString:@"base64,"]) {
151
+ base64Icon = [[base64Icon componentsSeparatedByString:@"base64,"] lastObject];
152
+ }
153
+
154
+ NSData *imageData = [[NSData alloc] initWithBase64EncodedString:base64Icon options:NSDataBase64DecodingIgnoreUnknownCharacters];
155
+ UIImage *image = [UIImage imageWithData:imageData];
156
+
157
+ if (image) {
158
+ // Assign to iconProvider
159
+ linkMetadata.iconProvider = [[NSItemProvider alloc] initWithObject:[self adjustedForShareSheetPreviewIconProvider:image]];
160
+ }
161
+ } else {
162
+ // Existing icon handling
163
+ NSURL *iconURL = [RCTConvert NSURL:dictionary[@"icon"]];
164
+ if (iconURL) {
165
+ linkMetadata.iconProvider = [[NSItemProvider alloc] initWithContentsOfURL:iconURL];
166
+ }
115
167
  }
168
+
116
169
  NSURL *imageURL = [RCTConvert NSURL:dictionary[@"image"]];
117
170
  if (imageURL) {
118
171
  linkMetadata.imageProvider = [[NSItemProvider alloc] initWithContentsOfURL:imageURL];
@@ -1 +1 @@
1
- {"version":3,"names":["Social","exports","ShareAsset"],"sourceRoot":"../../src","sources":["types.ts"],"mappings":";;;;;;IAAYA,MAAM,GAAAC,OAAA,CAAAD,MAAA,0BAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAAA,OAANA,MAAM;AAAA;AAAA,IAqBNE,UAAU,GAAAD,OAAA,CAAAC,UAAA,0BAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA,OA0GH"}
1
+ {"version":3,"names":["Social","exports","ShareAsset"],"sourceRoot":"../../src","sources":["types.ts"],"mappings":";;;;;;IAAYA,MAAM,GAAAC,OAAA,CAAAD,MAAA,0BAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAAA,OAANA,MAAM;AAAA;AAAA,IAqBNE,UAAU,GAAAD,OAAA,CAAAC,UAAA,0BAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA,OA4GH"}
@@ -1 +1 @@
1
- {"version":3,"names":["Social","ShareAsset"],"sourceRoot":"../../src","sources":["types.ts"],"mappings":"AAAA,WAAYA,MAAM,0BAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAAA,OAANA,MAAM;AAAA;AAqBlB,WAAYC,UAAU,0BAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA;;AA0GH"}
1
+ {"version":3,"names":["Social","ShareAsset"],"sourceRoot":"../../src","sources":["types.ts"],"mappings":"AAAA,WAAYA,MAAM,0BAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAAA,OAANA,MAAM;AAAA;AAqBlB,WAAYC,UAAU,0BAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA;;AA4GH"}
@@ -39,6 +39,8 @@ export declare function normalizeSingleShareOptions({ ...options }: ShareSingleO
39
39
  backgroundTopColor?: string | undefined;
40
40
  attributionURL?: string | undefined;
41
41
  backgroundVideo?: string | undefined;
42
+ linkUrl?: string | undefined;
43
+ linkText?: string | undefined;
42
44
  title?: string | undefined;
43
45
  type?: string | undefined;
44
46
  email?: string | undefined;
@@ -58,6 +60,8 @@ export declare function normalizeSingleShareOptions({ ...options }: ShareSingleO
58
60
  backgroundTopColor?: string | undefined;
59
61
  attributionURL?: string | undefined;
60
62
  backgroundVideo?: string | undefined;
63
+ linkUrl?: string | undefined;
64
+ linkText?: string | undefined;
61
65
  title?: string | undefined;
62
66
  type?: string | undefined;
63
67
  email?: string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../src/helpers/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAG5D,wBAAgB,yBAAyB,CAAC,EAAE,GAAG,OAAO,EAAE,EAAE,YAAY;;;;;;;;;;;;;;;;;EAiBrE;AAED,wBAAgB,2BAA2B,CAAC,EAAE,GAAG,OAAO,EAAE,EAAE,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAG7E"}
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../src/helpers/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAG5D,wBAAgB,yBAAyB,CAAC,EAAE,GAAG,OAAO,EAAE,EAAE,YAAY;;;;;;;;;;;;;;;;;EAiBrE;AAED,wBAAgB,2BAA2B,CAAC,EAAE,GAAG,OAAO,EAAE,EAAE,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAG7E"}
@@ -74,6 +74,8 @@ interface BaseSocialStoriesShareSingleOptions extends Omit<BaseShareSingleOption
74
74
  backgroundTopColor?: string;
75
75
  attributionURL?: string;
76
76
  backgroundVideo?: string;
77
+ linkUrl?: string;
78
+ linkText?: string;
77
79
  }
78
80
  export interface InstagramStoriesShareSingleOptions extends BaseSocialStoriesShareSingleOptions {
79
81
  social: Social.InstagramStories;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
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": "11.0.4",
4
+ "version": "12.0.0",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "git+https://github.com/react-native-community/react-native-share.git"
@@ -30,6 +30,7 @@
30
30
  "@babel/runtime": "^7.23.2",
31
31
  "@commitlint/cli": "^11.0.0",
32
32
  "@commitlint/config-conventional": "^11.0.0",
33
+ "@expo/config-plugins": "^9.0.10",
33
34
  "@react-native/eslint-config": "^0.74.0",
34
35
  "@react-native/metro-config": "^0.73.2",
35
36
  "@semantic-release/commit-analyzer": "^11.1.0",
@@ -37,6 +38,7 @@
37
38
  "@semantic-release/github": "^9.2.1",
38
39
  "@semantic-release/npm": "^11.0.1",
39
40
  "@semantic-release/release-notes-generator": "^12.1.0",
41
+ "@tsconfig/node-lts": "^22.0.0",
40
42
  "@tsconfig/react-native": "^3.0.2",
41
43
  "@types/react": "^18.2.37",
42
44
  "@types/react-native": "^0.72.6",
@@ -60,7 +62,9 @@
60
62
  "typescript": "^5.2.2"
61
63
  },
62
64
  "resolutions": {
63
- "eslint-plugin-prettier": "5.0.1"
65
+ "eslint-plugin-prettier": "5.0.1",
66
+ "wrap-ansi": "7.0.0",
67
+ "string-width": "4.1.0"
64
68
  },
65
69
  "keywords": [
66
70
  "react-native",
@@ -90,9 +94,10 @@
90
94
  "start:ios": "react-native run-ios",
91
95
  "lint": "eslint \"src/**/*.{js,ts,tsx}\" --max-warnings=0",
92
96
  "typescript": "tsc --noEmit",
97
+ "build:expo-plugin": "tsc --project ./plugin/tsconfig.json",
93
98
  "validate": "yarn lint && yarn typescript",
94
99
  "ci:publish": "npx semantic-release",
95
- "prepare": "bob build",
100
+ "prepare": "bob build && yarn build:expo-plugin",
96
101
  "windows": "react-native run-windows"
97
102
  },
98
103
  "husky": {
package/src/types.ts CHANGED
@@ -72,6 +72,8 @@ interface BaseSocialStoriesShareSingleOptions extends Omit<BaseShareSingleOption
72
72
  backgroundTopColor?: string;
73
73
  attributionURL?: string;
74
74
  backgroundVideo?: string;
75
+ linkUrl?: string;
76
+ linkText?: string;
75
77
  }
76
78
 
77
79
  export interface InstagramStoriesShareSingleOptions extends BaseSocialStoriesShareSingleOptions {