Skip to content

Instantly share code, notes, and snippets.

@nabeelnazir163
Created August 24, 2017 08:35
Show Gist options
  • Save nabeelnazir163/241395d89919512722cc2b51d5f1bcee to your computer and use it in GitHub Desktop.
Save nabeelnazir163/241395d89919512722cc2b51d5f1bcee to your computer and use it in GitHub Desktop.
package com.example.nabeel.ask.ui.activities;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.design.widget.NavigationView;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.example.nabeel.ask.R;
import com.example.nabeel.ask.models.User;
import com.example.nabeel.ask.ui.fragment.homeFragment;
import com.example.nabeel.ask.utils.BaseActivity;
import com.example.nabeel.ask.utils.FirebaseUtils;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.ValueEventListener;
public class navigation extends BaseActivity
implements NavigationView.OnNavigationItemSelectedListener {
private FirebaseAuth.AuthStateListener mAuthStateListener;
private ImageView mDisplayImageView;
private TextView mNameTextView;
private TextView mEmailTextView;
private ValueEventListener mUserValueEventListener;
private DatabaseReference mUserRef;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
mAuthStateListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
if (firebaseAuth.getCurrentUser() == null) {
startActivity(new Intent(navigation.this, signin.class));
}
}
};
init();
getSupportFragmentManager().beginTransaction().replace(R.id.container, new homeFragment())
.commit();
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.setDrawerListener(toggle);
toggle.syncState();
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
View navHeaderView = navigationView.getHeaderView(0);
initNavHeader(navHeaderView);
}
private void init() {
if (mFirebaseUser != null) {
mUserRef = FirebaseUtils.getUserRef(mFirebaseUser.getEmail().replace(".", ","));
}
}
private void initNavHeader(View view) {
mDisplayImageView = (ImageView) view.findViewById(R.id.imageView_display);
mNameTextView = (TextView) view.findViewById(R.id.textview_name);
mEmailTextView = (TextView) view.findViewById(R.id.textView_email);
mUserValueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.getValue() != null) {
User users = dataSnapshot.getValue(User.class);
Glide.with(navigation.this)
.load(users.getPhotoUrl())
.into(mDisplayImageView);
mNameTextView.setText(users.getUser());
mEmailTextView.setText(users.getEmail());
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
};
}
@Override
public void onBackPressed() {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.navigation, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
// Handle kunavigation view item clicks here.
int id = item.getItemId();
if (id == R.id.nav_camera) {
// Handle the camera action
} else if (id == R.id.nav_gallery) {
} else if (id == R.id.nav_slideshow) {
} else if (id == R.id.nav_manage) {
} else if (id == R.id.nav_share) {
} else if (id == R.id.nav_send) {
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
@Override
protected void onStart() {
super.onStart();
mAuth.addAuthStateListener(mAuthStateListener);
if (mUserRef != null) {
mUserRef.addValueEventListener(mUserValueEventListener);
}
}
@Override
protected void onStop() {
super.onStop();
if (mAuthStateListener != null)
mAuth.removeAuthStateListener(mAuthStateListener);
if (mUserRef != null)
mUserRef.removeEventListener(mUserValueEventListener);
}
}
package com.example.nabeel.ask.ui.activities;
import com.example.nabeel.ask.R;
import com.example.nabeel.ask.loginas;
import com.example.nabeel.ask.models.User;
import com.example.nabeel.ask.signup;
import com.example.nabeel.ask.utils.BaseActivity;
import com.example.nabeel.ask.utils.FirebaseUtils;
import com.facebook.AccessToken;
import com.facebook.AccessTokenTracker;
import com.facebook.CallbackManager;
import com.facebook.FacebookCallback;
import com.facebook.FacebookException;
import com.facebook.FacebookSdk;
import com.facebook.Profile;
import com.facebook.ProfileTracker;
import com.facebook.login.LoginResult;
import com.facebook.login.widget.LoginButton;
import com.google.android.gms.auth.api.Auth;
import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
import com.google.android.gms.auth.api.signin.GoogleSignInResult;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.SignInButton;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.common.api.ResultCallback;
import com.google.android.gms.common.api.Status;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthCredential;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.GoogleAuthProvider;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
public class signin extends BaseActivity implements View.OnClickListener, GoogleApiClient.OnConnectionFailedListener {
//protected FirebaseUser mFirebaseUser;
// private LinearLayout Prof_Section;
private LoginButton loginButton;
private CallbackManager callbackManager;
private AccessTokenTracker accessTokenTracker;
private ProfileTracker profileTracker;
// private Button SignOut;
//protected FirebaseAuth mAuth;
// private TextView Name , Email;
private SignInButton SignIn;
private static final int REQ_CODE = 9001;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getApplicationContext());
setContentView(R.layout.activity_signin);
// Prof_Section = (LinearLayout) findViewById(R.id.prof_section);
// SignOut = (Button) findViewById(R.id.bn_logout);
// Name = (TextView) findViewById(R.id.name);
// Email = (TextView) findViewById(R.id.email);
SignIn = (SignInButton) findViewById(R.id.bn_login);
SignIn.setSize(SignInButton.SIZE_ICON_ONLY);
SignIn.setOnClickListener(this);
// SignOut.setOnClickListener(this);
// Prof_Section.setVisibility(View.GONE);
loginButton = (LoginButton) findViewById(R.id.login_button);
callbackManager = CallbackManager.Factory.create();
accessTokenTracker = new AccessTokenTracker() {
@Override
protected void onCurrentAccessTokenChanged(AccessToken oldToken, AccessToken currentToken) {
}
};
profileTracker = new ProfileTracker() {
@Override
protected void onCurrentProfileChanged(Profile oldProfile, Profile newProfile) {
// nextActivity(newProfile);
}
};
accessTokenTracker.startTracking();
profileTracker.startTracking();
FacebookCallback<LoginResult> callback = new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
Profile profile1 = Profile.getCurrentProfile();
// nextActivity(profile1);
Toast.makeText(getApplicationContext() , " Logging in " , Toast.LENGTH_SHORT).show();
/* i = new Intent(signin.this, MainActivity.class);
startActivity(i); */
}
@Override
public void onCancel() {
}
@Override
public void onError(FacebookException error) {
}
};
loginButton.setReadPermissions("user_friends");
loginButton.registerCallback(callbackManager , callback);
TextView tv_su = (TextView) findViewById(R.id.signup);
tv_su.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(signin.this, signup.class);
startActivity(i);
}
});
TextView tv_si = (TextView) findViewById(R.id.login);
tv_si.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent si = new Intent(signin.this, loginas.class);
startActivity(si);
}
});
}
@Override
protected void onResume(){
super.onResume();
Profile profile1 = Profile.getCurrentProfile();
// nextActivity(profile1);
}
@Override
protected void onPause(){
super.onPause();
}
protected void onStop(){
super.onStop();
accessTokenTracker.stopTracking();
profileTracker.startTracking();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == Activity.RESULT_OK) {
if (requestCode == REQ_CODE) {
GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
handleresult(result);
} else {
callbackManager.onActivityResult(requestCode, resultCode, data);
}
}
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.bn_login:
signIn();
break;
}
}
@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
}
private void signIn(){
Intent intent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
startActivityForResult(intent,REQ_CODE);
}
private void signOut(){
mAuth.signOut();
Auth.GoogleSignInApi.signOut(mGoogleApiClient).setResultCallback(new ResultCallback<Status>() {
@Override
public void onResult(@NonNull Status status) {
//updateUI(false);
}
});
}
private void handleresult(GoogleSignInResult result){
if(result.isSuccess()){
GoogleSignInAccount account = result.getSignInAccount();
firebaseAuthWithGoogle(account);
}
}
private void firebaseAuthWithGoogle(final GoogleSignInAccount account) {
AuthCredential credential = GoogleAuthProvider.getCredential(account.getIdToken(), null);
mAuth.signInWithCredential(credential)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
//Let's create the models quick(I know! it's weird time in this tutorial
//To be building it
User user = new User();
String photoUrl = null;
if (account.getPhotoUrl() != null) {
user.setPhotoUrl(account.getPhotoUrl().toString());
}
user.setEmail(account.getEmail());
user.setUser(account.getDisplayName());
user.setUid(mAuth.getCurrentUser().getUid());
FirebaseUtils.getUserRef(account.getEmail().replace(".", ","))
.setValue(user, new DatabaseReference.CompletionListener() {
@Override
public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) {
mFirebaseUser = mAuth.getCurrentUser();
Intent sendData = new Intent(signin.this , navigation.class);
startActivity(sendData);
//finish();
}
});
} else {
// dismissProgressDialog();
}
}
});
}
private void updateUI(boolean isLogin){
if(isLogin){
// Prof_Section.setVisibility(View.VISIBLE);
SignIn.setVisibility(View.GONE);
}
else{
// Prof_Section.setVisibility(View.GONE);
SignIn.setVisibility(View.VISIBLE);
}
}
}
package com.example.nabeel.ask;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Window;
import com.example.nabeel.ask.ui.activities.navigation;
import com.example.nabeel.ask.ui.activities.signin;
public class splash extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
final int welcomeScreenDisplay = 2000;
/** create a thread to show splash up to splash time */
Thread welcomeThread = new Thread() {
int wait = 0;
@Override
public void run() {
try {
sleep(1000);
Intent i = new Intent(getApplicationContext(),navigation.class);
startActivity(i);
finish();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
welcomeThread.start();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment