package com.facebook.android;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.util.Log;
import anywheresoftware.b4a.BA;
import anywheresoftware.b4a.BA.ActivityObject;
import anywheresoftware.b4a.BA.Permissions;
import anywheresoftware.b4a.BA.ShortName;
import anywheresoftware.b4a.BA.Version;
import com.facebook.android.Facebook.DialogListener;
@ActivityObject
//@DependsOn(values={"facebooksdk"})
@Permissions(values={"android.permission.INTERNET"})
@ShortName("fbtest")
@Version(1.0f)
public class fbshare {
Facebook fb;
SharedPreferences sp;
String FbPicture;
String FbLink;
String FbName;
String FbCaption;
String FbDescription;
String DialogType;
AsyncFacebookRunner asyncRunner;
public void FbConnect(final BA ba, String App_ID, String sType, String sPicture, String sLink, String sName, String sCaption, String sDescription, Drawable pic) {
FbPicture = sPicture;
FbLink = sLink;
FbName = sName;
FbCaption = sCaption;
FbDescription = sDescription;
DialogType = sType;
Utility.closeimage = pic;
fb = new Facebook(App_ID);
asyncRunner = new AsyncFacebookRunner(fb);
sp = ba.context.getSharedPreferences("amapp",Context.MODE_PRIVATE);
String Access_Token = sp.getString("Access_Token", null);
long Expires = sp.getLong("Expires", 0);
if(Access_Token != null) {
fb.setAccessToken(Access_Token);
}
if(Expires != 0) {
fb.setAccessExpires(Expires);
}
if(fb.isSessionValid()) {
// code for feed dialog
if(DialogType == "feed"){
showfeed(ba);
}else{
apprequest(ba);
}
}else{
// Log into FB
fb.authorize(ba.activity, new String[] {"publish_stream","read_friendlists"},Facebook.FORCE_DIALOG_AUTH, new DialogListener() {
@Override
public void onCancel() {
Log.d("B4A", "DialogListener onCancel");
}
@Override
public void onComplete(Bundle values) {
Log.d("B4A", "DialogListener onComplete");
Editor editor = sp.edit();
editor.putString("Access_Token", fb.getAccessToken());
editor.putLong("Expires", fb.getAccessExpires());
editor.commit();
if(DialogType == "feed"){
Log.d("B4A", "DialogListener showfeed");
showfeed(ba);
}else{
Log.d("B4A", "DialogListener apprequest");
apprequest(ba);
}
}
@Override
public void onError(DialogError derror) {
Log.d("B4A", "Authorize OnError - " + derror.toString());
//ba.raiseEvent(this, "fberror", new Object[] { derror.toString() });
}
@Override
public void onFacebookError(FacebookError ferror) {
Log.d("B4A", "Authorize OnFacebookError - " + ferror.toString() );
//ba.raiseEventFromDifferentThread(Sender instance here, null, ATaskId, EventName here, true, new Object[] { Your values });
//ba.raiseEvent(this, "fbrrror", new Object[] { ferror.toString() });
}
});
}
}
private void apprequest(final BA ba){
Bundle params = new Bundle();
params.putString("title", FbCaption);
params.putString("message", FbDescription);
fb.dialog(ba.context, "apprequests", params, new DialogListener() {
@Override
public void onCancel() {
Log.d("B4A", "DialogListener onCancel");
}
@Override
public void onComplete(Bundle values) {
int userNum = values.keySet().size() - 1;
Log.d("B4A", "AppRequestComplete onComplete -" + userNum);
ba.raiseEventFromDifferentThread(this, null, 0, "fbapprequestscomplete", true, new Object[] { userNum });
//ba.raiseEvent(this, "fbapprequestcomplete", new Object[] { userNum });
}
@Override
public void onError(DialogError derror) {
Log.d("B4A", "AppRequest onError - " + derror.toString());
//ba.raiseEventFromDifferentThread(this, null, 0, "fberror", true, new Object[] { "Showfeed onFacebookError - " + derror.toString() });
//ba.raiseEvent(this, "FbError", new Object[] { derror.toString() });
}
@Override
public void onFacebookError(FacebookError ferror) {
Log.d("B4A", "AppRequest onFacebookError - " + ferror.toString());
//ba.raiseEventFromDifferentThread(this, null, 0, "fberror", true, new Object[] { "Showfeed onFacebookError - " + ferror.toString() });
//ba.raiseEvent(this, "FbError", new Object[] { ferror.toString() });
}
});
}
private void showfeed(final BA ba){
Bundle params = new Bundle();
params.putString("link", FbLink);
params.putString("caption", FbCaption);
params.putString("picture", FbPicture);
params.putString("description", FbDescription);
params.putString("name", FbName);
fb.dialog(ba.context, "feed", params, new DialogListener() {
@Override
public void onCancel() {
Log.d("B4A", "DialogListener onCancel");
}
@Override
public void onComplete(Bundle values) {
Log.d("B4A", "DialogListener onComplete");
ba.raiseEventFromDifferentThread(this, null, 0, "fbfeedcomplete", true, new Object[] { "OK" });
//ba.raiseEvent(this, "fbfeedcomplete", new Object[] { "OK" });
}
@Override
public void onError(DialogError derror) {
Log.d("B4A", "Showfeed onError - " + derror.toString());
//ba.raiseEventFromDifferentThread(this, null, 0, "fberror", true, new Object[] { "Showfeed onError - " + derror.toString() });
//ba.raiseEvent(this, "FbError", new Object[] { derror.toString() });
}
@Override
public void onFacebookError(FacebookError ferror) {
Log.d("B4A", "Showfeed onFacebookError - " + ferror.toString());
//ba.raiseEventFromDifferentThread(this, null, 0, "fberror", true, new Object[] { "Showfeed onFacebookError - " + ferror.toString() });
//ba.raiseEvent(this, "FbError", new Object[] { ferror.toString() });
}
});
}
}