package com.quickblox.q_municate.utils.helpers;
import android.app.Activity;
import android.content.Intent;
import com.facebook.AccessToken;
import com.facebook.AccessTokenTracker;
import com.facebook.CallbackManager;
import com.facebook.FacebookCallback;
import com.facebook.FacebookSdk;
import com.facebook.login.LoginManager;
import com.facebook.login.LoginResult;
import com.quickblox.q_municate_core.utils.helpers.CoreSharedHelper;
import java.util.ArrayList;
import java.util.List;
public class FacebookHelper {
private static final String PERMISSION_EMAIL = "email";
private static final String PERMISSION_USER_FRIENDS = "user_friends";
private Activity activity;
private FBAccessTokenTracker fbAccessTokenTracker;
private CallbackManager fbCallbackManager;
private LoginManager fbLoginManager;
public FacebookHelper(Activity activity) {
this.activity = activity;
initFacebook();
}
public void logout() {
LoginManager.getInstance().logOut();
}
private void initFacebook() {
FacebookSdk.sdkInitialize(activity.getApplicationContext());
fbCallbackManager = CallbackManager.Factory.create();
fbLoginManager = LoginManager.getInstance();
this.fbAccessTokenTracker = new FBAccessTokenTracker();
}
public void onActivityResult(int requestCode, int resultCode, Intent data) {
fbCallbackManager.onActivityResult(requestCode, resultCode, data);
}
public void login(FacebookCallback<LoginResult> facebookLoginCallback) {
fbLoginManager.registerCallback(fbCallbackManager, facebookLoginCallback);
fbLoginManager.logInWithReadPermissions(activity, generatePermissionsList());
}
public List<String> generatePermissionsList() {
List<String> permissionsList = new ArrayList<String>();
permissionsList.add(PERMISSION_EMAIL);
permissionsList.add(PERMISSION_USER_FRIENDS);
return permissionsList;
}
public void onActivityStart() {
fbAccessTokenTracker.startTracking();
}
public void onActivityStop() {
fbAccessTokenTracker.stopTracking();
}
public boolean isSessionOpened() {
return CoreSharedHelper.getInstance().getFBToken() != null && AccessToken.getCurrentAccessToken() != null;
}
private class FBAccessTokenTracker extends AccessTokenTracker {
@Override
protected void onCurrentAccessTokenChanged(AccessToken oldAccessToken, AccessToken currentAccessToken) {
if (currentAccessToken != null) {
CoreSharedHelper.getInstance().saveFBToken(currentAccessToken.getToken());
} else {
CoreSharedHelper.getInstance().saveFBToken(null);
}
}
}
}