@ohos-ports/react-native-fbsdk-next 13.4.3-beta.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.
Files changed (284) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +943 -0
  3. package/android/build.gradle +57 -0
  4. package/android/src/main/AndroidManifest.xml +46 -0
  5. package/android/src/main/java/com/facebook/reactnative/androidsdk/FBAccessTokenModule.java +151 -0
  6. package/android/src/main/java/com/facebook/reactnative/androidsdk/FBActivityEventListener.java +40 -0
  7. package/android/src/main/java/com/facebook/reactnative/androidsdk/FBAppEventsLoggerModule.java +414 -0
  8. package/android/src/main/java/com/facebook/reactnative/androidsdk/FBAppLinkModule.java +86 -0
  9. package/android/src/main/java/com/facebook/reactnative/androidsdk/FBGameRequestDialogModule.java +94 -0
  10. package/android/src/main/java/com/facebook/reactnative/androidsdk/FBGraphRequestModule.java +283 -0
  11. package/android/src/main/java/com/facebook/reactnative/androidsdk/FBLoginButtonManager.java +83 -0
  12. package/android/src/main/java/com/facebook/reactnative/androidsdk/FBLoginManagerModule.java +171 -0
  13. package/android/src/main/java/com/facebook/reactnative/androidsdk/FBMessageDialogModule.java +111 -0
  14. package/android/src/main/java/com/facebook/reactnative/androidsdk/FBProfileModule.java +68 -0
  15. package/android/src/main/java/com/facebook/reactnative/androidsdk/FBSDKCallbackManagerBaseJavaModule.java +41 -0
  16. package/android/src/main/java/com/facebook/reactnative/androidsdk/FBSDKPackage.java +60 -0
  17. package/android/src/main/java/com/facebook/reactnative/androidsdk/FBSendButtonManager.java +51 -0
  18. package/android/src/main/java/com/facebook/reactnative/androidsdk/FBSettingsModule.java +95 -0
  19. package/android/src/main/java/com/facebook/reactnative/androidsdk/FBShareButtonManager.java +53 -0
  20. package/android/src/main/java/com/facebook/reactnative/androidsdk/FBShareDialogModule.java +107 -0
  21. package/android/src/main/java/com/facebook/reactnative/androidsdk/RCTLoginButton.java +126 -0
  22. package/android/src/main/java/com/facebook/reactnative/androidsdk/RCTLoginButtonEvent.java +27 -0
  23. package/android/src/main/java/com/facebook/reactnative/androidsdk/ReactNativeFacebookSDKCallback.java +58 -0
  24. package/android/src/main/java/com/facebook/reactnative/androidsdk/Utility.java +283 -0
  25. package/app.plugin.js +1 -0
  26. package/expo-module.config.json +10 -0
  27. package/ios/ExpoAdapterFBSDKNext/FacebookAppDelegate.swift +21 -0
  28. package/ios/ExpoAdapterFBSDKNext.podspec +33 -0
  29. package/ios/RCTFBSDK/core/RCTConvert+FBSDKAccessToken.h +27 -0
  30. package/ios/RCTFBSDK/core/RCTConvert+FBSDKAccessToken.m +41 -0
  31. package/ios/RCTFBSDK/core/RCTFBSDKAEMReporter.m +30 -0
  32. package/ios/RCTFBSDK/core/RCTFBSDKAccessToken.h +24 -0
  33. package/ios/RCTFBSDK/core/RCTFBSDKAccessToken.m +115 -0
  34. package/ios/RCTFBSDK/core/RCTFBSDKAppEvents.h +24 -0
  35. package/ios/RCTFBSDK/core/RCTFBSDKAppEvents.m +251 -0
  36. package/ios/RCTFBSDK/core/RCTFBSDKAppLink.h +24 -0
  37. package/ios/RCTFBSDK/core/RCTFBSDKAppLink.m +52 -0
  38. package/ios/RCTFBSDK/core/RCTFBSDKAuthenticationToken.h +6 -0
  39. package/ios/RCTFBSDK/core/RCTFBSDKAuthenticationToken.m +35 -0
  40. package/ios/RCTFBSDK/core/RCTFBSDKGraphRequestConnectionContainer.h +50 -0
  41. package/ios/RCTFBSDK/core/RCTFBSDKGraphRequestConnectionContainer.m +124 -0
  42. package/ios/RCTFBSDK/core/RCTFBSDKGraphRequestManager.h +25 -0
  43. package/ios/RCTFBSDK/core/RCTFBSDKGraphRequestManager.m +43 -0
  44. package/ios/RCTFBSDK/core/RCTFBSDKProfile.h +6 -0
  45. package/ios/RCTFBSDK/core/RCTFBSDKProfile.m +58 -0
  46. package/ios/RCTFBSDK/core/RCTFBSDKSettings.h +14 -0
  47. package/ios/RCTFBSDK/core/RCTFBSDKSettings.m +80 -0
  48. package/ios/RCTFBSDK/login/RCTConvert+FBSDKLogin.h +28 -0
  49. package/ios/RCTFBSDK/login/RCTConvert+FBSDKLogin.m +35 -0
  50. package/ios/RCTFBSDK/login/RCTFBSDKLoginButtonManager.h +25 -0
  51. package/ios/RCTFBSDK/login/RCTFBSDKLoginButtonManager.m +73 -0
  52. package/ios/RCTFBSDK/login/RCTFBSDKLoginButtonView.h +12 -0
  53. package/ios/RCTFBSDK/login/RCTFBSDKLoginButtonView.m +57 -0
  54. package/ios/RCTFBSDK/login/RCTFBSDKLoginManager.h +22 -0
  55. package/ios/RCTFBSDK/login/RCTFBSDKLoginManager.m +154 -0
  56. package/ios/RCTFBSDK/share/RCTConvert+FBSDKSharingContent.h +29 -0
  57. package/ios/RCTFBSDK/share/RCTConvert+FBSDKSharingContent.m +111 -0
  58. package/ios/RCTFBSDK/share/RCTFBSDKGameRequestDialog.h +24 -0
  59. package/ios/RCTFBSDK/share/RCTFBSDKGameRequestDialog.m +134 -0
  60. package/ios/RCTFBSDK/share/RCTFBSDKMessageDialog.h +24 -0
  61. package/ios/RCTFBSDK/share/RCTFBSDKMessageDialog.m +116 -0
  62. package/ios/RCTFBSDK/share/RCTFBSDKSendButtonManager.h +25 -0
  63. package/ios/RCTFBSDK/share/RCTFBSDKSendButtonManager.m +39 -0
  64. package/ios/RCTFBSDK/share/RCTFBSDKShareButtonManager.h +23 -0
  65. package/ios/RCTFBSDK/share/RCTFBSDKShareButtonManager.m +39 -0
  66. package/ios/RCTFBSDK/share/RCTFBSDKShareDialog.h +24 -0
  67. package/ios/RCTFBSDK/share/RCTFBSDKShareDialog.m +134 -0
  68. package/ios/RCTFBSDK/share/RCTFBSDKShareHelper.h +21 -0
  69. package/ios/RCTFBSDK/share/RCTFBSDKShareHelper.m +32 -0
  70. package/ios/RCTFBSDK.xcodeproj/project.pbxproj +446 -0
  71. package/ios/RCTFBSDK.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  72. package/ios/RCTFBSDK.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  73. package/jest/mocks/index.js +81 -0
  74. package/jest/setup.js +3 -0
  75. package/lib/commonjs/FBAEMReporter.js +39 -0
  76. package/lib/commonjs/FBAEMReporter.js.map +1 -0
  77. package/lib/commonjs/FBAccessToken.js +198 -0
  78. package/lib/commonjs/FBAccessToken.js.map +1 -0
  79. package/lib/commonjs/FBAppEventsLogger.js +221 -0
  80. package/lib/commonjs/FBAppEventsLogger.js.map +1 -0
  81. package/lib/commonjs/FBAppLink.js +36 -0
  82. package/lib/commonjs/FBAppLink.js.map +1 -0
  83. package/lib/commonjs/FBAuthenticationToken.js +55 -0
  84. package/lib/commonjs/FBAuthenticationToken.js.map +1 -0
  85. package/lib/commonjs/FBGameRequestDialog.js +45 -0
  86. package/lib/commonjs/FBGameRequestDialog.js.map +1 -0
  87. package/lib/commonjs/FBGraphRequest.js +66 -0
  88. package/lib/commonjs/FBGraphRequest.js.map +1 -0
  89. package/lib/commonjs/FBGraphRequestManager.js +96 -0
  90. package/lib/commonjs/FBGraphRequestManager.js.map +1 -0
  91. package/lib/commonjs/FBLoginButton.js +67 -0
  92. package/lib/commonjs/FBLoginButton.js.map +1 -0
  93. package/lib/commonjs/FBLoginManager.js +102 -0
  94. package/lib/commonjs/FBLoginManager.js.map +1 -0
  95. package/lib/commonjs/FBMessageDialog.js +51 -0
  96. package/lib/commonjs/FBMessageDialog.js.map +1 -0
  97. package/lib/commonjs/FBProfile.js +134 -0
  98. package/lib/commonjs/FBProfile.js.map +1 -0
  99. package/lib/commonjs/FBSendButton.js +48 -0
  100. package/lib/commonjs/FBSendButton.js.map +1 -0
  101. package/lib/commonjs/FBSettings.js +115 -0
  102. package/lib/commonjs/FBSettings.js.map +1 -0
  103. package/lib/commonjs/FBShareButton.js +48 -0
  104. package/lib/commonjs/FBShareButton.js.map +1 -0
  105. package/lib/commonjs/FBShareDialog.js +57 -0
  106. package/lib/commonjs/FBShareDialog.js.map +1 -0
  107. package/lib/commonjs/index.js +323 -0
  108. package/lib/commonjs/index.js.map +1 -0
  109. package/lib/commonjs/models/FBAppGroupCreationContent.js +2 -0
  110. package/lib/commonjs/models/FBAppGroupCreationContent.js.map +1 -0
  111. package/lib/commonjs/models/FBGameRequestContent.js +2 -0
  112. package/lib/commonjs/models/FBGameRequestContent.js.map +1 -0
  113. package/lib/commonjs/models/FBSDKCallback.js +2 -0
  114. package/lib/commonjs/models/FBSDKCallback.js.map +1 -0
  115. package/lib/commonjs/models/FBShareContent.js +6 -0
  116. package/lib/commonjs/models/FBShareContent.js.map +1 -0
  117. package/lib/commonjs/models/FBShareLinkContent.js +6 -0
  118. package/lib/commonjs/models/FBShareLinkContent.js.map +1 -0
  119. package/lib/commonjs/models/FBSharePhoto.js +2 -0
  120. package/lib/commonjs/models/FBSharePhoto.js.map +1 -0
  121. package/lib/commonjs/models/FBSharePhotoContent.js +6 -0
  122. package/lib/commonjs/models/FBSharePhotoContent.js.map +1 -0
  123. package/lib/commonjs/models/FBShareVideo.js +2 -0
  124. package/lib/commonjs/models/FBShareVideo.js.map +1 -0
  125. package/lib/commonjs/models/FBShareVideoContent.js +6 -0
  126. package/lib/commonjs/models/FBShareVideoContent.js.map +1 -0
  127. package/lib/commonjs/util/validate.js +180 -0
  128. package/lib/commonjs/util/validate.js.map +1 -0
  129. package/lib/commonjs/utils/index.js +2 -0
  130. package/lib/commonjs/utils/index.js.map +1 -0
  131. package/lib/module/FBAEMReporter.js +34 -0
  132. package/lib/module/FBAEMReporter.js.map +1 -0
  133. package/lib/module/FBAccessToken.js +191 -0
  134. package/lib/module/FBAccessToken.js.map +1 -0
  135. package/lib/module/FBAppEventsLogger.js +215 -0
  136. package/lib/module/FBAppEventsLogger.js.map +1 -0
  137. package/lib/module/FBAppLink.js +29 -0
  138. package/lib/module/FBAppLink.js.map +1 -0
  139. package/lib/module/FBAuthenticationToken.js +48 -0
  140. package/lib/module/FBAuthenticationToken.js.map +1 -0
  141. package/lib/module/FBGameRequestDialog.js +39 -0
  142. package/lib/module/FBGameRequestDialog.js.map +1 -0
  143. package/lib/module/FBGraphRequest.js +60 -0
  144. package/lib/module/FBGraphRequest.js.map +1 -0
  145. package/lib/module/FBGraphRequestManager.js +90 -0
  146. package/lib/module/FBGraphRequestManager.js.map +1 -0
  147. package/lib/module/FBLoginButton.js +62 -0
  148. package/lib/module/FBLoginButton.js.map +1 -0
  149. package/lib/module/FBLoginManager.js +97 -0
  150. package/lib/module/FBLoginManager.js.map +1 -0
  151. package/lib/module/FBMessageDialog.js +45 -0
  152. package/lib/module/FBMessageDialog.js.map +1 -0
  153. package/lib/module/FBProfile.js +127 -0
  154. package/lib/module/FBProfile.js.map +1 -0
  155. package/lib/module/FBSendButton.js +41 -0
  156. package/lib/module/FBSendButton.js.map +1 -0
  157. package/lib/module/FBSettings.js +108 -0
  158. package/lib/module/FBSettings.js.map +1 -0
  159. package/lib/module/FBShareButton.js +41 -0
  160. package/lib/module/FBShareButton.js.map +1 -0
  161. package/lib/module/FBShareDialog.js +51 -0
  162. package/lib/module/FBShareDialog.js.map +1 -0
  163. package/lib/module/index.js +44 -0
  164. package/lib/module/index.js.map +1 -0
  165. package/lib/module/models/FBAppGroupCreationContent.js +2 -0
  166. package/lib/module/models/FBAppGroupCreationContent.js.map +1 -0
  167. package/lib/module/models/FBGameRequestContent.js +2 -0
  168. package/lib/module/models/FBGameRequestContent.js.map +1 -0
  169. package/lib/module/models/FBSDKCallback.js +2 -0
  170. package/lib/module/models/FBSDKCallback.js.map +1 -0
  171. package/lib/module/models/FBShareContent.js +2 -0
  172. package/lib/module/models/FBShareContent.js.map +1 -0
  173. package/lib/module/models/FBShareLinkContent.js +2 -0
  174. package/lib/module/models/FBShareLinkContent.js.map +1 -0
  175. package/lib/module/models/FBSharePhoto.js +2 -0
  176. package/lib/module/models/FBSharePhoto.js.map +1 -0
  177. package/lib/module/models/FBSharePhotoContent.js +2 -0
  178. package/lib/module/models/FBSharePhotoContent.js.map +1 -0
  179. package/lib/module/models/FBShareVideo.js +2 -0
  180. package/lib/module/models/FBShareVideo.js.map +1 -0
  181. package/lib/module/models/FBShareVideoContent.js +2 -0
  182. package/lib/module/models/FBShareVideoContent.js.map +1 -0
  183. package/lib/module/util/validate.js +157 -0
  184. package/lib/module/util/validate.js.map +1 -0
  185. package/lib/module/utils/index.js +2 -0
  186. package/lib/module/utils/index.js.map +1 -0
  187. package/lib/typescript/FBAEMReporter.d.ts +21 -0
  188. package/lib/typescript/FBAEMReporter.d.ts.map +1 -0
  189. package/lib/typescript/FBAccessToken.d.ts +118 -0
  190. package/lib/typescript/FBAccessToken.d.ts.map +1 -0
  191. package/lib/typescript/FBAppEventsLogger.d.ts +201 -0
  192. package/lib/typescript/FBAppEventsLogger.d.ts.map +1 -0
  193. package/lib/typescript/FBAppLink.d.ts +5 -0
  194. package/lib/typescript/FBAppLink.d.ts.map +1 -0
  195. package/lib/typescript/FBAuthenticationToken.d.ts +29 -0
  196. package/lib/typescript/FBAuthenticationToken.d.ts.map +1 -0
  197. package/lib/typescript/FBGameRequestDialog.d.ts +39 -0
  198. package/lib/typescript/FBGameRequestDialog.d.ts.map +1 -0
  199. package/lib/typescript/FBGraphRequest.d.ts +70 -0
  200. package/lib/typescript/FBGraphRequest.d.ts.map +1 -0
  201. package/lib/typescript/FBGraphRequestManager.d.ts +51 -0
  202. package/lib/typescript/FBGraphRequestManager.d.ts.map +1 -0
  203. package/lib/typescript/FBLoginButton.d.ts +92 -0
  204. package/lib/typescript/FBLoginButton.d.ts.map +1 -0
  205. package/lib/typescript/FBLoginManager.d.ts +77 -0
  206. package/lib/typescript/FBLoginManager.d.ts.map +1 -0
  207. package/lib/typescript/FBMessageDialog.d.ts +42 -0
  208. package/lib/typescript/FBMessageDialog.d.ts.map +1 -0
  209. package/lib/typescript/FBProfile.d.ts +127 -0
  210. package/lib/typescript/FBProfile.d.ts.map +1 -0
  211. package/lib/typescript/FBSendButton.d.ts +42 -0
  212. package/lib/typescript/FBSendButton.d.ts.map +1 -0
  213. package/lib/typescript/FBSettings.d.ts +49 -0
  214. package/lib/typescript/FBSettings.d.ts.map +1 -0
  215. package/lib/typescript/FBShareButton.d.ts +42 -0
  216. package/lib/typescript/FBShareButton.d.ts.map +1 -0
  217. package/lib/typescript/FBShareDialog.d.ts +69 -0
  218. package/lib/typescript/FBShareDialog.d.ts.map +1 -0
  219. package/lib/typescript/index.d.ts +43 -0
  220. package/lib/typescript/index.d.ts.map +1 -0
  221. package/lib/typescript/models/FBAppGroupCreationContent.d.ts +43 -0
  222. package/lib/typescript/models/FBAppGroupCreationContent.d.ts.map +1 -0
  223. package/lib/typescript/models/FBGameRequestContent.d.ts +63 -0
  224. package/lib/typescript/models/FBGameRequestContent.d.ts.map +1 -0
  225. package/lib/typescript/models/FBSDKCallback.d.ts +4 -0
  226. package/lib/typescript/models/FBSDKCallback.d.ts.map +1 -0
  227. package/lib/typescript/models/FBShareContent.d.ts +48 -0
  228. package/lib/typescript/models/FBShareContent.d.ts.map +1 -0
  229. package/lib/typescript/models/FBShareLinkContent.d.ts +65 -0
  230. package/lib/typescript/models/FBShareLinkContent.d.ts.map +1 -0
  231. package/lib/typescript/models/FBSharePhoto.d.ts +43 -0
  232. package/lib/typescript/models/FBSharePhoto.d.ts.map +1 -0
  233. package/lib/typescript/models/FBSharePhotoContent.d.ts +45 -0
  234. package/lib/typescript/models/FBSharePhotoContent.d.ts.map +1 -0
  235. package/lib/typescript/models/FBShareVideo.d.ts +31 -0
  236. package/lib/typescript/models/FBShareVideo.d.ts.map +1 -0
  237. package/lib/typescript/models/FBShareVideoContent.d.ts +58 -0
  238. package/lib/typescript/models/FBShareVideoContent.d.ts.map +1 -0
  239. package/lib/typescript/util/validate.d.ts +62 -0
  240. package/lib/typescript/util/validate.d.ts.map +1 -0
  241. package/lib/typescript/utils/index.d.ts +2 -0
  242. package/lib/typescript/utils/index.d.ts.map +1 -0
  243. package/package.json +155 -0
  244. package/plugin/build/config.d.ts +53 -0
  245. package/plugin/build/config.js +46 -0
  246. package/plugin/build/withFacebook.d.ts +4 -0
  247. package/plugin/build/withFacebook.js +59 -0
  248. package/plugin/build/withFacebookAndroid.d.ts +6 -0
  249. package/plugin/build/withFacebookAndroid.js +197 -0
  250. package/plugin/build/withFacebookIOS.d.ts +15 -0
  251. package/plugin/build/withFacebookIOS.js +163 -0
  252. package/plugin/build/withSKAdNetworkIdentifiers.d.ts +9 -0
  253. package/plugin/build/withSKAdNetworkIdentifiers.js +36 -0
  254. package/plugin/tsconfig.json +9 -0
  255. package/react-native-fbsdk-next.podspec +34 -0
  256. package/src/FBAEMReporter.ts +44 -0
  257. package/src/FBAccessToken.ts +222 -0
  258. package/src/FBAppEventsLogger.ts +375 -0
  259. package/src/FBAppLink.ts +30 -0
  260. package/src/FBAuthenticationToken.ts +61 -0
  261. package/src/FBGameRequestDialog.ts +49 -0
  262. package/src/FBGraphRequest.ts +89 -0
  263. package/src/FBGraphRequestManager.ts +117 -0
  264. package/src/FBLoginButton.tsx +152 -0
  265. package/src/FBLoginManager.ts +133 -0
  266. package/src/FBMessageDialog.ts +53 -0
  267. package/src/FBProfile.ts +166 -0
  268. package/src/FBSendButton.tsx +61 -0
  269. package/src/FBSettings.ts +122 -0
  270. package/src/FBShareButton.tsx +61 -0
  271. package/src/FBShareDialog.ts +96 -0
  272. package/src/index.ts +85 -0
  273. package/src/models/FBAppGroupCreationContent.ts +48 -0
  274. package/src/models/FBGameRequestContent.ts +81 -0
  275. package/src/models/FBSDKCallback.ts +3 -0
  276. package/src/models/FBShareContent.ts +54 -0
  277. package/src/models/FBShareLinkContent.ts +71 -0
  278. package/src/models/FBSharePhoto.ts +45 -0
  279. package/src/models/FBSharePhotoContent.ts +48 -0
  280. package/src/models/FBShareVideo.ts +31 -0
  281. package/src/models/FBShareVideoContent.ts +64 -0
  282. package/src/util/validate.ts +167 -0
  283. package/src/utils/index.ts +1 -0
  284. package/tsconfig.json +103 -0
