package com.androidsocialnetworks.lib;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import com.androidsocialnetworks.lib.listener.base.SocialNetworkListener;
import java.util.HashMap;
import java.util.Map;
import static com.androidsocialnetworks.lib.Consts.TAG;
public abstract class OAuthSocialNetwork extends SocialNetwork {
protected Map<String, SocialNetworkAsyncTask> mRequests = new HashMap<String, SocialNetworkAsyncTask>();
protected OAuthSocialNetwork(Fragment fragment) {
super(fragment);
}
protected void executeRequest(SocialNetworkAsyncTask request, Bundle params, String requestID) {
checkRequestState(mRequests.get(requestID));
mRequests.put(requestID, request);
request.execute(params == null ? new Bundle() : params);
}
private void cancelRequest(String requestID) {
Log.d(TAG, "TwitterSocialNetwork.cancelRequest: " + requestID);
SocialNetworkAsyncTask request = mRequests.get(requestID);
if (request != null) {
request.cancel(true);
}
mRequests.remove(requestID);
}
@Override
public void cancelLoginRequest() {
super.cancelLoginRequest();
cancelRequest(REQUEST_LOGIN);
cancelRequest(REQUEST_LOGIN2);
}
@Override
public void cancelGetCurrentSocialPersonRequest() {
super.cancelGetCurrentSocialPersonRequest();
cancelRequest(REQUEST_GET_CURRENT_PERSON);
}
@Override
public void cancelGetSocialPersonRequest() {
super.cancelGetSocialPersonRequest();
cancelRequest(REQUEST_GET_PERSON);
}
@Override
public void cancelPostMessageRequest() {
super.cancelPostMessageRequest();
cancelRequest(REQUEST_POST_MESSAGE);
}
@Override
public void cancelPostPhotoRequest() {
super.cancelPostPhotoRequest();
cancelRequest(REQUEST_POST_PHOTO);
}
@Override
public void cancelCheckIsFriendRequest() {
super.cancelCheckIsFriendRequest();
cancelRequest(REQUEST_CHECK_IS_FRIEND);
}
@Override
public void cancelAddFriendRequest() {
super.cancelAddFriendRequest();
cancelRequest(REQUEST_ADD_FRIEND);
}
@Override
public void cancelRemoveFriendRequest() {
super.cancelRemoveFriendRequest();
cancelRequest(REQUEST_REMOVE_FRIEND);
}
protected boolean handleRequestResult(Bundle result, String requestID) {
return handleRequestResult(result, requestID, null);
}
protected boolean handleRequestResult(Bundle result, String requestID, Object data) {
Log.d(TAG, this + "handleRequestResult: " + result + " : " + requestID);
mRequests.remove(requestID);
SocialNetworkListener socialNetworkListener = mLocalListeners.get(requestID);
// 1: user didn't set listener, or pass null, this doesn't have any sence
// 2: request was canceled...
if (socialNetworkListener == null) {
Log.e(TAG, "TwitterSocialNetwork.handleRequestResult socialNetworkListener == null");
return false;
}
String error = result.getString(SocialNetworkAsyncTask.RESULT_ERROR);
if (error != null) {
socialNetworkListener.onError(getID(), requestID, error, data);
mLocalListeners.remove(requestID);
return false;
}
return true;
}
}