react-native-share 9.2.1 → 9.2.2
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/lib/commonjs/helpers/options.js +1 -2
- package/lib/commonjs/helpers/options.js.map +1 -1
- package/lib/commonjs/index.js +10 -3
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/helpers/options.js +1 -2
- package/lib/module/helpers/options.js.map +1 -1
- package/lib/module/index.js +10 -3
- package/lib/module/index.js.map +1 -1
- package/package.json +1 -1
- package/src/helpers/options.ts +2 -2
- package/src/index.tsx +11 -3
|
@@ -16,14 +16,13 @@ function normalizeShareOpenOptions(_ref) {
|
|
|
16
16
|
options.urls = [options.url];
|
|
17
17
|
delete options.url;
|
|
18
18
|
|
|
19
|
-
// Concern: I could be wrong but there seems to be an implicit association between url and filename in the native code.
|
|
20
|
-
// I don't understand object-c but it looks like we're using urls index to look up a filename. What happens if the length of urls doesn't match the length of filenames? Maybe we can throw an error.
|
|
21
19
|
// Reference: https://github.com/react-native-share/react-native-share/pull/1396/files#diff-2d42a82ccc4ec42d9bfea630535ec2b757bd7a90b96d33d5d5433da17f4bdf79R208
|
|
22
20
|
if (options.filename && !options.filenames) {
|
|
23
21
|
options.filenames = [options.filename];
|
|
24
22
|
}
|
|
25
23
|
}
|
|
26
24
|
}
|
|
25
|
+
options.failOnCancel = options.failOnCancel ?? true;
|
|
27
26
|
return options;
|
|
28
27
|
}
|
|
29
28
|
function normalizeSingleShareOptions(_ref2) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_platform","require","normalizeShareOpenOptions","_ref","options","isIOS","url","urls","filename","filenames","normalizeSingleShareOptions","_ref2"],"sources":["options.ts"],"sourcesContent":["import { ShareOptions, ShareSingleOptions } from '../types';\nimport { isIOS } from './platform';\n\nexport function normalizeShareOpenOptions({ ...options }: ShareOptions) {\n if (isIOS()) {\n // Backward compatibility with { Share } from react-native\n if (options.url && !options.urls) {\n options.urls = [options.url];\n delete options.url;\n\n //
|
|
1
|
+
{"version":3,"names":["_platform","require","normalizeShareOpenOptions","_ref","options","isIOS","url","urls","filename","filenames","failOnCancel","normalizeSingleShareOptions","_ref2"],"sources":["options.ts"],"sourcesContent":["import { ShareOptions, ShareSingleOptions } from '../types';\nimport { isIOS } from './platform';\n\nexport function normalizeShareOpenOptions({ ...options }: ShareOptions) {\n if (isIOS()) {\n // Backward compatibility with { Share } from react-native\n if (options.url && !options.urls) {\n options.urls = [options.url];\n delete options.url;\n\n // Reference: https://github.com/react-native-share/react-native-share/pull/1396/files#diff-2d42a82ccc4ec42d9bfea630535ec2b757bd7a90b96d33d5d5433da17f4bdf79R208\n if (options.filename && !options.filenames) {\n options.filenames = [options.filename];\n }\n }\n }\n\n options.failOnCancel = options.failOnCancel ?? true;\n\n return options;\n}\n\nexport function normalizeSingleShareOptions({ ...options }: ShareSingleOptions) {\n if (options.url) options.urls = [options.url];\n return options;\n}\n"],"mappings":";;;;;;;AACA,IAAAA,SAAA,GAAAC,OAAA;AAEO,SAASC,yBAAyBA,CAAAC,IAAA,EAA+B;EAAA,IAA9B;IAAE,GAAGC;EAAsB,CAAC,GAAAD,IAAA;EACpE,IAAI,IAAAE,eAAK,EAAC,CAAC,EAAE;IACX;IACA,IAAID,OAAO,CAACE,GAAG,IAAI,CAACF,OAAO,CAACG,IAAI,EAAE;MAChCH,OAAO,CAACG,IAAI,GAAG,CAACH,OAAO,CAACE,GAAG,CAAC;MAC5B,OAAOF,OAAO,CAACE,GAAG;;MAElB;MACA,IAAIF,OAAO,CAACI,QAAQ,IAAI,CAACJ,OAAO,CAACK,SAAS,EAAE;QAC1CL,OAAO,CAACK,SAAS,GAAG,CAACL,OAAO,CAACI,QAAQ,CAAC;MACxC;IACF;EACF;EAEAJ,OAAO,CAACM,YAAY,GAAGN,OAAO,CAACM,YAAY,IAAI,IAAI;EAEnD,OAAON,OAAO;AAChB;AAEO,SAASO,2BAA2BA,CAAAC,KAAA,EAAqC;EAAA,IAApC;IAAE,GAAGR;EAA4B,CAAC,GAAAQ,KAAA;EAC5E,IAAIR,OAAO,CAACE,GAAG,EAAEF,OAAO,CAACG,IAAI,GAAG,CAACH,OAAO,CAACE,GAAG,CAAC;EAC7C,OAAOF,OAAO;AAChB"}
|
package/lib/commonjs/index.js
CHANGED
|
@@ -78,8 +78,16 @@ const RNShare = {
|
|
|
78
78
|
await (0, _checkPermissions.default)(options);
|
|
79
79
|
options = (0, _options.normalizeShareOpenOptions)(options);
|
|
80
80
|
const result = await _NativeRNShare.default.open(options);
|
|
81
|
-
if (!result.success
|
|
82
|
-
|
|
81
|
+
if (!result.success) {
|
|
82
|
+
if (options.failOnCancel) {
|
|
83
|
+
throw new Error('User did not share');
|
|
84
|
+
}
|
|
85
|
+
const dismissedResult = {
|
|
86
|
+
dismissedAction: true,
|
|
87
|
+
success: result.success,
|
|
88
|
+
message: result.message
|
|
89
|
+
};
|
|
90
|
+
return dismissedResult;
|
|
83
91
|
}
|
|
84
92
|
return result;
|
|
85
93
|
},
|
|
@@ -95,7 +103,6 @@ const RNShare = {
|
|
|
95
103
|
message
|
|
96
104
|
} = await _NativeRNShare.default.shareSingle(options);
|
|
97
105
|
const result = {
|
|
98
|
-
// Concern: Why do we need to covert success to boolean? A comment would be insightful
|
|
99
106
|
success: Boolean(success),
|
|
100
107
|
message
|
|
101
108
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_NativeRNShare","_interopRequireDefault","require","_Overlay","_Sheet","_Button","_ShareSheet","_checkPermissions","_types","_platform","_options","obj","__esModule","default","RNShare","Button","ShareSheet","Overlay","Sheet","Social","FACEBOOK","NativeRNShare","getConstants","Facebook","FACEBOOK_STORIES","FACEBOOKSTORIES","FacebookStories","PAGESMANAGER","Pagesmanager","TWITTER","Twitter","WHATSAPP","Whatsapp","WHATSAPPBUSINESS","Whatsappbusiness","INSTAGRAM","Instagram","INSTAGRAM_STORIES","INSTAGRAMSTORIES","InstagramStories","GOOGLEPLUS","Googleplus","EMAIL","Email","PINTEREST","Pinterest","LINKEDIN","Linkedin","SMS","Sms","TELEGRAM","Telegram","MESSENGER","Messenger","SNAPCHAT","Snapchat","VIBER","Viber","open","options","checkPermissions","normalizeShareOpenOptions","result","success","failOnCancel","Error","shareSingle","isAndroid","isIOS","social","appId","normalizeSingleShareOptions","
|
|
1
|
+
{"version":3,"names":["_NativeRNShare","_interopRequireDefault","require","_Overlay","_Sheet","_Button","_ShareSheet","_checkPermissions","_types","_platform","_options","obj","__esModule","default","RNShare","Button","ShareSheet","Overlay","Sheet","Social","FACEBOOK","NativeRNShare","getConstants","Facebook","FACEBOOK_STORIES","FACEBOOKSTORIES","FacebookStories","PAGESMANAGER","Pagesmanager","TWITTER","Twitter","WHATSAPP","Whatsapp","WHATSAPPBUSINESS","Whatsappbusiness","INSTAGRAM","Instagram","INSTAGRAM_STORIES","INSTAGRAMSTORIES","InstagramStories","GOOGLEPLUS","Googleplus","EMAIL","Email","PINTEREST","Pinterest","LINKEDIN","Linkedin","SMS","Sms","TELEGRAM","Telegram","MESSENGER","Messenger","SNAPCHAT","Snapchat","VIBER","Viber","open","options","checkPermissions","normalizeShareOpenOptions","result","success","failOnCancel","Error","dismissedResult","dismissedAction","message","shareSingle","isAndroid","isIOS","social","appId","normalizeSingleShareOptions","Boolean","isPackageInstalled","packageName","isInstalled","_default","exports"],"sources":["index.tsx"],"sourcesContent":["import NativeRNShare from '../codegenSpec/NativeRNShare';\n\nimport Overlay from './components/Overlay';\nimport Sheet from './components/Sheet';\nimport Button from './components/Button';\nimport ShareSheet from './components/ShareSheet';\nimport checkPermissions from './helpers/checkPermissions';\nimport {\n Social,\n IsPackageInstalledResult,\n ActivityType,\n ShareAsset,\n ShareOpenResult,\n ShareOptions,\n ShareSingleOptions,\n ShareSingleResult,\n} from './types';\nimport { isAndroid, isIOS } from './helpers/platform';\nimport { normalizeShareOpenOptions, normalizeSingleShareOptions } from './helpers/options';\n\nconst RNShare = {\n Button,\n ShareSheet,\n Overlay,\n Sheet,\n\n Social: {\n FACEBOOK: NativeRNShare.getConstants().FACEBOOK || Social.Facebook,\n FACEBOOK_STORIES: NativeRNShare.getConstants().FACEBOOKSTORIES || Social.FacebookStories,\n PAGESMANAGER: NativeRNShare.getConstants().PAGESMANAGER || Social.Pagesmanager,\n TWITTER: NativeRNShare.getConstants().TWITTER || Social.Twitter,\n WHATSAPP: NativeRNShare.getConstants().WHATSAPP || Social.Whatsapp,\n WHATSAPPBUSINESS: NativeRNShare.getConstants().WHATSAPPBUSINESS || Social.Whatsappbusiness,\n INSTAGRAM: NativeRNShare.getConstants().INSTAGRAM || Social.Instagram,\n INSTAGRAM_STORIES: NativeRNShare.getConstants().INSTAGRAMSTORIES || Social.InstagramStories,\n GOOGLEPLUS: NativeRNShare.getConstants().GOOGLEPLUS || Social.Googleplus,\n EMAIL: NativeRNShare.getConstants().EMAIL || Social.Email,\n PINTEREST: NativeRNShare.getConstants().PINTEREST || Social.Pinterest,\n LINKEDIN: NativeRNShare.getConstants().LINKEDIN || Social.Linkedin,\n SMS: NativeRNShare.getConstants().SMS || Social.Sms,\n TELEGRAM: NativeRNShare.getConstants().TELEGRAM || Social.Telegram,\n MESSENGER: NativeRNShare.getConstants().MESSENGER || Social.Messenger,\n SNAPCHAT: NativeRNShare.getConstants().SNAPCHAT || Social.Snapchat,\n VIBER: NativeRNShare.getConstants().VIBER || Social.Viber,\n },\n\n async open(options: ShareOptions) {\n await checkPermissions(options);\n\n options = normalizeShareOpenOptions(options);\n\n const result: ShareOpenResult = await NativeRNShare.open(options);\n\n if (!result.success) {\n if (options.failOnCancel) {\n throw new Error('User did not share');\n }\n\n const dismissedResult: ShareOpenResult = {\n dismissedAction: true,\n success: result.success,\n message: result.message,\n };\n return dismissedResult;\n }\n\n return result;\n },\n\n async shareSingle(options: ShareSingleOptions) {\n if (!isAndroid() && !isIOS()) throw new Error('Not implemented');\n\n if (options.social === RNShare.Social.INSTAGRAM_STORIES && !options.appId) {\n throw new Error('To share to Instagram Stories you need to provide appId');\n }\n\n await checkPermissions(options);\n\n options = normalizeSingleShareOptions(options);\n\n const { success, message } = await NativeRNShare.shareSingle(options);\n\n const result: ShareSingleResult = {\n success: Boolean(success),\n message,\n };\n\n return result;\n },\n\n async isPackageInstalled(packageName: string) {\n if (!isAndroid()) throw new Error('Not implemented');\n\n const isInstalled = await NativeRNShare.isPackageInstalled(packageName);\n\n const result: IsPackageInstalledResult = {\n isInstalled,\n message: 'Package is Installed',\n };\n\n return result;\n },\n} as const;\n\nexport { Overlay, Sheet, Button, ShareSheet, ShareAsset, Social };\nexport type { ShareSingleOptions, ShareOptions, ActivityType, IsPackageInstalledResult };\nexport type { OverlayProps } from './components/Overlay';\nexport type { SheetProps } from './components/Sheet';\nexport type { ButtonProps } from './components/Button';\nexport type { ShareSheetProps } from './components/ShareSheet';\nexport default RNShare;\n"],"mappings":"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"}
|
|
@@ -9,14 +9,13 @@ export function normalizeShareOpenOptions(_ref) {
|
|
|
9
9
|
options.urls = [options.url];
|
|
10
10
|
delete options.url;
|
|
11
11
|
|
|
12
|
-
// Concern: I could be wrong but there seems to be an implicit association between url and filename in the native code.
|
|
13
|
-
// I don't understand object-c but it looks like we're using urls index to look up a filename. What happens if the length of urls doesn't match the length of filenames? Maybe we can throw an error.
|
|
14
12
|
// Reference: https://github.com/react-native-share/react-native-share/pull/1396/files#diff-2d42a82ccc4ec42d9bfea630535ec2b757bd7a90b96d33d5d5433da17f4bdf79R208
|
|
15
13
|
if (options.filename && !options.filenames) {
|
|
16
14
|
options.filenames = [options.filename];
|
|
17
15
|
}
|
|
18
16
|
}
|
|
19
17
|
}
|
|
18
|
+
options.failOnCancel = options.failOnCancel ?? true;
|
|
20
19
|
return options;
|
|
21
20
|
}
|
|
22
21
|
export function normalizeSingleShareOptions(_ref2) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["isIOS","normalizeShareOpenOptions","_ref","options","url","urls","filename","filenames","normalizeSingleShareOptions","_ref2"],"sources":["options.ts"],"sourcesContent":["import { ShareOptions, ShareSingleOptions } from '../types';\nimport { isIOS } from './platform';\n\nexport function normalizeShareOpenOptions({ ...options }: ShareOptions) {\n if (isIOS()) {\n // Backward compatibility with { Share } from react-native\n if (options.url && !options.urls) {\n options.urls = [options.url];\n delete options.url;\n\n //
|
|
1
|
+
{"version":3,"names":["isIOS","normalizeShareOpenOptions","_ref","options","url","urls","filename","filenames","failOnCancel","normalizeSingleShareOptions","_ref2"],"sources":["options.ts"],"sourcesContent":["import { ShareOptions, ShareSingleOptions } from '../types';\nimport { isIOS } from './platform';\n\nexport function normalizeShareOpenOptions({ ...options }: ShareOptions) {\n if (isIOS()) {\n // Backward compatibility with { Share } from react-native\n if (options.url && !options.urls) {\n options.urls = [options.url];\n delete options.url;\n\n // Reference: https://github.com/react-native-share/react-native-share/pull/1396/files#diff-2d42a82ccc4ec42d9bfea630535ec2b757bd7a90b96d33d5d5433da17f4bdf79R208\n if (options.filename && !options.filenames) {\n options.filenames = [options.filename];\n }\n }\n }\n\n options.failOnCancel = options.failOnCancel ?? true;\n\n return options;\n}\n\nexport function normalizeSingleShareOptions({ ...options }: ShareSingleOptions) {\n if (options.url) options.urls = [options.url];\n return options;\n}\n"],"mappings":"AACA,SAASA,KAAK,QAAQ,YAAY;AAElC,OAAO,SAASC,yBAAyBA,CAAAC,IAAA,EAA+B;EAAA,IAA9B;IAAE,GAAGC;EAAsB,CAAC,GAAAD,IAAA;EACpE,IAAIF,KAAK,CAAC,CAAC,EAAE;IACX;IACA,IAAIG,OAAO,CAACC,GAAG,IAAI,CAACD,OAAO,CAACE,IAAI,EAAE;MAChCF,OAAO,CAACE,IAAI,GAAG,CAACF,OAAO,CAACC,GAAG,CAAC;MAC5B,OAAOD,OAAO,CAACC,GAAG;;MAElB;MACA,IAAID,OAAO,CAACG,QAAQ,IAAI,CAACH,OAAO,CAACI,SAAS,EAAE;QAC1CJ,OAAO,CAACI,SAAS,GAAG,CAACJ,OAAO,CAACG,QAAQ,CAAC;MACxC;IACF;EACF;EAEAH,OAAO,CAACK,YAAY,GAAGL,OAAO,CAACK,YAAY,IAAI,IAAI;EAEnD,OAAOL,OAAO;AAChB;AAEA,OAAO,SAASM,2BAA2BA,CAAAC,KAAA,EAAqC;EAAA,IAApC;IAAE,GAAGP;EAA4B,CAAC,GAAAO,KAAA;EAC5E,IAAIP,OAAO,CAACC,GAAG,EAAED,OAAO,CAACE,IAAI,GAAG,CAACF,OAAO,CAACC,GAAG,CAAC;EAC7C,OAAOD,OAAO;AAChB"}
|
package/lib/module/index.js
CHANGED
|
@@ -35,8 +35,16 @@ const RNShare = {
|
|
|
35
35
|
await checkPermissions(options);
|
|
36
36
|
options = normalizeShareOpenOptions(options);
|
|
37
37
|
const result = await NativeRNShare.open(options);
|
|
38
|
-
if (!result.success
|
|
39
|
-
|
|
38
|
+
if (!result.success) {
|
|
39
|
+
if (options.failOnCancel) {
|
|
40
|
+
throw new Error('User did not share');
|
|
41
|
+
}
|
|
42
|
+
const dismissedResult = {
|
|
43
|
+
dismissedAction: true,
|
|
44
|
+
success: result.success,
|
|
45
|
+
message: result.message
|
|
46
|
+
};
|
|
47
|
+
return dismissedResult;
|
|
40
48
|
}
|
|
41
49
|
return result;
|
|
42
50
|
},
|
|
@@ -52,7 +60,6 @@ const RNShare = {
|
|
|
52
60
|
message
|
|
53
61
|
} = await NativeRNShare.shareSingle(options);
|
|
54
62
|
const result = {
|
|
55
|
-
// Concern: Why do we need to covert success to boolean? A comment would be insightful
|
|
56
63
|
success: Boolean(success),
|
|
57
64
|
message
|
|
58
65
|
};
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NativeRNShare","Overlay","Sheet","Button","ShareSheet","checkPermissions","Social","ShareAsset","isAndroid","isIOS","normalizeShareOpenOptions","normalizeSingleShareOptions","RNShare","FACEBOOK","getConstants","Facebook","FACEBOOK_STORIES","FACEBOOKSTORIES","FacebookStories","PAGESMANAGER","Pagesmanager","TWITTER","Twitter","WHATSAPP","Whatsapp","WHATSAPPBUSINESS","Whatsappbusiness","INSTAGRAM","Instagram","INSTAGRAM_STORIES","INSTAGRAMSTORIES","InstagramStories","GOOGLEPLUS","Googleplus","EMAIL","Email","PINTEREST","Pinterest","LINKEDIN","Linkedin","SMS","Sms","TELEGRAM","Telegram","MESSENGER","Messenger","SNAPCHAT","Snapchat","VIBER","Viber","open","options","result","success","failOnCancel","Error","shareSingle","social","appId","
|
|
1
|
+
{"version":3,"names":["NativeRNShare","Overlay","Sheet","Button","ShareSheet","checkPermissions","Social","ShareAsset","isAndroid","isIOS","normalizeShareOpenOptions","normalizeSingleShareOptions","RNShare","FACEBOOK","getConstants","Facebook","FACEBOOK_STORIES","FACEBOOKSTORIES","FacebookStories","PAGESMANAGER","Pagesmanager","TWITTER","Twitter","WHATSAPP","Whatsapp","WHATSAPPBUSINESS","Whatsappbusiness","INSTAGRAM","Instagram","INSTAGRAM_STORIES","INSTAGRAMSTORIES","InstagramStories","GOOGLEPLUS","Googleplus","EMAIL","Email","PINTEREST","Pinterest","LINKEDIN","Linkedin","SMS","Sms","TELEGRAM","Telegram","MESSENGER","Messenger","SNAPCHAT","Snapchat","VIBER","Viber","open","options","result","success","failOnCancel","Error","dismissedResult","dismissedAction","message","shareSingle","social","appId","Boolean","isPackageInstalled","packageName","isInstalled"],"sources":["index.tsx"],"sourcesContent":["import NativeRNShare from '../codegenSpec/NativeRNShare';\n\nimport Overlay from './components/Overlay';\nimport Sheet from './components/Sheet';\nimport Button from './components/Button';\nimport ShareSheet from './components/ShareSheet';\nimport checkPermissions from './helpers/checkPermissions';\nimport {\n Social,\n IsPackageInstalledResult,\n ActivityType,\n ShareAsset,\n ShareOpenResult,\n ShareOptions,\n ShareSingleOptions,\n ShareSingleResult,\n} from './types';\nimport { isAndroid, isIOS } from './helpers/platform';\nimport { normalizeShareOpenOptions, normalizeSingleShareOptions } from './helpers/options';\n\nconst RNShare = {\n Button,\n ShareSheet,\n Overlay,\n Sheet,\n\n Social: {\n FACEBOOK: NativeRNShare.getConstants().FACEBOOK || Social.Facebook,\n FACEBOOK_STORIES: NativeRNShare.getConstants().FACEBOOKSTORIES || Social.FacebookStories,\n PAGESMANAGER: NativeRNShare.getConstants().PAGESMANAGER || Social.Pagesmanager,\n TWITTER: NativeRNShare.getConstants().TWITTER || Social.Twitter,\n WHATSAPP: NativeRNShare.getConstants().WHATSAPP || Social.Whatsapp,\n WHATSAPPBUSINESS: NativeRNShare.getConstants().WHATSAPPBUSINESS || Social.Whatsappbusiness,\n INSTAGRAM: NativeRNShare.getConstants().INSTAGRAM || Social.Instagram,\n INSTAGRAM_STORIES: NativeRNShare.getConstants().INSTAGRAMSTORIES || Social.InstagramStories,\n GOOGLEPLUS: NativeRNShare.getConstants().GOOGLEPLUS || Social.Googleplus,\n EMAIL: NativeRNShare.getConstants().EMAIL || Social.Email,\n PINTEREST: NativeRNShare.getConstants().PINTEREST || Social.Pinterest,\n LINKEDIN: NativeRNShare.getConstants().LINKEDIN || Social.Linkedin,\n SMS: NativeRNShare.getConstants().SMS || Social.Sms,\n TELEGRAM: NativeRNShare.getConstants().TELEGRAM || Social.Telegram,\n MESSENGER: NativeRNShare.getConstants().MESSENGER || Social.Messenger,\n SNAPCHAT: NativeRNShare.getConstants().SNAPCHAT || Social.Snapchat,\n VIBER: NativeRNShare.getConstants().VIBER || Social.Viber,\n },\n\n async open(options: ShareOptions) {\n await checkPermissions(options);\n\n options = normalizeShareOpenOptions(options);\n\n const result: ShareOpenResult = await NativeRNShare.open(options);\n\n if (!result.success) {\n if (options.failOnCancel) {\n throw new Error('User did not share');\n }\n\n const dismissedResult: ShareOpenResult = {\n dismissedAction: true,\n success: result.success,\n message: result.message,\n };\n return dismissedResult;\n }\n\n return result;\n },\n\n async shareSingle(options: ShareSingleOptions) {\n if (!isAndroid() && !isIOS()) throw new Error('Not implemented');\n\n if (options.social === RNShare.Social.INSTAGRAM_STORIES && !options.appId) {\n throw new Error('To share to Instagram Stories you need to provide appId');\n }\n\n await checkPermissions(options);\n\n options = normalizeSingleShareOptions(options);\n\n const { success, message } = await NativeRNShare.shareSingle(options);\n\n const result: ShareSingleResult = {\n success: Boolean(success),\n message,\n };\n\n return result;\n },\n\n async isPackageInstalled(packageName: string) {\n if (!isAndroid()) throw new Error('Not implemented');\n\n const isInstalled = await NativeRNShare.isPackageInstalled(packageName);\n\n const result: IsPackageInstalledResult = {\n isInstalled,\n message: 'Package is Installed',\n };\n\n return result;\n },\n} as const;\n\nexport { Overlay, Sheet, Button, ShareSheet, ShareAsset, Social };\nexport type { ShareSingleOptions, ShareOptions, ActivityType, IsPackageInstalledResult };\nexport type { OverlayProps } from './components/Overlay';\nexport type { SheetProps } from './components/Sheet';\nexport type { ButtonProps } from './components/Button';\nexport type { ShareSheetProps } from './components/ShareSheet';\nexport default RNShare;\n"],"mappings":"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"}
|
package/package.json
CHANGED
package/src/helpers/options.ts
CHANGED
|
@@ -8,8 +8,6 @@ export function normalizeShareOpenOptions({ ...options }: ShareOptions) {
|
|
|
8
8
|
options.urls = [options.url];
|
|
9
9
|
delete options.url;
|
|
10
10
|
|
|
11
|
-
// Concern: I could be wrong but there seems to be an implicit association between url and filename in the native code.
|
|
12
|
-
// I don't understand object-c but it looks like we're using urls index to look up a filename. What happens if the length of urls doesn't match the length of filenames? Maybe we can throw an error.
|
|
13
11
|
// Reference: https://github.com/react-native-share/react-native-share/pull/1396/files#diff-2d42a82ccc4ec42d9bfea630535ec2b757bd7a90b96d33d5d5433da17f4bdf79R208
|
|
14
12
|
if (options.filename && !options.filenames) {
|
|
15
13
|
options.filenames = [options.filename];
|
|
@@ -17,6 +15,8 @@ export function normalizeShareOpenOptions({ ...options }: ShareOptions) {
|
|
|
17
15
|
}
|
|
18
16
|
}
|
|
19
17
|
|
|
18
|
+
options.failOnCancel = options.failOnCancel ?? true;
|
|
19
|
+
|
|
20
20
|
return options;
|
|
21
21
|
}
|
|
22
22
|
|
package/src/index.tsx
CHANGED
|
@@ -51,8 +51,17 @@ const RNShare = {
|
|
|
51
51
|
|
|
52
52
|
const result: ShareOpenResult = await NativeRNShare.open(options);
|
|
53
53
|
|
|
54
|
-
if (!result.success
|
|
55
|
-
|
|
54
|
+
if (!result.success) {
|
|
55
|
+
if (options.failOnCancel) {
|
|
56
|
+
throw new Error('User did not share');
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
const dismissedResult: ShareOpenResult = {
|
|
60
|
+
dismissedAction: true,
|
|
61
|
+
success: result.success,
|
|
62
|
+
message: result.message,
|
|
63
|
+
};
|
|
64
|
+
return dismissedResult;
|
|
56
65
|
}
|
|
57
66
|
|
|
58
67
|
return result;
|
|
@@ -72,7 +81,6 @@ const RNShare = {
|
|
|
72
81
|
const { success, message } = await NativeRNShare.shareSingle(options);
|
|
73
82
|
|
|
74
83
|
const result: ShareSingleResult = {
|
|
75
|
-
// Concern: Why do we need to covert success to boolean? A comment would be insightful
|
|
76
84
|
success: Boolean(success),
|
|
77
85
|
message,
|
|
78
86
|
};
|