@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.
- package/LICENSE +21 -0
- package/README.md +943 -0
- package/android/build.gradle +57 -0
- package/android/src/main/AndroidManifest.xml +46 -0
- package/android/src/main/java/com/facebook/reactnative/androidsdk/FBAccessTokenModule.java +151 -0
- package/android/src/main/java/com/facebook/reactnative/androidsdk/FBActivityEventListener.java +40 -0
- package/android/src/main/java/com/facebook/reactnative/androidsdk/FBAppEventsLoggerModule.java +414 -0
- package/android/src/main/java/com/facebook/reactnative/androidsdk/FBAppLinkModule.java +86 -0
- package/android/src/main/java/com/facebook/reactnative/androidsdk/FBGameRequestDialogModule.java +94 -0
- package/android/src/main/java/com/facebook/reactnative/androidsdk/FBGraphRequestModule.java +283 -0
- package/android/src/main/java/com/facebook/reactnative/androidsdk/FBLoginButtonManager.java +83 -0
- package/android/src/main/java/com/facebook/reactnative/androidsdk/FBLoginManagerModule.java +171 -0
- package/android/src/main/java/com/facebook/reactnative/androidsdk/FBMessageDialogModule.java +111 -0
- package/android/src/main/java/com/facebook/reactnative/androidsdk/FBProfileModule.java +68 -0
- package/android/src/main/java/com/facebook/reactnative/androidsdk/FBSDKCallbackManagerBaseJavaModule.java +41 -0
- package/android/src/main/java/com/facebook/reactnative/androidsdk/FBSDKPackage.java +60 -0
- package/android/src/main/java/com/facebook/reactnative/androidsdk/FBSendButtonManager.java +51 -0
- package/android/src/main/java/com/facebook/reactnative/androidsdk/FBSettingsModule.java +95 -0
- package/android/src/main/java/com/facebook/reactnative/androidsdk/FBShareButtonManager.java +53 -0
- package/android/src/main/java/com/facebook/reactnative/androidsdk/FBShareDialogModule.java +107 -0
- package/android/src/main/java/com/facebook/reactnative/androidsdk/RCTLoginButton.java +126 -0
- package/android/src/main/java/com/facebook/reactnative/androidsdk/RCTLoginButtonEvent.java +27 -0
- package/android/src/main/java/com/facebook/reactnative/androidsdk/ReactNativeFacebookSDKCallback.java +58 -0
- package/android/src/main/java/com/facebook/reactnative/androidsdk/Utility.java +283 -0
- package/app.plugin.js +1 -0
- package/expo-module.config.json +10 -0
- package/ios/ExpoAdapterFBSDKNext/FacebookAppDelegate.swift +21 -0
- package/ios/ExpoAdapterFBSDKNext.podspec +33 -0
- package/ios/RCTFBSDK/core/RCTConvert+FBSDKAccessToken.h +27 -0
- package/ios/RCTFBSDK/core/RCTConvert+FBSDKAccessToken.m +41 -0
- package/ios/RCTFBSDK/core/RCTFBSDKAEMReporter.m +30 -0
- package/ios/RCTFBSDK/core/RCTFBSDKAccessToken.h +24 -0
- package/ios/RCTFBSDK/core/RCTFBSDKAccessToken.m +115 -0
- package/ios/RCTFBSDK/core/RCTFBSDKAppEvents.h +24 -0
- package/ios/RCTFBSDK/core/RCTFBSDKAppEvents.m +251 -0
- package/ios/RCTFBSDK/core/RCTFBSDKAppLink.h +24 -0
- package/ios/RCTFBSDK/core/RCTFBSDKAppLink.m +52 -0
- package/ios/RCTFBSDK/core/RCTFBSDKAuthenticationToken.h +6 -0
- package/ios/RCTFBSDK/core/RCTFBSDKAuthenticationToken.m +35 -0
- package/ios/RCTFBSDK/core/RCTFBSDKGraphRequestConnectionContainer.h +50 -0
- package/ios/RCTFBSDK/core/RCTFBSDKGraphRequestConnectionContainer.m +124 -0
- package/ios/RCTFBSDK/core/RCTFBSDKGraphRequestManager.h +25 -0
- package/ios/RCTFBSDK/core/RCTFBSDKGraphRequestManager.m +43 -0
- package/ios/RCTFBSDK/core/RCTFBSDKProfile.h +6 -0
- package/ios/RCTFBSDK/core/RCTFBSDKProfile.m +58 -0
- package/ios/RCTFBSDK/core/RCTFBSDKSettings.h +14 -0
- package/ios/RCTFBSDK/core/RCTFBSDKSettings.m +80 -0
- package/ios/RCTFBSDK/login/RCTConvert+FBSDKLogin.h +28 -0
- package/ios/RCTFBSDK/login/RCTConvert+FBSDKLogin.m +35 -0
- package/ios/RCTFBSDK/login/RCTFBSDKLoginButtonManager.h +25 -0
- package/ios/RCTFBSDK/login/RCTFBSDKLoginButtonManager.m +73 -0
- package/ios/RCTFBSDK/login/RCTFBSDKLoginButtonView.h +12 -0
- package/ios/RCTFBSDK/login/RCTFBSDKLoginButtonView.m +57 -0
- package/ios/RCTFBSDK/login/RCTFBSDKLoginManager.h +22 -0
- package/ios/RCTFBSDK/login/RCTFBSDKLoginManager.m +154 -0
- package/ios/RCTFBSDK/share/RCTConvert+FBSDKSharingContent.h +29 -0
- package/ios/RCTFBSDK/share/RCTConvert+FBSDKSharingContent.m +111 -0
- package/ios/RCTFBSDK/share/RCTFBSDKGameRequestDialog.h +24 -0
- package/ios/RCTFBSDK/share/RCTFBSDKGameRequestDialog.m +134 -0
- package/ios/RCTFBSDK/share/RCTFBSDKMessageDialog.h +24 -0
- package/ios/RCTFBSDK/share/RCTFBSDKMessageDialog.m +116 -0
- package/ios/RCTFBSDK/share/RCTFBSDKSendButtonManager.h +25 -0
- package/ios/RCTFBSDK/share/RCTFBSDKSendButtonManager.m +39 -0
- package/ios/RCTFBSDK/share/RCTFBSDKShareButtonManager.h +23 -0
- package/ios/RCTFBSDK/share/RCTFBSDKShareButtonManager.m +39 -0
- package/ios/RCTFBSDK/share/RCTFBSDKShareDialog.h +24 -0
- package/ios/RCTFBSDK/share/RCTFBSDKShareDialog.m +134 -0
- package/ios/RCTFBSDK/share/RCTFBSDKShareHelper.h +21 -0
- package/ios/RCTFBSDK/share/RCTFBSDKShareHelper.m +32 -0
- package/ios/RCTFBSDK.xcodeproj/project.pbxproj +446 -0
- package/ios/RCTFBSDK.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- package/ios/RCTFBSDK.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- package/jest/mocks/index.js +81 -0
- package/jest/setup.js +3 -0
- package/lib/commonjs/FBAEMReporter.js +39 -0
- package/lib/commonjs/FBAEMReporter.js.map +1 -0
- package/lib/commonjs/FBAccessToken.js +198 -0
- package/lib/commonjs/FBAccessToken.js.map +1 -0
- package/lib/commonjs/FBAppEventsLogger.js +221 -0
- package/lib/commonjs/FBAppEventsLogger.js.map +1 -0
- package/lib/commonjs/FBAppLink.js +36 -0
- package/lib/commonjs/FBAppLink.js.map +1 -0
- package/lib/commonjs/FBAuthenticationToken.js +55 -0
- package/lib/commonjs/FBAuthenticationToken.js.map +1 -0
- package/lib/commonjs/FBGameRequestDialog.js +45 -0
- package/lib/commonjs/FBGameRequestDialog.js.map +1 -0
- package/lib/commonjs/FBGraphRequest.js +66 -0
- package/lib/commonjs/FBGraphRequest.js.map +1 -0
- package/lib/commonjs/FBGraphRequestManager.js +96 -0
- package/lib/commonjs/FBGraphRequestManager.js.map +1 -0
- package/lib/commonjs/FBLoginButton.js +67 -0
- package/lib/commonjs/FBLoginButton.js.map +1 -0
- package/lib/commonjs/FBLoginManager.js +102 -0
- package/lib/commonjs/FBLoginManager.js.map +1 -0
- package/lib/commonjs/FBMessageDialog.js +51 -0
- package/lib/commonjs/FBMessageDialog.js.map +1 -0
- package/lib/commonjs/FBProfile.js +134 -0
- package/lib/commonjs/FBProfile.js.map +1 -0
- package/lib/commonjs/FBSendButton.js +48 -0
- package/lib/commonjs/FBSendButton.js.map +1 -0
- package/lib/commonjs/FBSettings.js +115 -0
- package/lib/commonjs/FBSettings.js.map +1 -0
- package/lib/commonjs/FBShareButton.js +48 -0
- package/lib/commonjs/FBShareButton.js.map +1 -0
- package/lib/commonjs/FBShareDialog.js +57 -0
- package/lib/commonjs/FBShareDialog.js.map +1 -0
- package/lib/commonjs/index.js +323 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/models/FBAppGroupCreationContent.js +2 -0
- package/lib/commonjs/models/FBAppGroupCreationContent.js.map +1 -0
- package/lib/commonjs/models/FBGameRequestContent.js +2 -0
- package/lib/commonjs/models/FBGameRequestContent.js.map +1 -0
- package/lib/commonjs/models/FBSDKCallback.js +2 -0
- package/lib/commonjs/models/FBSDKCallback.js.map +1 -0
- package/lib/commonjs/models/FBShareContent.js +6 -0
- package/lib/commonjs/models/FBShareContent.js.map +1 -0
- package/lib/commonjs/models/FBShareLinkContent.js +6 -0
- package/lib/commonjs/models/FBShareLinkContent.js.map +1 -0
- package/lib/commonjs/models/FBSharePhoto.js +2 -0
- package/lib/commonjs/models/FBSharePhoto.js.map +1 -0
- package/lib/commonjs/models/FBSharePhotoContent.js +6 -0
- package/lib/commonjs/models/FBSharePhotoContent.js.map +1 -0
- package/lib/commonjs/models/FBShareVideo.js +2 -0
- package/lib/commonjs/models/FBShareVideo.js.map +1 -0
- package/lib/commonjs/models/FBShareVideoContent.js +6 -0
- package/lib/commonjs/models/FBShareVideoContent.js.map +1 -0
- package/lib/commonjs/util/validate.js +180 -0
- package/lib/commonjs/util/validate.js.map +1 -0
- package/lib/commonjs/utils/index.js +2 -0
- package/lib/commonjs/utils/index.js.map +1 -0
- package/lib/module/FBAEMReporter.js +34 -0
- package/lib/module/FBAEMReporter.js.map +1 -0
- package/lib/module/FBAccessToken.js +191 -0
- package/lib/module/FBAccessToken.js.map +1 -0
- package/lib/module/FBAppEventsLogger.js +215 -0
- package/lib/module/FBAppEventsLogger.js.map +1 -0
- package/lib/module/FBAppLink.js +29 -0
- package/lib/module/FBAppLink.js.map +1 -0
- package/lib/module/FBAuthenticationToken.js +48 -0
- package/lib/module/FBAuthenticationToken.js.map +1 -0
- package/lib/module/FBGameRequestDialog.js +39 -0
- package/lib/module/FBGameRequestDialog.js.map +1 -0
- package/lib/module/FBGraphRequest.js +60 -0
- package/lib/module/FBGraphRequest.js.map +1 -0
- package/lib/module/FBGraphRequestManager.js +90 -0
- package/lib/module/FBGraphRequestManager.js.map +1 -0
- package/lib/module/FBLoginButton.js +62 -0
- package/lib/module/FBLoginButton.js.map +1 -0
- package/lib/module/FBLoginManager.js +97 -0
- package/lib/module/FBLoginManager.js.map +1 -0
- package/lib/module/FBMessageDialog.js +45 -0
- package/lib/module/FBMessageDialog.js.map +1 -0
- package/lib/module/FBProfile.js +127 -0
- package/lib/module/FBProfile.js.map +1 -0
- package/lib/module/FBSendButton.js +41 -0
- package/lib/module/FBSendButton.js.map +1 -0
- package/lib/module/FBSettings.js +108 -0
- package/lib/module/FBSettings.js.map +1 -0
- package/lib/module/FBShareButton.js +41 -0
- package/lib/module/FBShareButton.js.map +1 -0
- package/lib/module/FBShareDialog.js +51 -0
- package/lib/module/FBShareDialog.js.map +1 -0
- package/lib/module/index.js +44 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/models/FBAppGroupCreationContent.js +2 -0
- package/lib/module/models/FBAppGroupCreationContent.js.map +1 -0
- package/lib/module/models/FBGameRequestContent.js +2 -0
- package/lib/module/models/FBGameRequestContent.js.map +1 -0
- package/lib/module/models/FBSDKCallback.js +2 -0
- package/lib/module/models/FBSDKCallback.js.map +1 -0
- package/lib/module/models/FBShareContent.js +2 -0
- package/lib/module/models/FBShareContent.js.map +1 -0
- package/lib/module/models/FBShareLinkContent.js +2 -0
- package/lib/module/models/FBShareLinkContent.js.map +1 -0
- package/lib/module/models/FBSharePhoto.js +2 -0
- package/lib/module/models/FBSharePhoto.js.map +1 -0
- package/lib/module/models/FBSharePhotoContent.js +2 -0
- package/lib/module/models/FBSharePhotoContent.js.map +1 -0
- package/lib/module/models/FBShareVideo.js +2 -0
- package/lib/module/models/FBShareVideo.js.map +1 -0
- package/lib/module/models/FBShareVideoContent.js +2 -0
- package/lib/module/models/FBShareVideoContent.js.map +1 -0
- package/lib/module/util/validate.js +157 -0
- package/lib/module/util/validate.js.map +1 -0
- package/lib/module/utils/index.js +2 -0
- package/lib/module/utils/index.js.map +1 -0
- package/lib/typescript/FBAEMReporter.d.ts +21 -0
- package/lib/typescript/FBAEMReporter.d.ts.map +1 -0
- package/lib/typescript/FBAccessToken.d.ts +118 -0
- package/lib/typescript/FBAccessToken.d.ts.map +1 -0
- package/lib/typescript/FBAppEventsLogger.d.ts +201 -0
- package/lib/typescript/FBAppEventsLogger.d.ts.map +1 -0
- package/lib/typescript/FBAppLink.d.ts +5 -0
- package/lib/typescript/FBAppLink.d.ts.map +1 -0
- package/lib/typescript/FBAuthenticationToken.d.ts +29 -0
- package/lib/typescript/FBAuthenticationToken.d.ts.map +1 -0
- package/lib/typescript/FBGameRequestDialog.d.ts +39 -0
- package/lib/typescript/FBGameRequestDialog.d.ts.map +1 -0
- package/lib/typescript/FBGraphRequest.d.ts +70 -0
- package/lib/typescript/FBGraphRequest.d.ts.map +1 -0
- package/lib/typescript/FBGraphRequestManager.d.ts +51 -0
- package/lib/typescript/FBGraphRequestManager.d.ts.map +1 -0
- package/lib/typescript/FBLoginButton.d.ts +92 -0
- package/lib/typescript/FBLoginButton.d.ts.map +1 -0
- package/lib/typescript/FBLoginManager.d.ts +77 -0
- package/lib/typescript/FBLoginManager.d.ts.map +1 -0
- package/lib/typescript/FBMessageDialog.d.ts +42 -0
- package/lib/typescript/FBMessageDialog.d.ts.map +1 -0
- package/lib/typescript/FBProfile.d.ts +127 -0
- package/lib/typescript/FBProfile.d.ts.map +1 -0
- package/lib/typescript/FBSendButton.d.ts +42 -0
- package/lib/typescript/FBSendButton.d.ts.map +1 -0
- package/lib/typescript/FBSettings.d.ts +49 -0
- package/lib/typescript/FBSettings.d.ts.map +1 -0
- package/lib/typescript/FBShareButton.d.ts +42 -0
- package/lib/typescript/FBShareButton.d.ts.map +1 -0
- package/lib/typescript/FBShareDialog.d.ts +69 -0
- package/lib/typescript/FBShareDialog.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +43 -0
- package/lib/typescript/index.d.ts.map +1 -0
- package/lib/typescript/models/FBAppGroupCreationContent.d.ts +43 -0
- package/lib/typescript/models/FBAppGroupCreationContent.d.ts.map +1 -0
- package/lib/typescript/models/FBGameRequestContent.d.ts +63 -0
- package/lib/typescript/models/FBGameRequestContent.d.ts.map +1 -0
- package/lib/typescript/models/FBSDKCallback.d.ts +4 -0
- package/lib/typescript/models/FBSDKCallback.d.ts.map +1 -0
- package/lib/typescript/models/FBShareContent.d.ts +48 -0
- package/lib/typescript/models/FBShareContent.d.ts.map +1 -0
- package/lib/typescript/models/FBShareLinkContent.d.ts +65 -0
- package/lib/typescript/models/FBShareLinkContent.d.ts.map +1 -0
- package/lib/typescript/models/FBSharePhoto.d.ts +43 -0
- package/lib/typescript/models/FBSharePhoto.d.ts.map +1 -0
- package/lib/typescript/models/FBSharePhotoContent.d.ts +45 -0
- package/lib/typescript/models/FBSharePhotoContent.d.ts.map +1 -0
- package/lib/typescript/models/FBShareVideo.d.ts +31 -0
- package/lib/typescript/models/FBShareVideo.d.ts.map +1 -0
- package/lib/typescript/models/FBShareVideoContent.d.ts +58 -0
- package/lib/typescript/models/FBShareVideoContent.d.ts.map +1 -0
- package/lib/typescript/util/validate.d.ts +62 -0
- package/lib/typescript/util/validate.d.ts.map +1 -0
- package/lib/typescript/utils/index.d.ts +2 -0
- package/lib/typescript/utils/index.d.ts.map +1 -0
- package/package.json +155 -0
- package/plugin/build/config.d.ts +53 -0
- package/plugin/build/config.js +46 -0
- package/plugin/build/withFacebook.d.ts +4 -0
- package/plugin/build/withFacebook.js +59 -0
- package/plugin/build/withFacebookAndroid.d.ts +6 -0
- package/plugin/build/withFacebookAndroid.js +197 -0
- package/plugin/build/withFacebookIOS.d.ts +15 -0
- package/plugin/build/withFacebookIOS.js +163 -0
- package/plugin/build/withSKAdNetworkIdentifiers.d.ts +9 -0
- package/plugin/build/withSKAdNetworkIdentifiers.js +36 -0
- package/plugin/tsconfig.json +9 -0
- package/react-native-fbsdk-next.podspec +34 -0
- package/src/FBAEMReporter.ts +44 -0
- package/src/FBAccessToken.ts +222 -0
- package/src/FBAppEventsLogger.ts +375 -0
- package/src/FBAppLink.ts +30 -0
- package/src/FBAuthenticationToken.ts +61 -0
- package/src/FBGameRequestDialog.ts +49 -0
- package/src/FBGraphRequest.ts +89 -0
- package/src/FBGraphRequestManager.ts +117 -0
- package/src/FBLoginButton.tsx +152 -0
- package/src/FBLoginManager.ts +133 -0
- package/src/FBMessageDialog.ts +53 -0
- package/src/FBProfile.ts +166 -0
- package/src/FBSendButton.tsx +61 -0
- package/src/FBSettings.ts +122 -0
- package/src/FBShareButton.tsx +61 -0
- package/src/FBShareDialog.ts +96 -0
- package/src/index.ts +85 -0
- package/src/models/FBAppGroupCreationContent.ts +48 -0
- package/src/models/FBGameRequestContent.ts +81 -0
- package/src/models/FBSDKCallback.ts +3 -0
- package/src/models/FBShareContent.ts +54 -0
- package/src/models/FBShareLinkContent.ts +71 -0
- package/src/models/FBSharePhoto.ts +45 -0
- package/src/models/FBSharePhotoContent.ts +48 -0
- package/src/models/FBShareVideo.ts +31 -0
- package/src/models/FBShareVideoContent.ts +64 -0
- package/src/util/validate.ts +167 -0
- package/src/utils/index.ts +1 -0
- package/tsconfig.json +103 -0
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
package com.facebook.reactnative.androidsdk;
|
|
2
|
+
|
|
3
|
+
import com.facebook.Profile;
|
|
4
|
+
import com.facebook.ProfileTracker;
|
|
5
|
+
import com.facebook.react.bridge.Callback;
|
|
6
|
+
import com.facebook.react.bridge.NativeModule;
|
|
7
|
+
import com.facebook.react.bridge.ReactContextBaseJavaModule;
|
|
8
|
+
import com.facebook.react.bridge.ReactMethod;
|
|
9
|
+
import com.facebook.react.bridge.ReactApplicationContext;
|
|
10
|
+
import com.facebook.react.module.annotations.ReactModule;
|
|
11
|
+
|
|
12
|
+
import androidx.annotation.NonNull;
|
|
13
|
+
|
|
14
|
+
import java.util.Timer;
|
|
15
|
+
import java.util.TimerTask;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* This is a {@link NativeModule} that allows JS to use FBSDKProfile info of the current logged user.
|
|
19
|
+
*/
|
|
20
|
+
@ReactModule(name = FBProfileModule.NAME)
|
|
21
|
+
public class FBProfileModule extends ReactContextBaseJavaModule {
|
|
22
|
+
public static final String NAME = "FBProfile";
|
|
23
|
+
private ProfileTracker mProfileTracker;
|
|
24
|
+
|
|
25
|
+
public FBProfileModule(ReactApplicationContext reactContext) {
|
|
26
|
+
super(reactContext);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
@NonNull
|
|
30
|
+
@Override
|
|
31
|
+
public String getName() {
|
|
32
|
+
return NAME;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Get the current logged profile.
|
|
37
|
+
* @param callback Use callback to pass the current logged profile back to JS.
|
|
38
|
+
*/
|
|
39
|
+
@ReactMethod
|
|
40
|
+
public void getCurrentProfile(final Callback callback) {
|
|
41
|
+
// Return the profile object as a ReactMap.
|
|
42
|
+
if (Profile.getCurrentProfile() == null) {
|
|
43
|
+
final Timer timer = new Timer();
|
|
44
|
+
synchronized (timer) {
|
|
45
|
+
timer.schedule(
|
|
46
|
+
new TimerTask() {
|
|
47
|
+
@Override
|
|
48
|
+
public void run() {
|
|
49
|
+
timer.cancel();
|
|
50
|
+
callback.invoke();
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
30000
|
|
54
|
+
);
|
|
55
|
+
mProfileTracker = new ProfileTracker() {
|
|
56
|
+
@Override
|
|
57
|
+
protected void onCurrentProfileChanged(Profile oldProfile, Profile currentProfile) {
|
|
58
|
+
timer.cancel();
|
|
59
|
+
mProfileTracker.stopTracking();
|
|
60
|
+
callback.invoke(Utility.profileToReactMap(currentProfile));
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
} else {
|
|
65
|
+
callback.invoke(Utility.profileToReactMap(Profile.getCurrentProfile()));
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
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.CallbackManager;
|
|
24
|
+
import com.facebook.react.bridge.ReactApplicationContext;
|
|
25
|
+
import com.facebook.react.bridge.ReactContextBaseJavaModule;
|
|
26
|
+
|
|
27
|
+
public abstract class FBSDKCallbackManagerBaseJavaModule extends ReactContextBaseJavaModule {
|
|
28
|
+
|
|
29
|
+
private final FBActivityEventListener mActivityEventListener;
|
|
30
|
+
|
|
31
|
+
protected CallbackManager getCallbackManager() {
|
|
32
|
+
return mActivityEventListener.getCallbackManager();
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
protected FBSDKCallbackManagerBaseJavaModule(ReactApplicationContext reactContext, FBActivityEventListener activityEventListener) {
|
|
36
|
+
super(reactContext);
|
|
37
|
+
|
|
38
|
+
mActivityEventListener = activityEventListener;
|
|
39
|
+
reactContext.addActivityEventListener(mActivityEventListener);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
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.ReactPackage;
|
|
24
|
+
import com.facebook.react.bridge.NativeModule;
|
|
25
|
+
import com.facebook.react.bridge.ReactApplicationContext;
|
|
26
|
+
import com.facebook.react.uimanager.ViewManager;
|
|
27
|
+
|
|
28
|
+
import java.util.Arrays;
|
|
29
|
+
import java.util.List;
|
|
30
|
+
|
|
31
|
+
public class FBSDKPackage implements ReactPackage {
|
|
32
|
+
|
|
33
|
+
private FBActivityEventListener mActivityEventListener = new FBActivityEventListener();
|
|
34
|
+
|
|
35
|
+
@Override
|
|
36
|
+
public List<NativeModule> createNativeModules(
|
|
37
|
+
ReactApplicationContext reactContext) {
|
|
38
|
+
return Arrays.<NativeModule>asList(
|
|
39
|
+
new FBAccessTokenModule(reactContext),
|
|
40
|
+
new FBAppEventsLoggerModule(reactContext),
|
|
41
|
+
new FBAppLinkModule(reactContext),
|
|
42
|
+
new FBGameRequestDialogModule(reactContext, mActivityEventListener),
|
|
43
|
+
new FBGraphRequestModule(reactContext),
|
|
44
|
+
new FBLoginManagerModule(reactContext, mActivityEventListener),
|
|
45
|
+
new FBMessageDialogModule(reactContext, mActivityEventListener),
|
|
46
|
+
new FBProfileModule(reactContext),
|
|
47
|
+
new FBSettingsModule(),
|
|
48
|
+
new FBShareDialogModule(reactContext, mActivityEventListener)
|
|
49
|
+
);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
@Override
|
|
53
|
+
public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
|
|
54
|
+
return Arrays.<ViewManager>asList(
|
|
55
|
+
new FBLoginButtonManager(reactContext),
|
|
56
|
+
new FBSendButtonManager(),
|
|
57
|
+
new FBShareButtonManager()
|
|
58
|
+
);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
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.ReadableMap;
|
|
24
|
+
import com.facebook.react.uimanager.annotations.ReactProp;
|
|
25
|
+
import com.facebook.react.uimanager.SimpleViewManager;
|
|
26
|
+
import com.facebook.react.uimanager.ThemedReactContext;
|
|
27
|
+
import com.facebook.share.model.ShareContent;
|
|
28
|
+
import com.facebook.share.widget.SendButton;
|
|
29
|
+
|
|
30
|
+
public class FBSendButtonManager extends SimpleViewManager<SendButton> {
|
|
31
|
+
|
|
32
|
+
public static final String REACT_CLASS = "RCTFBSendButton";
|
|
33
|
+
|
|
34
|
+
@Override
|
|
35
|
+
public String getName() {
|
|
36
|
+
return REACT_CLASS;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
@Override
|
|
40
|
+
protected SendButton createViewInstance(ThemedReactContext reactContext) {
|
|
41
|
+
return new SendButton(reactContext);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
@ReactProp(name = "shareContent")
|
|
45
|
+
public void setShareContent(SendButton sendButton, ReadableMap shareContentMap) {
|
|
46
|
+
ShareContent shareContent = Utility.buildShareContent(shareContentMap);
|
|
47
|
+
if (shareContent != null) {
|
|
48
|
+
sendButton.setShareContent(shareContent);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
package com.facebook.reactnative.androidsdk;
|
|
10
|
+
|
|
11
|
+
import androidx.annotation.Nullable;
|
|
12
|
+
|
|
13
|
+
import com.facebook.FacebookSdk;
|
|
14
|
+
import com.facebook.react.bridge.BaseJavaModule;
|
|
15
|
+
import com.facebook.react.bridge.ReactMethod;
|
|
16
|
+
import com.facebook.react.bridge.ReadableArray;
|
|
17
|
+
import com.facebook.react.module.annotations.ReactModule;
|
|
18
|
+
import java.util.ArrayList;
|
|
19
|
+
import java.util.List;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* This is a {@link NativeModule} that allows JS to use SDK settings in Facebook Android SDK.
|
|
23
|
+
*/
|
|
24
|
+
@ReactModule(name = FBSettingsModule.NAME)
|
|
25
|
+
public class FBSettingsModule extends BaseJavaModule {
|
|
26
|
+
|
|
27
|
+
public static final String NAME = "FBSettings";
|
|
28
|
+
|
|
29
|
+
public FBSettingsModule() {}
|
|
30
|
+
|
|
31
|
+
@Override
|
|
32
|
+
public String getName() {
|
|
33
|
+
return NAME;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Sets data processing options with country and state
|
|
38
|
+
* @param options list of the options
|
|
39
|
+
* @param country code of the country
|
|
40
|
+
* @param state code of the state
|
|
41
|
+
*/
|
|
42
|
+
@ReactMethod
|
|
43
|
+
public void setDataProcessingOptions(ReadableArray options, int country, int state) {
|
|
44
|
+
List<String> opts = Utility.reactArrayToStringList(options);
|
|
45
|
+
String[] optsArray = opts.toArray(new String[0]);
|
|
46
|
+
FacebookSdk.setDataProcessingOptions(optsArray, country, state);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Initialize the sdk
|
|
51
|
+
* [FB SDK Best Practices for GDPR Compliance](https://developers.facebook.com/docs/app-events/gdpr-compliance/)
|
|
52
|
+
*/
|
|
53
|
+
@ReactMethod
|
|
54
|
+
public void initializeSDK() {
|
|
55
|
+
FacebookSdk.fullyInitialize();
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Set app id
|
|
60
|
+
* @param appID app id
|
|
61
|
+
*/
|
|
62
|
+
@ReactMethod
|
|
63
|
+
public void setAppID(String appID) {
|
|
64
|
+
FacebookSdk.setApplicationId(appID);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Set client token
|
|
69
|
+
* @param clientToken client token
|
|
70
|
+
*/
|
|
71
|
+
@ReactMethod
|
|
72
|
+
public void setClientToken(String clientToken) {
|
|
73
|
+
FacebookSdk.setClientToken(clientToken);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
@ReactMethod
|
|
77
|
+
public void setAppName(String displayName) {
|
|
78
|
+
FacebookSdk.setApplicationName(displayName);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
@ReactMethod
|
|
82
|
+
public void setGraphAPIVersion(String version) {
|
|
83
|
+
FacebookSdk.setGraphApiVersion(version);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
@ReactMethod
|
|
87
|
+
public void setAutoLogAppEventsEnabled(Boolean enabled) {
|
|
88
|
+
FacebookSdk.setAutoLogAppEventsEnabled(enabled);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
@ReactMethod
|
|
92
|
+
public void setAdvertiserIDCollectionEnabled(Boolean enabled) {
|
|
93
|
+
FacebookSdk.setAdvertiserIDCollectionEnabled(enabled);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
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.util.Log;
|
|
24
|
+
|
|
25
|
+
import com.facebook.react.bridge.ReadableMap;
|
|
26
|
+
import com.facebook.react.uimanager.annotations.ReactProp;
|
|
27
|
+
import com.facebook.react.uimanager.SimpleViewManager;
|
|
28
|
+
import com.facebook.react.uimanager.ThemedReactContext;
|
|
29
|
+
import com.facebook.share.model.ShareContent;
|
|
30
|
+
import com.facebook.share.widget.ShareButton;
|
|
31
|
+
|
|
32
|
+
public class FBShareButtonManager extends SimpleViewManager<ShareButton> {
|
|
33
|
+
|
|
34
|
+
public static final String REACT_CLASS = "RCTFBShareButton";
|
|
35
|
+
|
|
36
|
+
@Override
|
|
37
|
+
public String getName() {
|
|
38
|
+
return REACT_CLASS;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
@Override
|
|
42
|
+
protected ShareButton createViewInstance(ThemedReactContext reactContext) {
|
|
43
|
+
return new ShareButton(reactContext);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
@ReactProp(name = "shareContent")
|
|
47
|
+
public void setShareContent(ShareButton shareButton, ReadableMap shareContentMap) {
|
|
48
|
+
ShareContent shareContent = Utility.buildShareContent(shareContentMap);
|
|
49
|
+
if (shareContent != null) {
|
|
50
|
+
shareButton.setShareContent(shareContent);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
@@ -0,0 +1,107 @@
|
|
|
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 java.util.Locale;
|
|
24
|
+
import com.facebook.react.bridge.Arguments;
|
|
25
|
+
import com.facebook.react.bridge.Promise;
|
|
26
|
+
import com.facebook.react.bridge.ReactApplicationContext;
|
|
27
|
+
import com.facebook.react.bridge.ReactMethod;
|
|
28
|
+
import com.facebook.react.bridge.ReadableMap;
|
|
29
|
+
import com.facebook.react.bridge.WritableMap;
|
|
30
|
+
import com.facebook.react.module.annotations.ReactModule;
|
|
31
|
+
import com.facebook.share.Sharer;
|
|
32
|
+
import com.facebook.share.widget.ShareDialog;
|
|
33
|
+
|
|
34
|
+
@ReactModule(name = FBShareDialogModule.NAME)
|
|
35
|
+
public class FBShareDialogModule extends FBSDKCallbackManagerBaseJavaModule {
|
|
36
|
+
|
|
37
|
+
public static final String NAME = "FBShareDialog";
|
|
38
|
+
|
|
39
|
+
private class ShareDialogCallback extends ReactNativeFacebookSDKCallback<Sharer.Result> {
|
|
40
|
+
|
|
41
|
+
public ShareDialogCallback(Promise promise) {
|
|
42
|
+
super(promise);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
@Override
|
|
46
|
+
public void onSuccess(Sharer.Result result) {
|
|
47
|
+
if (mPromise != null) {
|
|
48
|
+
WritableMap shareResult = Arguments.createMap();
|
|
49
|
+
shareResult.putString("postId", result.getPostId());
|
|
50
|
+
mPromise.resolve(shareResult);
|
|
51
|
+
mPromise = null;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
private ShareDialog.Mode mShareDialogMode;
|
|
57
|
+
private boolean mShouldFailOnError;
|
|
58
|
+
|
|
59
|
+
public FBShareDialogModule(ReactApplicationContext reactContext, FBActivityEventListener activityEventListener) {
|
|
60
|
+
super(reactContext, activityEventListener);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
@Override
|
|
64
|
+
public String getName() {
|
|
65
|
+
return NAME;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
@ReactMethod
|
|
69
|
+
public void canShow(ReadableMap shareContent, Promise promise) {
|
|
70
|
+
if (getCurrentActivity() != null) {
|
|
71
|
+
ShareDialog shareDialog = new ShareDialog(getCurrentActivity());
|
|
72
|
+
promise.resolve(
|
|
73
|
+
mShareDialogMode == null
|
|
74
|
+
? shareDialog.canShow(Utility.buildShareContent(shareContent))
|
|
75
|
+
: shareDialog.canShow(Utility.buildShareContent(shareContent), mShareDialogMode)
|
|
76
|
+
);
|
|
77
|
+
} else {
|
|
78
|
+
promise.reject("No current activity.");
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
@ReactMethod
|
|
83
|
+
public void show(ReadableMap shareContent, final Promise promise) {
|
|
84
|
+
if (getCurrentActivity() != null) {
|
|
85
|
+
ShareDialog shareDialog = new ShareDialog(getCurrentActivity());
|
|
86
|
+
shareDialog.registerCallback(getCallbackManager(), new ShareDialogCallback(promise));
|
|
87
|
+
shareDialog.setShouldFailOnDataError(mShouldFailOnError);
|
|
88
|
+
if (mShareDialogMode != null) {
|
|
89
|
+
shareDialog.show(Utility.buildShareContent(shareContent), mShareDialogMode);
|
|
90
|
+
} else {
|
|
91
|
+
shareDialog.show(Utility.buildShareContent(shareContent));
|
|
92
|
+
}
|
|
93
|
+
} else {
|
|
94
|
+
promise.reject("No current activity.");
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
@ReactMethod
|
|
99
|
+
public void setMode(String mode) {
|
|
100
|
+
mShareDialogMode = ShareDialog.Mode.valueOf(mode.toUpperCase(Locale.ROOT));
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
@ReactMethod
|
|
104
|
+
public void setShouldFailOnError(boolean shouldFailOnError) {
|
|
105
|
+
mShouldFailOnError = shouldFailOnError;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
@@ -0,0 +1,126 @@
|
|
|
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.AccessToken;
|
|
24
|
+
import com.facebook.AccessTokenTracker;
|
|
25
|
+
import com.facebook.CallbackManager;
|
|
26
|
+
import com.facebook.FacebookCallback;
|
|
27
|
+
import com.facebook.FacebookException;
|
|
28
|
+
import com.facebook.login.LoginResult;
|
|
29
|
+
import com.facebook.login.widget.LoginButton;
|
|
30
|
+
import com.facebook.react.bridge.Arguments;
|
|
31
|
+
import com.facebook.react.bridge.ReactContext;
|
|
32
|
+
import com.facebook.react.bridge.WritableMap;
|
|
33
|
+
import com.facebook.react.uimanager.ThemedReactContext;
|
|
34
|
+
import com.facebook.react.uimanager.UIManagerHelper;
|
|
35
|
+
import com.facebook.react.uimanager.events.EventDispatcher;
|
|
36
|
+
|
|
37
|
+
import java.util.Set;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* A Log In/Log Out button that maintains login state and logs in/out for the app.
|
|
41
|
+
* This control requires the app ID to be specified in the AndroidManifest.xml.
|
|
42
|
+
*/
|
|
43
|
+
public class RCTLoginButton extends LoginButton {
|
|
44
|
+
|
|
45
|
+
private final CallbackManager mCallbackManager;
|
|
46
|
+
private final EventDispatcher mEventDispatcher;
|
|
47
|
+
|
|
48
|
+
public RCTLoginButton(ThemedReactContext context, CallbackManager callbackManager) {
|
|
49
|
+
super(context);
|
|
50
|
+
this.setToolTipMode(ToolTipMode.NEVER_DISPLAY);
|
|
51
|
+
mCallbackManager = callbackManager;
|
|
52
|
+
mEventDispatcher = UIManagerHelper.getEventDispatcherForReactTag((ReactContext) getContext(), getId());
|
|
53
|
+
init();
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
public void init() {
|
|
57
|
+
new AccessTokenTracker() {
|
|
58
|
+
@Override
|
|
59
|
+
protected void onCurrentAccessTokenChanged(
|
|
60
|
+
AccessToken oldAccessToken,
|
|
61
|
+
AccessToken currentAccessToken) {
|
|
62
|
+
if (currentAccessToken == null) {
|
|
63
|
+
WritableMap event = Arguments.createMap();
|
|
64
|
+
event.putString("type", "logoutFinished");
|
|
65
|
+
ReactContext context = (ReactContext) getContext();
|
|
66
|
+
mEventDispatcher.dispatchEvent(new RCTLoginButtonEvent(UIManagerHelper.getSurfaceId(context), getId(), event));
|
|
67
|
+
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
this.registerCallback(mCallbackManager, new FacebookCallback<LoginResult>() {
|
|
72
|
+
@Override
|
|
73
|
+
public void onSuccess(LoginResult loginResult) {
|
|
74
|
+
WritableMap event = Arguments.createMap();
|
|
75
|
+
event.putString("type", "loginFinished");
|
|
76
|
+
event.putString("error", null);
|
|
77
|
+
WritableMap result = Arguments.createMap();
|
|
78
|
+
result.putBoolean("isCancelled", false);
|
|
79
|
+
result.putArray(
|
|
80
|
+
"grantedPermissions",
|
|
81
|
+
Arguments.fromJavaArgs(
|
|
82
|
+
setToStringArray(loginResult.getRecentlyGrantedPermissions())));
|
|
83
|
+
result.putArray(
|
|
84
|
+
"declinedPermissions",
|
|
85
|
+
Arguments.fromJavaArgs(
|
|
86
|
+
setToStringArray(loginResult.getRecentlyDeniedPermissions())));
|
|
87
|
+
event.putMap("result", result);
|
|
88
|
+
ReactContext context = (ReactContext) getContext();
|
|
89
|
+
mEventDispatcher.dispatchEvent(new RCTLoginButtonEvent(UIManagerHelper.getSurfaceId(context), getId(), event));
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
@Override
|
|
93
|
+
public void onError(FacebookException error) {
|
|
94
|
+
WritableMap event = Arguments.createMap();
|
|
95
|
+
event.putString("type", "loginFinished");
|
|
96
|
+
event.putString("error", error.toString());
|
|
97
|
+
WritableMap result = Arguments.createMap();
|
|
98
|
+
result.putBoolean("isCancelled", false);
|
|
99
|
+
event.putMap("result", result);
|
|
100
|
+
ReactContext context = (ReactContext) getContext();
|
|
101
|
+
mEventDispatcher.dispatchEvent(new RCTLoginButtonEvent(UIManagerHelper.getSurfaceId(context), getId(), event));
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
@Override
|
|
105
|
+
public void onCancel() {
|
|
106
|
+
WritableMap event = Arguments.createMap();
|
|
107
|
+
event.putString("type", "loginFinished");
|
|
108
|
+
event.putString("error", null);
|
|
109
|
+
WritableMap result = Arguments.createMap();
|
|
110
|
+
result.putBoolean("isCancelled", true);
|
|
111
|
+
event.putMap("result", result);
|
|
112
|
+
ReactContext context = (ReactContext) getContext();
|
|
113
|
+
mEventDispatcher.dispatchEvent(new RCTLoginButtonEvent(UIManagerHelper.getSurfaceId(context), getId(), event));
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
private String[] setToStringArray(Set<String> set) {
|
|
119
|
+
String[] array = new String[set.size()];
|
|
120
|
+
int i = 0;
|
|
121
|
+
for (String e : set) {
|
|
122
|
+
array[i++] = e;
|
|
123
|
+
}
|
|
124
|
+
return array;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
package com.facebook.reactnative.androidsdk;
|
|
2
|
+
|
|
3
|
+
import androidx.annotation.NonNull;
|
|
4
|
+
|
|
5
|
+
import com.facebook.react.bridge.WritableMap;
|
|
6
|
+
import com.facebook.react.uimanager.events.Event;
|
|
7
|
+
|
|
8
|
+
public class RCTLoginButtonEvent extends Event<RCTLoginButtonEvent> {
|
|
9
|
+
public static final String EVENT_NAME = "topChange";
|
|
10
|
+
private final WritableMap mEvent;
|
|
11
|
+
|
|
12
|
+
public RCTLoginButtonEvent(int surfaceId, int viewTag, WritableMap event) {
|
|
13
|
+
super(surfaceId,viewTag);
|
|
14
|
+
mEvent = event;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
@NonNull
|
|
18
|
+
@Override
|
|
19
|
+
public String getEventName() {
|
|
20
|
+
return EVENT_NAME;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
@Override
|
|
24
|
+
protected WritableMap getEventData() {
|
|
25
|
+
return mEvent;
|
|
26
|
+
}
|
|
27
|
+
}
|