package com.sromku.simple.fb.actions;
import android.app.Activity;
import com.facebook.FacebookCallback;
import com.facebook.FacebookException;
import com.facebook.share.model.GameRequestContent;
import com.facebook.share.widget.GameRequestDialog;
import com.sromku.simple.fb.SessionManager;
import com.sromku.simple.fb.listeners.OnInviteListener;
import com.sromku.simple.fb.utils.Errors;
import com.sromku.simple.fb.utils.Errors.ErrorMsg;
import com.sromku.simple.fb.utils.Logger;
import java.util.ArrayList;
public class InviteAction extends AbstractAction {
private OnInviteListener mOnInviteListener;
private String mMessage;
private String mData;
private String mTo;
private String[] mSuggestions;
private static final String PARAM_MESSAGE = "message";
private static final String PARAM_DATA = "data";
private static final String PARAM_TO = "to";
private static final String PARAM_SUGGESTIONS = "suggestions";
public InviteAction(SessionManager sessionManager) {
super(sessionManager);
}
public void setMessage(String message) {
mMessage = message;
}
public void setData(String data) {
mData = data;
}
public void setTo(String to) {
mTo = to;
}
public void setSuggestions(String[] suggestions) {
mSuggestions = suggestions;
}
public void setOnInviteListener(OnInviteListener onInviteListener) {
mOnInviteListener = onInviteListener;
}
@Override
protected void executeImpl() {
if (sessionManager.isLogin()) {
openInviteDialog(sessionManager.getActivity(), mOnInviteListener);
}
else {
String reason = Errors.getError(ErrorMsg.LOGIN);
Logger.logError(InviteAction.class, reason, null);
mOnInviteListener.onFail(reason);
}
}
private void openInviteDialog(Activity activity, final OnInviteListener onInviteListener) {
// build request
GameRequestContent.Builder builder = new GameRequestContent.Builder();
builder.setMessage(mMessage);
builder.setData(mData);
builder.setTo(mTo);
if (mSuggestions != null) {
ArrayList<String> arrayList = new ArrayList<String>();
for (String suggested : mSuggestions) {
arrayList.add(suggested);
}
builder.setSuggestions(arrayList);
}
GameRequestContent gameRequestContent = builder.build();
// set dialog
GameRequestDialog dialog = new GameRequestDialog(activity);
if (dialog.canShow(gameRequestContent)) {
dialog.registerCallback(sessionManager.getCallbackManager(), new FacebookCallback<GameRequestDialog.Result>() {
@Override
public void onSuccess(GameRequestDialog.Result result) {
String requestId = result.getRequestId();
if (mOnInviteListener != null) {
mOnInviteListener.onComplete(result.getRequestRecipients(), requestId);
}
}
@Override
public void onCancel() {
if (mOnInviteListener != null) {
mOnInviteListener.onFail("Canceled by user");
}
}
@Override
public void onError(FacebookException e) {
if (mOnInviteListener != null) {
mOnInviteListener.onFail(e.getMessage());
}
}
});
dialog.show(gameRequestContent);
}
}
}