react-native-share 9.2.1 → 9.2.3

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.
@@ -29,7 +29,7 @@ public class RNShare extends NativeRNShareSpec {
29
29
  }
30
30
 
31
31
  @Override
32
- public Map<String, Object> getConstants() {
32
+ public Map<String, Object> getTypedExportedConstants() {
33
33
  return delegate.getConstants();
34
34
  }
35
35
 
@@ -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 // Concern: I could be wrong but there seems to be an implicit association between url and filename in the native code.\n // 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.\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 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;MACA;MACA,IAAIF,OAAO,CAACI,QAAQ,IAAI,CAACJ,OAAO,CAACK,SAAS,EAAE;QAC1CL,OAAO,CAACK,SAAS,GAAG,CAACL,OAAO,CAACI,QAAQ,CAAC;MACxC;IACF;EACF;EAEA,OAAOJ,OAAO;AAChB;AAEO,SAASM,2BAA2BA,CAAAC,KAAA,EAAqC;EAAA,IAApC;IAAE,GAAGP;EAA4B,CAAC,GAAAO,KAAA;EAC5E,IAAIP,OAAO,CAACE,GAAG,EAAEF,OAAO,CAACG,IAAI,GAAG,CAACH,OAAO,CAACE,GAAG,CAAC;EAC7C,OAAOF,OAAO;AAChB"}
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"}
@@ -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 && options.failOnCancel === false) {
82
- throw new Error('User did not share');
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","message","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 && options.failOnCancel === false) {\n throw new Error('User did not share');\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 // Concern: Why do we need to covert success to boolean? A comment would be insightful\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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"}
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 // Concern: I could be wrong but there seems to be an implicit association between url and filename in the native code.\n // 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.\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 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;MACA;MACA,IAAID,OAAO,CAACG,QAAQ,IAAI,CAACH,OAAO,CAACI,SAAS,EAAE;QAC1CJ,OAAO,CAACI,SAAS,GAAG,CAACJ,OAAO,CAACG,QAAQ,CAAC;MACxC;IACF;EACF;EAEA,OAAOH,OAAO;AAChB;AAEA,OAAO,SAASK,2BAA2BA,CAAAC,KAAA,EAAqC;EAAA,IAApC;IAAE,GAAGN;EAA4B,CAAC,GAAAM,KAAA;EAC5E,IAAIN,OAAO,CAACC,GAAG,EAAED,OAAO,CAACE,IAAI,GAAG,CAACF,OAAO,CAACC,GAAG,CAAC;EAC7C,OAAOD,OAAO;AAChB"}
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"}
@@ -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 && options.failOnCancel === false) {
39
- throw new Error('User did not share');
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
  };
@@ -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","message","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 && options.failOnCancel === false) {\n throw new Error('User did not share');\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 // Concern: Why do we need to covert success to boolean? A comment would be insightful\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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"}
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
@@ -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.1",
4
+ "version": "9.2.3",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "git+https://github.com/react-native-community/react-native-share.git"
@@ -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 && options.failOnCancel === false) {
55
- throw new Error('User did not share');
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
  };