package com.sromku.simple.fb.actions; import com.facebook.FacebookCallback; import com.facebook.FacebookException; import com.facebook.share.Sharer; import com.facebook.share.model.SharePhotoContent; import com.facebook.share.widget.ShareDialog; import com.sromku.simple.fb.SessionManager; import com.sromku.simple.fb.entities.Photo; import com.sromku.simple.fb.listeners.OnPublishListener; import com.sromku.simple.fb.utils.Utils; import java.util.List; public class PublishPhotoDialogAction extends AbstractAction { private OnPublishListener mOnPublishListener; private List<Photo> mPhotos; private String mPlace; public PublishPhotoDialogAction(SessionManager sessionManager) { super(sessionManager); } public void setPhotos(List<Photo> photos) { mPhotos = photos; } public void setPlace(String place) { mPlace = place; } public void setOnPublishListener(OnPublishListener onPublishListener) { mOnPublishListener = onPublishListener; } @Override protected void executeImpl() { ShareDialog shareDialog = new ShareDialog(sessionManager.getActivity()); SharePhotoContent content = new SharePhotoContent.Builder() .addPhotos(Utils.extractBitmaps(mPhotos)) .build(); if (shareDialog.canShow(content)) { shareDialog.registerCallback(sessionManager.getCallbackManager(), new FacebookCallback<Sharer.Result>() { @Override public void onSuccess(Sharer.Result result) { String postId = result.getPostId(); if (mOnPublishListener != null) { mOnPublishListener.onComplete(postId); } } @Override public void onCancel() { if (mOnPublishListener != null) { mOnPublishListener.onFail("Canceled by user"); } } @Override public void onError(FacebookException e) { if (mOnPublishListener != null) { mOnPublishListener.onFail(e.getMessage()); } } }); shareDialog.show(content); } } }