package com.socialize.ui.view;
import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import com.socialize.ConfigUtils;
import com.socialize.android.ioc.IOCContainer;
import com.socialize.config.SocializeConfig;
import com.socialize.error.SocializeErrorHandler;
import com.socialize.listener.SocializeAuthListener;
import com.socialize.listener.SocializeListener;
import com.socialize.ui.SocializeBaseView;
public abstract class AuthenticatedView extends SocializeBaseView {
private String consumerKey;
private String consumerSecret;
private String fbAppId;
private SocializeListener onErrorListener;
public AuthenticatedView(Context context) {
super(context);
}
public AuthenticatedView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public final void onViewLoad(IOCContainer container) {
super.onViewLoad(container);
setErrorHandler((SocializeErrorHandler) container.getBean("socializeUIErrorHandler"));
consumerKey = getConsumerKey(container);
consumerSecret = getConsumerSecret(container);
fbAppId = getFacebookAppId(container);
SocializeAuthListener listener = getAuthListener(container);
onBeforeAuthenticate(container);
getSocialize().authenticate(
container.getContext(),
consumerKey,
consumerSecret,
listener);
}
@Override
public void onViewUpdate(IOCContainer container) {
super.onViewUpdate(container);
if(container != null) {
setErrorHandler((SocializeErrorHandler) container.getBean("socializeUIErrorHandler"));
}
// Make sure we notify after authenticate to dismiss any pending dialogs.
onAfterAuthenticate(container);
}
protected String getConsumerKey(IOCContainer container) {
return ConfigUtils.getConfig(getContext()).getProperty(SocializeConfig.SOCIALIZE_CONSUMER_KEY);
}
protected String getConsumerSecret(IOCContainer container) {
return ConfigUtils.getConfig(getContext()).getProperty(SocializeConfig.SOCIALIZE_CONSUMER_SECRET);
}
protected String getFacebookAppId(IOCContainer container) {
return ConfigUtils.getConfig(getContext()).getProperty(SocializeConfig.FACEBOOK_APP_ID);
}
public SocializeAuthListener getAuthListener(IOCContainer container) {
return new AuthenticatedViewListener(this, container);
}
// Wrapped so it can be mocked.
protected Context getViewContext() {
return getContext();
}
public void setConsumerKey(String consumerKey) {
this.consumerKey = consumerKey;
}
public void setConsumerSecret(String consumerSecret) {
this.consumerSecret = consumerSecret;
}
public void setFbAppId(String fbAppId) {
this.fbAppId = fbAppId;
}
public String getConsumerKey() {
return consumerKey;
}
public String getConsumerSecret() {
return consumerSecret;
}
public String getFbAppId() {
return fbAppId;
}
public void setOnErrorListener(SocializeListener onErrorListener) {
this.onErrorListener = onErrorListener;
}
public SocializeListener getOnErrorListener() {
return onErrorListener;
}
// Subclasses override
public void onBeforeAuthenticate(IOCContainer container) {}
public void onAfterAuthenticate(IOCContainer container) {}
public abstract View getView();
}