@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,24 @@
1
+ // Copyright (c) 2015-present, Facebook, Inc. All rights reserved.
2
+ //
3
+ // You are hereby granted a non-exclusive, worldwide, royalty-free license to use,
4
+ // copy, modify, and distribute this software in source code or binary form for use
5
+ // in connection with the web services and APIs provided by Facebook.
6
+ //
7
+ // As with any software that integrates with the Facebook platform, your use of
8
+ // this software is subject to the Facebook Developer Principles and Policies
9
+ // [http://developers.facebook.com/policy/]. This copyright notice shall be
10
+ // included in all copies or substantial portions of the software.
11
+ //
12
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
13
+ // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
14
+ // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
15
+ // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
16
+ // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
17
+ // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
18
+
19
+ #import <React/RCTBridgeModule.h>
20
+
21
+ #import <FBSDKCoreKit/FBSDKCoreKit.h>
22
+
23
+ @interface RCTFBSDKAppEvents : NSObject <RCTBridgeModule>
24
+ @end
@@ -0,0 +1,251 @@
1
+ // Copyright (c) 2015-present, Facebook, Inc. All rights reserved.
2
+ //
3
+ // You are hereby granted a non-exclusive, worldwide, royalty-free license to use,
4
+ // copy, modify, and distribute this software in source code or binary form for use
5
+ // in connection with the web services and APIs provided by Facebook.
6
+ //
7
+ // As with any software that integrates with the Facebook platform, your use of
8
+ // this software is subject to the Facebook Developer Principles and Policies
9
+ // [http://developers.facebook.com/policy/]. This copyright notice shall be
10
+ // included in all copies or substantial portions of the software.
11
+ //
12
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
13
+ // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
14
+ // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
15
+ // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
16
+ // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
17
+ // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
18
+
19
+ #import "RCTFBSDKAppEvents.h"
20
+
21
+ #import <React/RCTUtils.h>
22
+
23
+ #import "RCTConvert+FBSDKAccessToken.h"
24
+
25
+ @implementation RCTConvert (RCTFBSDKAppEvents)
26
+
27
+ RCT_ENUM_CONVERTER(FBSDKAppEventsFlushBehavior, (@{
28
+ @"auto": @(FBSDKAppEventsFlushBehaviorAuto),
29
+ @"explicit_only": @(FBSDKAppEventsFlushBehaviorExplicitOnly),
30
+ }), FBSDKAppEventsFlushBehaviorAuto, unsignedIntegerValue)
31
+
32
+ RCT_ENUM_CONVERTER(FBSDKProductAvailability, (@{
33
+ @"in_stock": @(FBSDKProductAvailabilityInStock),
34
+ @"out_of_stock": @(FBSDKProductAvailabilityOutOfStock),
35
+ @"preorder": @(FBSDKProductAvailabilityPreOrder),
36
+ @"avaliable_for_order": @(FBSDKProductAvailabilityAvailableForOrder),
37
+ @"discontinued": @(FBSDKProductAvailabilityDiscontinued),
38
+ }), FBSDKProductAvailabilityInStock, unsignedIntegerValue)
39
+
40
+ RCT_ENUM_CONVERTER(FBSDKProductCondition, (@{
41
+ @"new": @(FBSDKProductConditionNew),
42
+ @"refurbished": @(FBSDKProductConditionRefurbished),
43
+ @"used": @(FBSDKProductConditionUsed),
44
+ }), FBSDKProductConditionNew, unsignedIntegerValue)
45
+
46
+ @end
47
+
48
+ @implementation RCTFBSDKAppEvents
49
+
50
+ RCT_EXPORT_MODULE(FBAppEventsLogger);
51
+
52
+ - (dispatch_queue_t)methodQueue
53
+ {
54
+ return dispatch_get_main_queue();
55
+ }
56
+
57
+ #pragma mark - React Native Methods
58
+
59
+ RCT_EXPORT_METHOD(logEvent:(NSString *)eventName
60
+ valueToSum:(nonnull NSNumber *)valueToSum
61
+ parameters:(NSDictionary *)parameters)
62
+ {
63
+ parameters = RCTDictionaryWithoutNullValues(parameters);
64
+
65
+ [FBSDKAppEvents.shared logEvent:eventName
66
+ valueToSum:valueToSum
67
+ parameters:parameters
68
+ accessToken:nil];
69
+ }
70
+
71
+ RCT_EXPORT_METHOD(logPurchase:(double)purchaseAmount
72
+ currency:(NSString *)currency
73
+ parameters:(NSDictionary *)parameters)
74
+ {
75
+ parameters = RCTDictionaryWithoutNullValues(parameters);
76
+
77
+ [FBSDKAppEvents.shared logPurchase:purchaseAmount
78
+ currency:currency
79
+ parameters:parameters
80
+ accessToken:nil];
81
+ }
82
+
83
+ RCT_EXPORT_METHOD(logProductItem:(NSString *)itemID
84
+ availability:(FBSDKProductAvailability)availability
85
+ condition:(FBSDKProductCondition)condition
86
+ description:(NSString *)description
87
+ imageLink:(NSString *)imageLink
88
+ link:(NSString *)link
89
+ title:(NSString *)title
90
+ priceAmount:(double)priceAmount
91
+ currency:(NSString *)currency
92
+ gtin:(NSString *)gtin
93
+ mpn:(NSString *)mpn
94
+ brand:(NSString *)brand
95
+ parameters:(NSDictionary *)parameters)
96
+ {
97
+ [FBSDKAppEvents.shared logProductItem:itemID
98
+ availability:availability
99
+ condition:condition
100
+ description:description
101
+ imageLink:imageLink
102
+ link:link
103
+ title:title
104
+ priceAmount:priceAmount
105
+ currency:currency
106
+ gtin:gtin
107
+ mpn:mpn
108
+ brand:brand
109
+ parameters:parameters];
110
+ }
111
+
112
+ RCT_EXPORT_METHOD(logPushNotificationOpen:(NSDictionary *)payload)
113
+ {
114
+ [FBSDKAppEvents.shared logPushNotificationOpen:payload];
115
+ }
116
+
117
+ RCT_EXPORT_METHOD(setUserID:(NSString *)userID)
118
+ {
119
+ [FBSDKAppEvents.shared setUserID:userID];
120
+ }
121
+
122
+ RCT_EXPORT_METHOD(clearUserID)
123
+ {
124
+ [FBSDKAppEvents.shared setUserID:nil];
125
+ }
126
+
127
+ RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(getUserID)
128
+ {
129
+ return [FBSDKAppEvents.shared userID];
130
+ }
131
+
132
+ RCT_EXPORT_METHOD(getAnonymousID:(RCTPromiseResolveBlock)resolve
133
+ rejecter:(RCTPromiseRejectBlock)reject)
134
+ {
135
+ @try {
136
+ NSString *anonymousID = [FBSDKAppEvents.shared anonymousID];
137
+ resolve(anonymousID);
138
+ }
139
+ @catch (NSError *error) {
140
+ reject(@"E_ANONYMOUS_ID_ERROR", @"Can not get anonymousID", error);
141
+ }
142
+ }
143
+
144
+ RCT_EXPORT_METHOD(getAdvertiserID:(RCTPromiseResolveBlock)resolve
145
+ rejecter:(RCTPromiseRejectBlock)reject)
146
+ {
147
+ @try {
148
+ // advertiserID is no longer available to iOS from FBSDK v12
149
+ resolve(nil);
150
+ }
151
+ @catch (NSError *error) {
152
+ reject(@"E_ADVERTISER_ID_ERROR", @"Can not get advertiserID", error);
153
+ }
154
+ }
155
+
156
+ RCT_EXPORT_METHOD(setUserData:(NSDictionary *)userData)
157
+ {
158
+ userData = RCTDictionaryWithoutNullValues(userData);
159
+
160
+ [FBSDKAppEvents.shared setUserEmail:userData[@"email"]
161
+ firstName:userData[@"firstName"]
162
+ lastName:userData[@"lastName"]
163
+ phone:userData[@"phone"]
164
+ dateOfBirth:userData[@"dateOfBirth"]
165
+ gender:userData[@"gender"]
166
+ city:userData[@"city"]
167
+ state:userData[@"state"]
168
+ zip:userData[@"zip"]
169
+ country:userData[@"country"]];
170
+ }
171
+
172
+ RCT_EXPORT_METHOD(setFlushBehavior:(FBSDKAppEventsFlushBehavior)flushBehavior)
173
+ {
174
+ [FBSDKAppEvents.shared setFlushBehavior:flushBehavior];
175
+ }
176
+
177
+ RCT_EXPORT_METHOD(flush)
178
+ {
179
+ [FBSDKAppEvents.shared flush];
180
+ }
181
+
182
+ RCT_EXPORT_METHOD(setPushNotificationsDeviceToken:(NSString *)deviceToken)
183
+ {
184
+ [FBSDKAppEvents.shared setPushNotificationsDeviceToken:[RCTConvert NSData:deviceToken]];
185
+ }
186
+
187
+ - (NSDictionary *)constantsToExport {
188
+ return @{
189
+ @"AppEvents": @{
190
+ @"AchievedLevel": FBSDKAppEventNameAchievedLevel,
191
+ @"AdClick": FBSDKAppEventNameAdClick,
192
+ @"AdImpression": FBSDKAppEventNameAdImpression,
193
+ @"AddedPaymentInfo": FBSDKAppEventNameAddedPaymentInfo,
194
+ @"AddedToCart": FBSDKAppEventNameAddedToCart,
195
+ @"AddedToWishlist": FBSDKAppEventNameAddedToWishlist,
196
+ @"CompletedRegistration": FBSDKAppEventNameCompletedRegistration,
197
+ @"CompletedTutorial": FBSDKAppEventNameCompletedTutorial,
198
+ @"Contact": FBSDKAppEventNameContact,
199
+ @"CustomizeProduct": FBSDKAppEventNameCustomizeProduct,
200
+ @"Donate": FBSDKAppEventNameDonate,
201
+ @"FindLocation": FBSDKAppEventNameFindLocation,
202
+ @"InitiatedCheckout": FBSDKAppEventNameInitiatedCheckout,
203
+ @"Purchased": FBSDKAppEventNamePurchased,
204
+ @"Rated": FBSDKAppEventNameRated,
205
+ @"Searched": FBSDKAppEventNameSearched,
206
+ @"SpentCredits": FBSDKAppEventNameSpentCredits,
207
+ @"Schedule": FBSDKAppEventNameSchedule,
208
+ @"StartTrial": FBSDKAppEventNameStartTrial,
209
+ @"SubmitApplication": FBSDKAppEventNameSubmitApplication,
210
+ @"Subscribe": FBSDKAppEventNameSubscribe,
211
+ @"UnlockedAchievement": FBSDKAppEventNameUnlockedAchievement,
212
+ @"ViewedContent": FBSDKAppEventNameViewedContent,
213
+ },
214
+ @"AppEventParams": @{
215
+ @"AddType": FBSDKAppEventParameterNameAdType,
216
+ @"Content": FBSDKAppEventParameterNameContent,
217
+ @"ContentID": FBSDKAppEventParameterNameContentID,
218
+ @"ContentType": FBSDKAppEventParameterNameContentType,
219
+ @"Currency": FBSDKAppEventParameterNameCurrency,
220
+ @"Description": FBSDKAppEventParameterNameDescription,
221
+ @"Level": FBSDKAppEventParameterNameLevel,
222
+ @"NumItems": FBSDKAppEventParameterNameNumItems,
223
+ @"MaxRatingValue": FBSDKAppEventParameterNameMaxRatingValue,
224
+ @"OrderId": FBSDKAppEventParameterNameOrderID,
225
+ @"PaymentInfoAvailable": FBSDKAppEventParameterNamePaymentInfoAvailable,
226
+ @"RegistrationMethod": FBSDKAppEventParameterNameRegistrationMethod,
227
+ @"SearchString": FBSDKAppEventParameterNameSearchString,
228
+ @"Success": FBSDKAppEventParameterNameSuccess,
229
+ @"ValueNo": FBSDKAppEventParameterValueNo,
230
+ @"ValueYes": FBSDKAppEventParameterValueYes,
231
+ }
232
+ };
233
+ }
234
+
235
+ + (BOOL)requiresMainQueueSetup {
236
+ return YES;
237
+ }
238
+
239
+ static NSDictionary<NSString *, id> *RCTDictionaryWithoutNullValues(NSDictionary<NSString *, id> *input)
240
+ {
241
+ if (input == nil) {
242
+ return nil;
243
+ }
244
+ NSMutableDictionary<NSString *, id> *result = [[NSMutableDictionary alloc] initWithCapacity:[input count]];
245
+ [input enumerateKeysAndObjectsUsingBlock:^(NSString *key, id item, __unused BOOL *stop) {
246
+ result[key] = RCTNilIfNull(item);
247
+ }];
248
+ return result;
249
+ }
250
+
251
+ @end
@@ -0,0 +1,24 @@
1
+ // Copyright (c) 2015-present, Facebook, Inc. All rights reserved.
2
+ //
3
+ // You are hereby granted a non-exclusive, worldwide, royalty-free license to use,
4
+ // copy, modify, and distribute this software in source code or binary form for use
5
+ // in connection with the web services and APIs provided by Facebook.
6
+ //
7
+ // As with any software that integrates with the Facebook platform, your use of
8
+ // this software is subject to the Facebook Developer Principles and Policies
9
+ // [http://developers.facebook.com/policy/]. This copyright notice shall be
10
+ // included in all copies or substantial portions of the software.
11
+ //
12
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
13
+ // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
14
+ // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
15
+ // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
16
+ // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
17
+ // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
18
+
19
+ #import <React/RCTBridgeModule.h>
20
+
21
+ #import <FBSDKCoreKit/FBSDKCoreKit.h>
22
+
23
+ @interface RCTFBSDKAppLink : NSObject <RCTBridgeModule>
24
+ @end
@@ -0,0 +1,52 @@
1
+ // Copyright (c) 2015-present, Facebook, Inc. All rights reserved.
2
+ //
3
+ // You are hereby granted a non-exclusive, worldwide, royalty-free license to use,
4
+ // copy, modify, and distribute this software in source code or binary form for use
5
+ // in connection with the web services and APIs provided by Facebook.
6
+ //
7
+ // As with any software that integrates with the Facebook platform, your use of
8
+ // this software is subject to the Facebook Developer Principles and Policies
9
+ // [http://developers.facebook.com/policy/]. This copyright notice shall be
10
+ // included in all copies or substantial portions of the software.
11
+ //
12
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
13
+ // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
14
+ // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
15
+ // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
16
+ // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
17
+ // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
18
+
19
+ #import "RCTFBSDKAppLink.h"
20
+
21
+ #import <React/RCTUtils.h>
22
+
23
+ @implementation RCTFBSDKAppLink
24
+
25
+ RCT_EXPORT_MODULE(FBAppLink);
26
+
27
+ - (dispatch_queue_t)methodQueue
28
+ {
29
+ return dispatch_get_main_queue();
30
+ }
31
+
32
+ #pragma mark - React Native Methods
33
+
34
+ RCT_REMAP_METHOD(fetchDeferredAppLink,
35
+ resolver:(RCTPromiseResolveBlock)resolve
36
+ rejecter:(RCTPromiseRejectBlock)reject)
37
+ {
38
+ [FBSDKAppLinkUtility fetchDeferredAppLink:^(NSURL *url, NSError *error) {
39
+ if (error) {
40
+ NSLog(@"Received error while fetching deferred app link %@", error);
41
+ }
42
+
43
+ if (url) {
44
+ NSString* appLink = [NSString stringWithFormat:@"%@", url];
45
+ resolve(appLink);
46
+ }else{
47
+ resolve(nil);
48
+ }
49
+ }];
50
+ }
51
+
52
+ @end
@@ -0,0 +1,6 @@
1
+ #import <React/RCTBridgeModule.h>
2
+
3
+ #import <FBSDKCoreKit/FBSDKCoreKit.h>
4
+
5
+ @interface RCTFBSDKAuthenticationToken : NSObject <RCTBridgeModule>
6
+ @end
@@ -0,0 +1,35 @@
1
+ #import "RCTFBSDKAuthenticationToken.h"
2
+
3
+ #import <React/RCTUtils.h>
4
+
5
+ @implementation RCTFBSDKAuthenticationToken
6
+
7
+ RCT_EXPORT_MODULE(FBAuthenticationToken);
8
+
9
+ - (dispatch_queue_t)methodQueue
10
+ {
11
+ return dispatch_get_main_queue();
12
+ }
13
+
14
+ RCT_EXPORT_METHOD(getAuthenticationToken:(RCTResponseSenderBlock)callback)
15
+ {
16
+ FBSDKAuthenticationToken *currentToken = [FBSDKAuthenticationToken currentAuthenticationToken];
17
+ NSDictionary *tokenDict = RCTBuildAccessTokenDict(currentToken);
18
+ callback(@[RCTNullIfNil(tokenDict)]);
19
+ }
20
+
21
+ #pragma mark - Helper Functions
22
+
23
+ static NSDictionary *RCTBuildAccessTokenDict(FBSDKAuthenticationToken *token)
24
+ {
25
+ if (!token) {
26
+ return nil;
27
+ }
28
+ return @{
29
+ @"authenticationToken": token.tokenString,
30
+ @"nonce": token.nonce,
31
+ @"graphDomain": token.graphDomain,
32
+ };
33
+ }
34
+
35
+ @end
@@ -0,0 +1,50 @@
1
+ // Copyright (c) 2015-present, Facebook, Inc. All rights reserved.
2
+ //
3
+ // You are hereby granted a non-exclusive, worldwide, royalty-free license to use,
4
+ // copy, modify, and distribute this software in source code or binary form for use
5
+ // in connection with the web services and APIs provided by Facebook.
6
+ //
7
+ // As with any software that integrates with the Facebook platform, your use of
8
+ // this software is subject to the Facebook Developer Principles and Policies
9
+ // [http://developers.facebook.com/policy/]. This copyright notice shall be
10
+ // included in all copies or substantial portions of the software.
11
+ //
12
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
13
+ // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
14
+ // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
15
+ // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
16
+ // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
17
+ // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
18
+
19
+ #import <React/RCTBridgeModule.h>
20
+
21
+ #import <FBSDKCoreKit/FBSDKCoreKit.h>
22
+ #import <Foundation/Foundation.h>
23
+
24
+ /*!
25
+ @abstract A RCTFBSDKGraphRequestConnectionContainer object can take in a batch of
26
+ graph requests, send the requests in a graph request connection and return the responses of
27
+ the requests in a connection callback.
28
+ Note that the oject has a speical life cycle. It retains itself once the `start` method is called.
29
+ This is because the object needs to live long enough to forward along callbacks from each request.
30
+ It will release itself when all callbacks are handled.
31
+ */
32
+ @interface RCTFBSDKGraphRequestConnectionContainer : NSObject<FBSDKGraphRequestConnectionDelegate>
33
+
34
+ /*!
35
+ @abstract Initialize the RCTFBSDKGraphRequestConnectionContainer object.
36
+ @param requestBatch The batch of requests to be sent
37
+ @param timeout The timeout interval to wait for a response before giving up
38
+ @param callback The connection callback to be invoked when the connection is completed.
39
+ This callback will carry the responses of requests back to javascript.
40
+ */
41
+ - (instancetype)initWithRequestBatch:(NSArray *)requestBatch
42
+ timeout:(NSInteger)timeout
43
+ batchCallback:(RCTResponseSenderBlock)callback;
44
+
45
+ /*!
46
+ @abstract Send the batch of requests via a FBSDKGraphRequestConnection.
47
+ */
48
+ - (void)start;
49
+
50
+ @end
@@ -0,0 +1,124 @@
1
+ // Copyright (c) 2015-present, Facebook, Inc. All rights reserved.
2
+ //
3
+ // You are hereby granted a non-exclusive, worldwide, royalty-free license to use,
4
+ // copy, modify, and distribute this software in source code or binary form for use
5
+ // in connection with the web services and APIs provided by Facebook.
6
+ //
7
+ // As with any software that integrates with the Facebook platform, your use of
8
+ // this software is subject to the Facebook Developer Principles and Policies
9
+ // [http://developers.facebook.com/policy/]. This copyright notice shall be
10
+ // included in all copies or substantial portions of the software.
11
+ //
12
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
13
+ // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
14
+ // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
15
+ // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
16
+ // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
17
+ // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
18
+
19
+ #import "RCTFBSDKGraphRequestConnectionContainer.h"
20
+
21
+ #import <React/RCTConvert.h>
22
+ #import <React/RCTUtils.h>
23
+
24
+ #pragma mark - Helper Functions
25
+
26
+ static NSMutableArray *g_pendingConnection;
27
+
28
+ static NSDictionary *RCTPrepareParameters(NSDictionary *parameters)
29
+ {
30
+ NSMutableDictionary *preparedParameters = [[NSMutableDictionary alloc] init];
31
+ for (NSString *key in parameters.allKeys) {
32
+ NSDictionary *object = [RCTConvert NSDictionary:parameters[key]];
33
+ preparedParameters[key] = [RCTConvert NSString:object[@"string"]];
34
+ }
35
+ return preparedParameters;
36
+ }
37
+
38
+ static NSArray<FBSDKGraphRequest *> *FBSDKGraphRequestArray(id json)
39
+ {
40
+ NSArray *requestArray = [RCTConvert NSArray:json];
41
+ NSMutableArray *requests = [[NSMutableArray alloc] init];
42
+ for(int i = 0; i < [requestArray count]; i++) {
43
+ NSDictionary *requestDict = [RCTConvert NSDictionary:requestArray[i]];
44
+ NSDictionary *config = [RCTConvert NSDictionary:requestDict[@"config"]];
45
+ NSString *tokenString = [RCTConvert NSString:config[@"accessToken"]]?: [FBSDKAccessToken currentAccessToken].tokenString;
46
+ NSDictionary *parameters = RCTPrepareParameters([RCTConvert NSDictionary:config[@"parameters"]]);
47
+ NSString *version = [RCTConvert NSString:config[@"version"]];
48
+ NSString *method = [RCTConvert NSString:config[@"httpMethod"]];
49
+ FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:[RCTConvert NSString:(requestDict[@"graphPath"])]
50
+ parameters:parameters
51
+ tokenString:tokenString
52
+ version:version
53
+ HTTPMethod:method];
54
+ [requests addObject:request];
55
+ }
56
+ return requests;
57
+ }
58
+
59
+ #pragma mark - RCTFBSDKGraphRequestConnectionContainer
60
+
61
+ @implementation RCTFBSDKGraphRequestConnectionContainer
62
+ {
63
+ NSArray<FBSDKGraphRequest *> *_requestBatch;
64
+ RCTResponseSenderBlock _batchCallback;
65
+ NSInteger _timeout;
66
+ FBSDKGraphRequestConnection *_connection;
67
+ NSMutableDictionary *_response;
68
+ }
69
+
70
+ - (dispatch_queue_t)methodQueue
71
+ {
72
+ return dispatch_get_main_queue();
73
+ }
74
+
75
+ #pragma mark - Object Lifecycle
76
+ - (instancetype)initWithRequestBatch:(NSArray *)requestBatch
77
+ timeout:(NSInteger)timeout
78
+ batchCallback:(RCTResponseSenderBlock)callback
79
+ {
80
+ if ((self = [super init])) {
81
+ _connection = [[FBSDKGraphRequestConnection alloc] init];
82
+ _connection.delegate = self;
83
+ _requestBatch = FBSDKGraphRequestArray(requestBatch);
84
+ _batchCallback = callback;
85
+ _timeout = timeout;
86
+ _response = [[NSMutableDictionary alloc] init];
87
+ }
88
+ return self;
89
+ }
90
+
91
+ - (void)start
92
+ {
93
+ g_pendingConnection = [[NSMutableArray alloc] init];
94
+ [g_pendingConnection addObject:self];
95
+ for (int i = 0; i < _requestBatch.count; i++) {
96
+ FBSDKGraphRequestCompletion completion = ^(id<FBSDKGraphRequestConnecting> connection, id result, NSError *error) {
97
+ NSDictionary *errorDict = error ? RCTJSErrorFromNSError(error) : nil;
98
+ self->_response[[NSString stringWithFormat: @"%i", i]] = @[RCTNullIfNil(errorDict), RCTNullIfNil(result)];
99
+ };
100
+ [_connection addRequest:_requestBatch[i] completion:completion];
101
+ }
102
+ [_connection start];
103
+ }
104
+
105
+ #pragma mark - FBSDKGraphRequestConnectionDelegate
106
+
107
+ - (void)requestConnectionDidFinishLoading:(FBSDKGraphRequestConnection *)connection
108
+ {
109
+ if (_batchCallback) {
110
+ _batchCallback(@[[NSNull null], @{@"result": @"success"}, _response]);
111
+ }
112
+ [g_pendingConnection removeObject:self];
113
+ }
114
+
115
+ - (void)requestConnection:(FBSDKGraphRequestConnection *)connection didFailWithError:(NSError *)error
116
+ {
117
+ if (_batchCallback) {
118
+ NSDictionary *errorDict = error ? RCTJSErrorFromNSError(error) : nil;
119
+ _batchCallback(@[@[RCTNullIfNil(errorDict)], [NSNull null], _response]);
120
+ }
121
+ [g_pendingConnection removeObject:self];
122
+ }
123
+
124
+ @end
@@ -0,0 +1,25 @@
1
+ // Copyright (c) 2015-present, Facebook, Inc. All rights reserved.
2
+ //
3
+ // You are hereby granted a non-exclusive, worldwide, royalty-free license to use,
4
+ // copy, modify, and distribute this software in source code or binary form for use
5
+ // in connection with the web services and APIs provided by Facebook.
6
+ //
7
+ // As with any software that integrates with the Facebook platform, your use of
8
+ // this software is subject to the Facebook Developer Principles and Policies
9
+ // [http://developers.facebook.com/policy/]. This copyright notice shall be
10
+ // included in all copies or substantial portions of the software.
11
+ //
12
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
13
+ // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
14
+ // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
15
+ // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
16
+ // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
17
+ // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
18
+
19
+ #import <React/RCTBridgeModule.h>
20
+
21
+ #import <FBSDKCoreKit/FBSDKCoreKit.h>
22
+
23
+ @interface RCTFBSDKGraphRequestManager : NSObject <RCTBridgeModule>
24
+
25
+ @end
@@ -0,0 +1,43 @@
1
+ // Copyright (c) 2015-present, Facebook, Inc. All rights reserved.
2
+ //
3
+ // You are hereby granted a non-exclusive, worldwide, royalty-free license to use,
4
+ // copy, modify, and distribute this software in source code or binary form for use
5
+ // in connection with the web services and APIs provided by Facebook.
6
+ //
7
+ // As with any software that integrates with the Facebook platform, your use of
8
+ // this software is subject to the Facebook Developer Principles and Policies
9
+ // [http://developers.facebook.com/policy/]. This copyright notice shall be
10
+ // included in all copies or substantial portions of the software.
11
+ //
12
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
13
+ // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
14
+ // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
15
+ // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
16
+ // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
17
+ // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
18
+ #import "RCTFBSDKGraphRequestManager.h"
19
+ #import "RCTFBSDKGraphRequestConnectionContainer.h"
20
+
21
+ @implementation RCTFBSDKGraphRequestManager
22
+
23
+ RCT_EXPORT_MODULE(FBGraphRequest);
24
+
25
+ - (dispatch_queue_t)methodQueue
26
+ {
27
+ return dispatch_get_main_queue();
28
+ }
29
+
30
+ #pragma mark - React Native Methods
31
+
32
+ RCT_REMAP_METHOD(start, startWithBatch:(NSArray *)requestBatch
33
+ timeout:(nonnull NSNumber *)timeout
34
+ batchCallback:(RCTResponseSenderBlock)callback)
35
+ {
36
+ RCTFBSDKGraphRequestConnectionContainer *connection =
37
+ [[RCTFBSDKGraphRequestConnectionContainer alloc] initWithRequestBatch:requestBatch
38
+ timeout:[timeout integerValue]
39
+ batchCallback:callback];
40
+ [connection start];
41
+ }
42
+
43
+ @end
@@ -0,0 +1,6 @@
1
+ #import <React/RCTBridgeModule.h>
2
+
3
+ #import <FBSDKCoreKit/FBSDKCoreKit.h>
4
+
5
+ @interface RCTFBSDKProfile : NSObject <RCTBridgeModule>
6
+ @end