package com.lesgens.blindr; import java.util.List; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.graphics.Typeface; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.Window; import android.widget.TextView; import com.facebook.Session; import com.facebook.SessionState; import com.facebook.UiLifecycleHelper; import com.facebook.widget.LoginButton; import com.google.android.gms.common.api.GoogleApiClient; import com.lesgens.blindr.controllers.Controller; import com.lesgens.blindr.controllers.PreferencesController; import com.lesgens.blindr.db.DatabaseHelper; import com.lesgens.blindr.listeners.UserAuthenticatedListener; import com.lesgens.blindr.network.Server; import com.lesgens.blindr.views.CustomYesNoDialog; import com.todddavies.components.progressbar.ProgressWheel; public class SplashscreenActivity extends Activity implements UserAuthenticatedListener { private GoogleApiClient mGoogleApiClient; private static final String[] PERMISSIONS = {"public_profile", "user_photos"}; private boolean mConnected = false; private UiLifecycleHelper uiHelper; private Session.StatusCallback callback = new Session.StatusCallback() { public void call(Session session, SessionState state, Exception exception) { onSessionStateChange(session, state, exception); } }; public static void show(Context context){ Intent i = new Intent(context, SplashscreenActivity.class); context.startActivity(i); } private void onSessionStateChange(Session session, SessionState state, Exception exception) { Log.i("SplashscreenActivity", "onSessionStateChange"); Controller.getInstance().setSession(session); if(state.isOpened() && !mConnected){ mConnected = true; session.refreshPermissions(); List<String> permissions = session.getPermissions(); Log.i("FACEBOOK_CONNECTION", "Logged in..." + permissions.toString()); findViewById(R.id.authButton).setVisibility(View.GONE); findViewById(R.id.progressBar).setVisibility(View.VISIBLE); ((ProgressWheel) findViewById(R.id.progressBar)).spin(); Server.connect(session.getAccessToken()); } else if(state.isClosed()) { mConnected = false; Log.i("FACEBOOK_CONNECTION", "Logged out..."); } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Controller.getInstance().setDimensionAvatar(this); //Remove title bar this.requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.splashscreen); DatabaseHelper.init(this); TextView tv = (TextView) findViewById(R.id.splash_text); Typeface tf = Typeface.createFromAsset(getAssets(), "fonts/Raleway_Thin.otf"); tv.setTypeface(tf); if(!isNetworkAvailable()){ CustomYesNoDialog dialog = new CustomYesNoDialog(this){ @Override public void onPositiveClick() { super.onPositiveClick(); finish(); } }; dialog.show(); dialog.transformAsOkDialog(); dialog.setDialogText(R.string.no_network); } Server.addUserAuthenticatedListener(this); LoginButton authButton = (LoginButton)findViewById(R.id.authButton); authButton.setReadPermissions(PERMISSIONS); uiHelper = new UiLifecycleHelper(this, callback); uiHelper.onCreate(savedInstanceState); } public void onDestroy(){ super.onDestroy(); uiHelper.onDestroy(); if(mGoogleApiClient != null){ if(mGoogleApiClient.isConnected() || mGoogleApiClient.isConnecting()){ mGoogleApiClient.disconnect(); } } Server.removeUserAuthenticatedListener(this); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); Log.i("SplashscreenActivity", "onActivityResult"); uiHelper.onActivityResult(requestCode, resultCode, data); } @Override protected void onPause() { super.onPause(); Log.i("SplashscreenActivity", "onPause"); uiHelper.onPause(); } @Override protected void onResume() { super.onResume(); Log.i("SplashscreenActivity", "onResume"); Session session = Session.getActiveSession(); if (session != null && (session.isOpened() || session.isClosed()) ) { onSessionStateChange(session, session.getState(), null); } uiHelper.onResume(); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); Log.i("SplashscreenActivity", "onSaveInstanceState"); uiHelper.onSaveInstanceState(outState); } @Override public void onUserAuthenticated() { Log.i("SplashscreenActivity", "onUserAuthenticated"); if(PreferencesController.isFirstUse(this)){ goToFirstTimeExperience(); } else{ goToChooseRoom(); } } private boolean isNetworkAvailable() { ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo(); return activeNetworkInfo != null && activeNetworkInfo.isConnected(); } public void goToFirstTimeExperience(){ Intent i = new Intent(this, FirstTimeExperienceActivity.class); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); startActivity(i); finish(); } public void goToChooseRoom(){ Intent i = new Intent(SplashscreenActivity.this, ChooseRoomActivity.class); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); startActivity(i); finish(); } @Override public void onUserNetworkErrorAuthentication() { CustomYesNoDialog dialog = new CustomYesNoDialog(this){ @Override public void onPositiveClick() { super.onPositiveClick(); finish(); } }; dialog.show(); dialog.transformAsOkDialog(); dialog.setDialogText(R.string.no_network); } @Override public void onUserServerErrorAuthentication() { CustomYesNoDialog dialog = new CustomYesNoDialog(this){ @Override public void onPositiveClick() { super.onPositiveClick(); finish(); } }; dialog.show(); dialog.transformAsOkDialog(); dialog.setDialogText(R.string.server_error); } }