package com.socialize.auth.facebook;
import android.content.Intent;
import android.os.Bundle;
import com.socialize.auth.facebook.FacebookAuthProviderInfo.PermissionType;
import com.socialize.config.SocializeConfig;
import com.socialize.listener.AuthProviderListener;
import com.socialize.listener.ListenerHolder;
import com.socialize.log.SocializeLogger;
import com.socialize.networks.facebook.FacebookFacade;
import com.socialize.util.StringUtils;
public class FacebookActivityService {
private FacebookFacade facebookFacade;
private ListenerHolder listenerHolder;
private FacebookActivity activity;
private SocializeConfig config;
private SocializeLogger logger;
private FacebookService service;
public FacebookActivityService(FacebookActivity activity) {
super();
this.activity = activity;
}
public FacebookActivityService() {
super();
}
public void onCreate() {
Intent intent = activity.getIntent();
if(intent != null) {
Bundle extras = intent.getExtras();
if(extras != null) {
String[] permissions = extras.getStringArray("permissions");
listenerHolder = activity.getBean("listenerHolder");
logger = activity.getBean("logger");
config = activity.getBean("config");
facebookFacade = activity.getBean("facebookFacadeFactory");
service = getFacebookService();
boolean sso = extras.getBoolean("sso");
String type = extras.getString("type");
PermissionType pType = PermissionType.READ;
if(!StringUtils.isEmpty(type)) {
pType = PermissionType.valueOf(type);
}
if(permissions != null && permissions.length > 0) {
if(pType.equals(PermissionType.READ)) {
service.authenticateForRead(activity, sso, permissions);
}
else {
service.authenticateForWrite(activity, sso, permissions);
}
}
else {
service.authenticateForRead(activity, sso, FacebookFacade.READ_PERMISSIONS);
}
}
else {
activity.finish();
}
}
else {
activity.finish();
}
}
public void onCancel() {
if(service != null) {
service.cancel(activity);
}
}
public FacebookService getFacebookService() {
service = new FacebookService(config.getProperty(SocializeConfig.FACEBOOK_APP_ID), facebookFacade, (AuthProviderListener) listenerHolder.pop("auth"), logger);
return service;
}
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if(facebookFacade != null) {
facebookFacade.onActivityResult(this.activity, requestCode, resultCode, data);
}
}
public void setService(FacebookService service) {
this.service = service;
}
public void setActivity(FacebookActivity activity) {
this.activity = activity;
}
public void setLogger(SocializeLogger logger) {
this.logger = logger;
}
public void setFacebookFacade(FacebookFacade facebookFacade) {
this.facebookFacade = facebookFacade;
}
}