@@ -0,0 +1,283 @@
1
+ /**
2
+ * Copyright (c) 2014-present, Facebook, Inc. All rights reserved.
3
+ * <p/>
4
+ * You are hereby granted a non-exclusive, worldwide, royalty-free license to use,
5
+ * copy, modify, and distribute this software in source code or binary form for use
6
+ * in connection with the web services and APIs provided by Facebook.
7
+ * <p/>
8
+ * As with any software that integrates with the Facebook platform, your use of
9
+ * this software is subject to the Facebook Developer Principles and Policies
10
+ * [http://developers.facebook.com/policy/]. This copyright notice shall be
11
+ * included in all copies or substantial portions of the software.
12
+ * <p/>
13
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
15
+ * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
16
+ * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
17
+ * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
18
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19
+ */
20
+
21
+ package com.facebook.reactnative.androidsdk;
22
+
23
+ import android.os.Bundle;
24
+ import android.util.SparseArray;
25
+
26
+ import com.facebook.AccessToken;
27
+ import com.facebook.FacebookRequestError;
28
+ import com.facebook.GraphRequest;
29
+ import com.facebook.GraphRequestBatch;
30
+ import com.facebook.GraphResponse;
31
+ import com.facebook.HttpMethod;
32
+ import com.facebook.react.bridge.Arguments;
33
+ import com.facebook.react.bridge.Callback;
34
+ import com.facebook.react.bridge.ReactApplicationContext;
35
+ import com.facebook.react.bridge.ReactContextBaseJavaModule;
36
+ import com.facebook.react.bridge.ReactMethod;
37
+ import com.facebook.react.bridge.ReadableArray;
38
+ import com.facebook.react.bridge.ReadableMap;
39
+ import com.facebook.react.bridge.ReadableMapKeySetIterator;
40
+ import com.facebook.react.bridge.WritableArray;
41
+ import com.facebook.react.bridge.WritableMap;
42
+ import com.facebook.react.module.annotations.ReactModule;
43
+
44
+ import org.json.JSONArray;
45
+ import org.json.JSONException;
46
+ import org.json.JSONObject;
47
+
48
+ import java.util.HashMap;
49
+ import java.util.Iterator;
50
+
51
+ /**
52
+ * FBGraphRequestModule holds a list of request objects and send them to Facebook in a single
53
+ * round-trip.
54
+ */
55
+ @ReactModule(name = FBGraphRequestModule.NAME)
56
+ public class FBGraphRequestModule extends ReactContextBaseJavaModule {
57
+ public static final String NAME = "FBGraphRequest";
58
+
59
+ private SparseArray<WritableMap> mResponses;
60
+
61
+ private class GraphRequestBatchCallback implements GraphRequestBatch.Callback {
62
+
63
+ private int mBatchID;
64
+ private Callback mCallback;
65
+
66
+ public GraphRequestBatchCallback(int batchID, Callback callback) {
67
+ mBatchID = batchID;
68
+ mCallback = callback;
69
+ }
70
+
71
+ @Override
72
+ public void onBatchCompleted(GraphRequestBatch batch) {
73
+ WritableMap result = Arguments.createMap();
74
+ result.putString("result", "batch finished executing or timed out");
75
+ mCallback.invoke(null, result, mResponses.get(mBatchID));
76
+ mResponses.remove(mBatchID);
77
+ }
78
+ }
79
+
80
+ private class GraphRequestCallback implements GraphRequest.Callback {
81
+
82
+ private String mIndex;
83
+ private int mBatchID;
84
+
85
+ public GraphRequestCallback(int index, int batchID) {
86
+ mIndex = String.valueOf(index);
87
+ mBatchID = batchID;
88
+ }
89
+
90
+ @Override
91
+ public void onCompleted(GraphResponse response) {
92
+ WritableArray responseArray = Arguments.createArray();
93
+ responseArray.pushMap(buildFacebookRequestError(response.getError()));
94
+ responseArray.pushMap(buildGraphResponse(response));
95
+ mResponses.get(mBatchID).putArray(mIndex, responseArray);
96
+ }
97
+ }
98
+
99
+ public FBGraphRequestModule(ReactApplicationContext reactContext) {
100
+ super(reactContext);
101
+ mResponses = new SparseArray<WritableMap>();
102
+ }
103
+
104
+ @Override
105
+ public String getName() {
106
+ return NAME;
107
+ }
108
+
109
+ /**
110
+ * Send the batch of requests.
111
+ * @param requestBatch
112
+ * @param timeout
113
+ * @param batchCallback
114
+ */
115
+ @ReactMethod
116
+ public void start(ReadableArray requestBatch, int timeout, Callback batchCallback) {
117
+ GraphRequestBatch batch = new GraphRequestBatch();
118
+ int potentialID = 0;
119
+ int batchID = 0;
120
+ synchronized (this) {
121
+ do {
122
+ batchID = potentialID++;
123
+ } while (mResponses.get(batchID) != null);
124
+ mResponses.put(batchID, Arguments.createMap());
125
+ }
126
+ for (int i = 0; i < requestBatch.size(); i++) {
127
+ GraphRequest request = buildRequest(requestBatch.getMap(i));
128
+ request.setCallback(new GraphRequestCallback(i, batchID));
129
+ batch.add(request);
130
+ }
131
+ batch.setTimeout(timeout);
132
+ GraphRequestBatchCallback callback = new GraphRequestBatchCallback(batchID, batchCallback);
133
+ batch.addCallback(callback);
134
+ batch.executeAsync();
135
+ }
136
+
137
+ private GraphRequest buildRequest(ReadableMap requestMap) {
138
+ GraphRequest graphRequest = new GraphRequest();
139
+ graphRequest.setGraphPath(requestMap.getString("graphPath"));
140
+ setConfig(graphRequest, requestMap.getMap("config"));
141
+ return graphRequest;
142
+ }
143
+
144
+ private void setConfig(GraphRequest graphRequest, ReadableMap configMap) {
145
+ if (configMap == null) {
146
+ graphRequest.setAccessToken(AccessToken.getCurrentAccessToken());
147
+ return;
148
+ }
149
+ if (configMap.hasKey("parameters")) {
150
+ graphRequest.setParameters(buildParameters(configMap.getMap("parameters")));
151
+ }
152
+ if (configMap.hasKey("httpMethod")) {
153
+ graphRequest.setHttpMethod(HttpMethod.valueOf(configMap.getString("httpMethod")));
154
+ }
155
+ if (configMap.hasKey("version")) {
156
+ graphRequest.setVersion(configMap.getString("version"));
157
+ }
158
+ if (configMap.hasKey("accessToken")) {
159
+ graphRequest.setAccessToken(new AccessToken(
160
+ configMap.getString("accessToken"),
161
+ AccessToken.getCurrentAccessToken().getApplicationId(),
162
+ AccessToken.getCurrentAccessToken().getUserId(),
163
+ null,
164
+ null,
165
+ null,
166
+ null,
167
+ null,
168
+ null,
169
+ null));
170
+ } else {
171
+ graphRequest.setAccessToken(AccessToken.getCurrentAccessToken());
172
+ }
173
+ }
174
+
175
+ private Bundle buildParameters(ReadableMap parameterMap) {
176
+ Bundle parameters = new Bundle();
177
+ ReadableMapKeySetIterator keyIterator = parameterMap.keySetIterator();
178
+ while (keyIterator.hasNextKey()) {
179
+ String key = keyIterator.nextKey();
180
+ ReadableMap parameter = parameterMap.getMap(key);
181
+ if (parameter.hasKey("string")) {
182
+ parameters.putString(key, parameter.getString("string"));
183
+ }
184
+ }
185
+ return parameters;
186
+ }
187
+
188
+ private WritableMap buildFacebookRequestError(FacebookRequestError error) {
189
+ if (error == null) {
190
+ return null;
191
+ }
192
+ WritableMap errorMap = Arguments.createMap();
193
+ errorMap.putInt("requestStatusCode", error.getRequestStatusCode());
194
+ errorMap.putInt("errorCode", error.getErrorCode());
195
+ errorMap.putInt("subErrorCode", error.getSubErrorCode());
196
+ if (error.getErrorType() != null) {
197
+ errorMap.putString("errorType", error.getErrorType());
198
+ }
199
+ if (error.getErrorMessage() != null) {
200
+ errorMap.putString("errorMessage", error.getErrorMessage());
201
+ }
202
+ if (error.getErrorUserTitle() != null) {
203
+ errorMap.putString("errorUserTitle", error.getErrorUserTitle());
204
+ }
205
+ if (error.getErrorUserMessage() != null) {
206
+ errorMap.putString("errorUserMessage", error.getErrorUserMessage());
207
+ }
208
+ if (error.getRequestResultBody() != null) {
209
+ errorMap.putString("requestResultBody", error.getRequestResultBody().toString());
210
+ }
211
+ if (error.getRequestResult() != null) {
212
+ errorMap.putString("requestResult", error.getRequestResult().toString());
213
+ }
214
+ if (error.getBatchRequestResult() != null) {
215
+ errorMap.putString("batchRequestResult", error.getBatchRequestResult().toString());
216
+ }
217
+ if (error.getException() != null) {
218
+ errorMap.putString("exception", error.getException().toString());
219
+ }
220
+ return errorMap;
221
+ }
222
+
223
+ private WritableMap buildGraphResponse(GraphResponse response) {
224
+ if (response.getJSONObject() != null) {
225
+ return convertJSONObject(response.getJSONObject());
226
+ }
227
+ return Arguments.createMap();
228
+ }
229
+
230
+ private WritableArray convertJSONArray(JSONArray jsonArray) {
231
+ WritableArray result = Arguments.createArray();
232
+ for (int i = 0; i < jsonArray.length(); i++) {
233
+ Object object;
234
+ try {
235
+ object = jsonArray.get(i);
236
+ } catch (JSONException e) {
237
+ return result;
238
+ }
239
+ if (object instanceof JSONObject) {
240
+ result.pushMap(convertJSONObject((JSONObject) object));
241
+ } else if (object instanceof JSONArray) {
242
+ result.pushArray(convertJSONArray((JSONArray) object));
243
+ } else if (object instanceof String) {
244
+ result.pushString((String) object);
245
+ } else if (object instanceof Integer) {
246
+ result.pushInt((int) object);
247
+ } else if (object instanceof Boolean) {
248
+ result.pushBoolean((Boolean) object);
249
+ } else if (object instanceof Double) {
250
+ result.pushDouble((Double) object);
251
+ }
252
+ }
253
+ return result;
254
+ }
255
+
256
+ private WritableMap convertJSONObject(JSONObject object) {
257
+ WritableMap result = Arguments.createMap();
258
+ Iterator<String> keyIterator = object.keys();
259
+ while (keyIterator.hasNext()) {
260
+ String key = keyIterator.next();
261
+ Object value;
262
+ try {
263
+ value = object.get(key);
264
+ } catch (JSONException e) {
265
+ return result;
266
+ }
267
+ if (value instanceof JSONObject) {
268
+ result.putMap(key, convertJSONObject((JSONObject) value));
269
+ } else if (value instanceof JSONArray) {
270
+ result.putArray(key, convertJSONArray((JSONArray) value));
271
+ } else if (value instanceof String) {
272
+ result.putString(key, (String) value);
273
+ } else if (value instanceof Integer) {
274
+ result.putInt(key, (int) value);
275
+ } else if (value instanceof Boolean) {
276
+ result.putBoolean(key, (Boolean) value);
277
+ } else if (value instanceof Double) {
278
+ result.putDouble(key, (Double) value);
279
+ }
280
+ }
281
+ return result;
282
+ }
283
+ }
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Copyright (c) 2014-present, Facebook, Inc. All rights reserved.
3
+ *
4
+ * You are hereby granted a non-exclusive, worldwide, royalty-free license to use,
5
+ * copy, modify, and distribute this software in source code or binary form for use
6
+ * in connection with the web services and APIs provided by Facebook.
7
+ *
8
+ * As with any software that integrates with the Facebook platform, your use of
9
+ * this software is subject to the Facebook Developer Principles and Policies
10
+ * [http://developers.facebook.com/policy/]. This copyright notice shall be
11
+ * included in all copies or substantial portions of the software.
12
+ *
13
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
15
+ * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
16
+ * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
17
+ * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
18
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19
+ */
20
+
21
+ package com.facebook.reactnative.androidsdk;
22
+
23
+ import androidx.annotation.Nullable;
24
+
25
+ import com.facebook.login.DefaultAudience;
26
+ import com.facebook.login.LoginBehavior;
27
+ import com.facebook.react.bridge.ReactApplicationContext;
28
+ import com.facebook.react.bridge.ReadableArray;
29
+ import com.facebook.react.uimanager.annotations.ReactProp;
30
+ import com.facebook.react.uimanager.SimpleViewManager;
31
+ import com.facebook.react.uimanager.ThemedReactContext;
32
+
33
+ import java.util.Locale;
34
+
35
+ public class FBLoginButtonManager extends SimpleViewManager<RCTLoginButton> {
36
+
37
+ public static final String REACT_CLASS = "RCTFBLoginButton";
38
+
39
+ private final FBActivityEventListener mActivityEventListener = new FBActivityEventListener();
40
+
41
+ public FBLoginButtonManager(ReactApplicationContext reactApplicationContext) {
42
+ reactApplicationContext.addActivityEventListener(mActivityEventListener);
43
+ }
44
+
45
+ @Override
46
+ public String getName() {
47
+ return REACT_CLASS;
48
+ }
49
+
50
+ @Override
51
+ public RCTLoginButton createViewInstance(ThemedReactContext context) {
52
+ return new RCTLoginButton(context, mActivityEventListener.getCallbackManager());
53
+ }
54
+
55
+ @ReactProp(name = "loginBehaviorAndroid")
56
+ public void setLoginBehavior(RCTLoginButton loginButton, @Nullable String loginBehavior) {
57
+ LoginBehavior behavior = LoginBehavior.NATIVE_WITH_FALLBACK;
58
+
59
+ if (loginBehavior != null) {
60
+ behavior = LoginBehavior.valueOf(loginBehavior.toUpperCase(Locale.ROOT));
61
+ }
62
+
63
+ loginButton.setLoginBehavior(behavior);
64
+ }
65
+
66
+ @ReactProp(name = "defaultAudience")
67
+ public void setDefaultAudience(RCTLoginButton loginButton, @Nullable String defaultAudience) {
68
+ DefaultAudience audience = DefaultAudience.FRIENDS;
69
+
70
+ if (defaultAudience != null) {
71
+ audience = DefaultAudience.valueOf(defaultAudience.toUpperCase(Locale.ROOT));
72
+ }
73
+
74
+ loginButton.setDefaultAudience(audience);
75
+ }
76
+
77
+ @ReactProp(name = "permissions")
78
+ public void setPermissions(
79
+ RCTLoginButton loginButton,
80
+ @Nullable ReadableArray publishPermissions) {
81
+ loginButton.setPermissions(Utility.reactArrayToStringList(publishPermissions));
82
+ }
83
+ }
@@ -0,0 +1,171 @@
1
+ /**
2
+ * Copyright (c) 2014-present, Facebook, Inc. All rights reserved.
3
+ *
4
+ * You are hereby granted a non-exclusive, worldwide, royalty-free license to use,
5
+ * copy, modify, and distribute this software in source code or binary form for use
6
+ * in connection with the web services and APIs provided by Facebook.
7
+ *
8
+ * As with any software that integrates with the Facebook platform, your use of
9
+ * this software is subject to the Facebook Developer Principles and Policies
10
+ * [http://developers.facebook.com/policy/]. This copyright notice shall be
11
+ * included in all copies or substantial portions of the software.
12
+ *
13
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
15
+ * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
16
+ * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
17
+ * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
18
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19
+ */
20
+
21
+ package com.facebook.reactnative.androidsdk;
22
+
23
+ import android.app.Activity;
24
+
25
+ import com.facebook.AccessToken;
26
+ import com.facebook.login.DefaultAudience;
27
+ import com.facebook.login.LoginBehavior;
28
+ import com.facebook.login.LoginManager;
29
+ import com.facebook.login.LoginResult;
30
+ import com.facebook.react.bridge.Arguments;
31
+ import com.facebook.react.bridge.NativeModule;
32
+ import com.facebook.react.bridge.Promise;
33
+ import com.facebook.react.bridge.ReactApplicationContext;
34
+ import com.facebook.react.bridge.ReactMethod;
35
+ import com.facebook.react.bridge.ReadableArray;
36
+ import com.facebook.react.bridge.WritableArray;
37
+ import com.facebook.react.bridge.WritableMap;
38
+ import com.facebook.react.module.annotations.ReactModule;
39
+
40
+ import java.util.Locale;
41
+ import java.util.Set;
42
+
43
+ /**
44
+ * This is a {@link NativeModule} that allows JS to use LoginManager of Facebook Android SDK.
45
+ */
46
+ @ReactModule(name = FBLoginManagerModule.NAME)
47
+ public class FBLoginManagerModule extends FBSDKCallbackManagerBaseJavaModule {
48
+
49
+ public static final String NAME = "FBLoginManager";
50
+
51
+ private class LoginManagerCallback extends ReactNativeFacebookSDKCallback<LoginResult> {
52
+
53
+ public LoginManagerCallback(Promise promise) {
54
+ super(promise);
55
+ }
56
+
57
+ @Override
58
+ public void onSuccess(LoginResult loginResult) {
59
+ if (mPromise != null) {
60
+ AccessToken accessToken = loginResult.getAccessToken();
61
+ AccessToken.setCurrentAccessToken(accessToken);
62
+ WritableMap result = Arguments.createMap();
63
+ result.putBoolean("isCancelled", false);
64
+ result.putArray("grantedPermissions",
65
+ setToWritableArray(loginResult.getRecentlyGrantedPermissions()));
66
+ result.putArray("declinedPermissions",
67
+ setToWritableArray(loginResult.getRecentlyDeniedPermissions()));
68
+ mPromise.resolve(result);
69
+ mPromise = null;
70
+ }
71
+ }
72
+ }
73
+
74
+ public FBLoginManagerModule(ReactApplicationContext reactContext, FBActivityEventListener activityEventListener) {
75
+ super(reactContext, activityEventListener);
76
+ }
77
+
78
+ @Override
79
+ public String getName() {
80
+ return NAME;
81
+ }
82
+
83
+ /**
84
+ * Get {@link LoginBehavior} for login attempts.
85
+ * @param promise Use Promise to pass login behavior back to JS.
86
+ */
87
+ @ReactMethod
88
+ public void getLoginBehavior(Promise promise) {
89
+ promise.resolve(LoginManager.getInstance().getLoginBehavior().name().toLowerCase(Locale.ROOT));
90
+ }
91
+
92
+ /**
93
+ * Set {@link LoginBehavior} for login attempts.
94
+ * @param loginBehaviorString must be one of the constants in Enum
95
+ * {@link LoginBehavior}.
96
+ * @throws {@link java.lang.IllegalArgumentException} if the argument is not a valid constant.
97
+ */
98
+ @ReactMethod
99
+ public void setLoginBehavior(String loginBehaviorString) {
100
+ LoginBehavior loginBehavior = LoginBehavior.valueOf(loginBehaviorString.toUpperCase(Locale.ROOT));
101
+ LoginManager.getInstance().setLoginBehavior(loginBehavior);
102
+ }
103
+
104
+ /**
105
+ * Get {@link DefaultAudience} to use for sessions that post data to Facebook.
106
+ * @param promise Use promise to pass default audience back to JS.
107
+ */
108
+ @ReactMethod
109
+ public void getDefaultAudience(Promise promise) {
110
+ promise.resolve(LoginManager.getInstance().getDefaultAudience().name().toLowerCase(Locale.ROOT));
111
+ }
112
+
113
+ /**
114
+ * Set {@link DefaultAudience} to use for sessions that post data to Facebook.
115
+ * @param defaultAudienceString must be one of the constants in Enum {@link DefaultAudience}.
116
+ * @throws {@link java.lang.IllegalArgumentException} if the argument is not a valid constant.
117
+ */
118
+ @ReactMethod
119
+ public void setDefaultAudience(String defaultAudienceString) {
120
+ DefaultAudience defaultAudience = DefaultAudience.valueOf(defaultAudienceString.toUpperCase(Locale.ROOT));
121
+ LoginManager.getInstance().setDefaultAudience(defaultAudience);
122
+ }
123
+
124
+ /**
125
+ * Log out from Facebook.
126
+ */
127
+ @ReactMethod
128
+ public void logOut() {
129
+ LoginManager.getInstance().logOut();
130
+ }
131
+
132
+ /**
133
+ * Attempts a Facebook login with the specified permissions.
134
+ * @param permissions must be one of the provided permissions. See
135
+ * <a href="https://developers.facebook.com/docs/facebook-login/permissions">
136
+ * Facebook login permissions</a>.
137
+ * @param promise Use promise to pass login result to JS after login finish.
138
+ */
139
+ @ReactMethod
140
+ public void logInWithPermissions(ReadableArray permissions, final Promise promise) {
141
+ final LoginManager loginManager = LoginManager.getInstance();
142
+ loginManager.registerCallback(getCallbackManager(), new LoginManagerCallback(promise));
143
+ Activity activity = getCurrentActivity();
144
+ if (activity != null) {
145
+ loginManager.logIn(activity,
146
+ Utility.reactArrayToStringList(permissions));
147
+ }
148
+ }
149
+
150
+ /**
151
+ * Attempts a re-authorization to regain data access.
152
+ * @param promise Use promise to pass re-authorization result to JS after re-authorization finish.
153
+ */
154
+ @ReactMethod
155
+ public void reauthorizeDataAccess(final Promise promise) {
156
+ final LoginManager loginManager = LoginManager.getInstance();
157
+ loginManager.registerCallback(getCallbackManager(), new LoginManagerCallback(promise));
158
+ Activity activity = getCurrentActivity();
159
+ if (activity != null) {
160
+ loginManager.reauthorizeDataAccess(activity);
161
+ }
162
+ }
163
+
164
+ private WritableArray setToWritableArray(Set<String> set) {
165
+ WritableArray array = Arguments.createArray();
166
+ for (String e: set) {
167
+ array.pushString(e);
168
+ }
169
+ return array;
170
+ }
171
+ }
@@ -0,0 +1,111 @@
1
+ /**
2
+ * Copyright (c) 2014-present, Facebook, Inc. All rights reserved.
3
+ *
4
+ * You are hereby granted a non-exclusive, worldwide, royalty-free license to use,
5
+ * copy, modify, and distribute this software in source code or binary form for use
6
+ * in connection with the web services and APIs provided by Facebook.
7
+ *
8
+ * As with any software that integrates with the Facebook platform, your use of
9
+ * this software is subject to the Facebook Developer Principles and Policies
10
+ * [http://developers.facebook.com/policy/]. This copyright notice shall be
11
+ * included in all copies or substantial portions of the software.
12
+ *
13
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
15
+ * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
16
+ * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
17
+ * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
18
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19
+ */
20
+
21
+ package com.facebook.reactnative.androidsdk;
22
+
23
+ import com.facebook.react.bridge.Arguments;
24
+ import com.facebook.react.bridge.Promise;
25
+ import com.facebook.react.bridge.ReactApplicationContext;
26
+ import com.facebook.react.bridge.ReactMethod;
27
+ import com.facebook.react.bridge.ReadableMap;
28
+ import com.facebook.react.bridge.WritableMap;
29
+ import com.facebook.react.module.annotations.ReactModule;
30
+ import com.facebook.share.model.ShareContent;
31
+ import com.facebook.share.widget.MessageDialog;
32
+
33
+ /**
34
+ * Provides functionality to send content via the Facebook Message Dialog
35
+ */
36
+ @ReactModule(name = FBMessageDialogModule.NAME)
37
+ public class FBMessageDialogModule extends FBSDKCallbackManagerBaseJavaModule {
38
+ public static final String NAME = "FBMessageDialog";
39
+
40
+ private class MessageDialogCallback extends ReactNativeFacebookSDKCallback<MessageDialog.Result> {
41
+
42
+ public MessageDialogCallback(Promise promise) {
43
+ super(promise);
44
+ }
45
+
46
+ @Override
47
+ public void onSuccess(MessageDialog.Result result) {
48
+ if (mPromise != null) {
49
+ WritableMap messageDialogResult = Arguments.createMap();
50
+ messageDialogResult.putString("postId", result.getPostId());
51
+ mPromise.resolve(messageDialogResult);
52
+ mPromise = null;
53
+ }
54
+ }
55
+ }
56
+
57
+ private boolean mShouldFailOnDataError;
58
+
59
+ public FBMessageDialogModule(ReactApplicationContext reactContext, FBActivityEventListener activityEventListener) {
60
+ super(reactContext, activityEventListener);
61
+ }
62
+
63
+ @Override
64
+ public String getName() {
65
+ return NAME;
66
+ }
67
+
68
+ /**
69
+ * Indicates whether it is possible to show the dialog for ShareContent of the specified type.
70
+ * @param shareContentMap must be a valid {@link ShareContent}.
71
+ * @param promise Use promise to pass message dialog result to JS.
72
+ */
73
+ @ReactMethod
74
+ public void canShow(ReadableMap shareContentMap, Promise promise) {
75
+ if (getCurrentActivity() != null) {
76
+ ShareContent shareContent = Utility.buildShareContent(shareContentMap);
77
+ MessageDialog messageDialog = new MessageDialog(getCurrentActivity());
78
+ promise.resolve(messageDialog.canShow(shareContent));
79
+ } else {
80
+ promise.reject("No current activity.");
81
+ }
82
+ }
83
+
84
+ /**
85
+ * Show the provided ShareContent using the provided Activity.
86
+ * @param shareContentMap must be a valid {@link ShareContent}.
87
+ * @param promise Use promise to pass message dialog result to JS.
88
+ */
89
+ @ReactMethod
90
+ public void show(ReadableMap shareContentMap, Promise promise) {
91
+ if (getCurrentActivity() != null) {
92
+ ShareContent shareContent = Utility.buildShareContent(shareContentMap);
93
+ MessageDialog messageDialog = new MessageDialog(getCurrentActivity());
94
+ messageDialog.setShouldFailOnDataError(mShouldFailOnDataError);
95
+ messageDialog.registerCallback(getCallbackManager(), new MessageDialogCallback(promise));
96
+ messageDialog.show(shareContent);
97
+ } else {
98
+ promise.reject("No current activity.");
99
+ }
100
+ }
101
+
102
+ /**
103
+ * Specifies whether the sharer should fail if it finds an error with the share content.
104
+ * If false, the share dialog will still be displayed without the data that was mis-configured.
105
+ * @param shouldFailOnDataError Whether the dialog should fail if it finds an error.
106
+ */
107
+ @ReactMethod
108
+ public void setShouldFailOnDataError(boolean shouldFailOnDataError) {
109
+ mShouldFailOnDataError = shouldFailOnDataError;
110
+ }
111
+ }