//////////////////////////////////////////////////////////////////////////////////////
//
// Copyright 2012 Freshplanet (http://freshplanet.com | opensource@freshplanet.com)
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
//////////////////////////////////////////////////////////////////////////////////////
package com.freshplanet.ane.AirFacebook;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import com.facebook.Session;
import com.facebook.android.BuildConfig;
import com.facebook.widget.FacebookDialog;
import com.facebook.widget.FacebookDialog.Callback;
import com.facebook.widget.FacebookDialog.PendingCall;
public class ShareDialogActivity extends Activity implements DialogFactory, Callback
{
public static String extraPrefix = "com.freshplanet.ane.AirFacebook.ShareDialogActivity";
private String callback;
private DialogLifecycleHelper dialogHelper;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
dialogHelper = new DialogLifecycleHelper(this, this, this);
callback = this.getIntent().getStringExtra(extraPrefix+".callback");
dialogHelper.onCreate(savedInstanceState);
}
@Override
public PendingCall createDialog() {
// Retrieve extra values
String link = this.getIntent().getStringExtra(extraPrefix+".link");
String name = this.getIntent().getStringExtra(extraPrefix+".name");
String caption = this.getIntent().getStringExtra(extraPrefix+".caption");
String description = this.getIntent().getStringExtra(extraPrefix+".description");
String pictureUrl = this.getIntent().getStringExtra(extraPrefix+".pictureUrl");
String appId;
Session session = AirFacebookExtension.context.getSession();
if ( session == null )
{
AirFacebookExtension.log("ERROR - AirFacebook is not initialized");
finish();
return null;
}
appId = session.getApplicationId();
// This constructor has been modified from the original SDK
FacebookDialog.ShareDialogBuilder dialogBuilder = new FacebookDialog.ShareDialogBuilder( this );
if(link!=null) dialogBuilder.setLink(link);
if(name!=null) dialogBuilder.setName(name);
if(caption!=null) dialogBuilder.setCaption(caption);
if(description!=null) dialogBuilder.setDescription(description);
if(pictureUrl!=null) dialogBuilder.setPicture(pictureUrl);
try{
return dialogBuilder.build().present();
} catch(Exception e) {
if(BuildConfig.DEBUG) e.printStackTrace();
AirFacebookExtension.context.dispatchStatusEventAsync(callback, AirFacebookError.makeJsonError(e));
finish();
return null;
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
dialogHelper.onActivityResult(requestCode, resultCode, data);
}
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
dialogHelper.onSaveInstanceState(savedInstanceState);
}
@Override
public void onComplete(PendingCall pendingCall, Bundle data) {
AirFacebookExtension.context.dispatchStatusEventAsync(callback, "{ \"success\": \"true\" }" );
finish();
}
@Override
public void onError(PendingCall pendingCall, Exception error, Bundle data) {
if(BuildConfig.DEBUG) error.printStackTrace();
AirFacebookExtension.context.dispatchStatusEventAsync(callback, AirFacebookError.makeJsonError(error));
finish();
}
}