package com.pinthecloud.athere.fragment;
import java.util.ArrayList;
import java.util.Arrays;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import com.facebook.AppEventsLogger;
import com.facebook.Session;
import com.facebook.SessionState;
import com.facebook.UiLifecycleHelper;
import com.facebook.model.GraphUser;
import com.facebook.widget.FacebookDialog;
import com.facebook.widget.LoginButton;
import com.pinthecloud.athere.AhGlobalVariable;
import com.pinthecloud.athere.R;
import com.pinthecloud.athere.activity.BasicProfileActivity;
import com.pinthecloud.athere.adapter.GuidePagerAdapter;
import com.pinthecloud.athere.helper.PreferenceHelper;
import com.viewpagerindicator.CirclePageIndicator;
public class GuideFragment extends AhFragment{
private ViewPager mPager;
private CirclePageIndicator indicator;
private LoginButton loginButton;
private UiLifecycleHelper uiHelper;
private Session.StatusCallback callback = new Session.StatusCallback() {
@Override
public void call(Session session, SessionState state, Exception exception) {
onSessionStateChange(session, state, exception);
}
};
private FacebookDialog.Callback dialogCallback = new FacebookDialog.Callback() {
@Override
public void onError(FacebookDialog.PendingCall pendingCall, Exception error, Bundle data) {
}
@Override
public void onComplete(FacebookDialog.PendingCall pendingCall, Bundle data) {
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
uiHelper = new UiLifecycleHelper(activity, callback);
uiHelper.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
View view = inflater.inflate(R.layout.fragment_guide, container, false);
findComponent(view);
setViewPager();
setLoginButton();
return view;
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
uiHelper.onSaveInstanceState(outState);
}
@Override
public void onResume() {
super.onResume();
Session session = Session.getActiveSession();
if (session != null &&
(session.isOpened() || session.isClosed()) ) {
onSessionStateChange(session, session.getState(), null);
}
uiHelper.onResume();
AppEventsLogger.activateApp(context);
}
@Override
public void onPause() {
super.onPause();
uiHelper.onPause();
AppEventsLogger.deactivateApp(context);
}
@Override
public void onDestroy() {
super.onDestroy();
uiHelper.onDestroy();
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
uiHelper.onActivityResult(requestCode, resultCode, data, dialogCallback);
}
private void findComponent(View view){
mPager = (ViewPager)view.findViewById(R.id.guide_frag_viewpager);
indicator = (CirclePageIndicator)view.findViewById(R.id.guide_frag_indicator);
loginButton = (LoginButton)view.findViewById(R.id.guide_frag_login_button);
}
private void setViewPager(){
mPager.setAdapter(new GuidePagerAdapter(getFragmentManager()));
indicator.setViewPager(mPager);
}
private void setLoginButton(){
loginButton.setBackgroundResource(R.drawable.guide_login_btn);
loginButton.setCompoundDrawablesWithIntrinsicBounds(0,0,0,0);
loginButton.setReadPermissions(Arrays.asList("user_birthday"));
loginButton.setUserInfoChangedCallback(new LoginButton.UserInfoChangedCallback() {
@Override
public void onUserInfoFetched(GraphUser user) {
Session session = Session.getActiveSession();
if (session != null && session.isOpened() || user != null) {
login(session, user);
}
}
});
}
private void login(Session session, GraphUser user){
String birthday = user.getBirthday();
if (birthday == null) {
Toast.makeText(context, getResources().getString(R.string.birthday_access_message)
, Toast.LENGTH_LONG).show();
Session.NewPermissionsRequest newPermissionsRequest =
new Session.NewPermissionsRequest(activity, Arrays.asList("user_birthday"));
session.requestNewReadPermissions(newPermissionsRequest);
session.close();
return;
}
String birthYear = birthday.substring(6, birthday.length());
String name = user.getFirstName();
String gender = (String)user.getProperty("gender");
boolean isMale = true;
if(!gender.equals("male")){
isMale = false;
}
userHelper.setMyAhId(user.getId())
.setMyNickName(name)
.setMyMale(isMale)
.setMyBirthYear(Integer.parseInt(birthYear));
setSuperUser(user);
Intent intent = new Intent(context, BasicProfileActivity.class);
startActivity(intent);
activity.finish();
}
private void setSuperUser(GraphUser user){
ArrayList<String> arr = new ArrayList<String>();
arr.add("1482905955291892"); // Pin the Cloud
arr.add("643223775792443"); // Hongkun
arr.add("834963903211098"); // Seungmin
arr.add("766458060085007"); // Chaesoo
arr.add("699691573453752"); // Hwajeong
if (arr.contains(user.getId())) {
Toast.makeText(activity, "Super User Activated!", Toast.LENGTH_LONG)
.show();
PreferenceHelper.getInstance().putBoolean(AhGlobalVariable.SUPER_USER_KEY, true);
}
}
private void onSessionStateChange(Session session, SessionState state, Exception exception) {
// Do nothing
}
}