Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package id.my.asmith.myapplication;
- import android.app.ProgressDialog;
- import android.content.DialogInterface;
- import android.content.Intent;
- import android.os.Bundle;
- import android.os.Handler;
- import android.support.annotation.NonNull;
- import android.support.v7.app.AlertDialog;
- import android.support.v7.app.AppCompatActivity;
- import android.text.TextUtils;
- import android.util.Log;
- import android.view.View;
- import android.view.inputmethod.EditorInfo;
- import android.widget.Button;
- import android.widget.EditText;
- import android.widget.RadioButton;
- import android.widget.Toast;
- import com.google.android.gms.tasks.OnCompleteListener;
- import com.google.android.gms.tasks.Task;
- import com.google.firebase.auth.AuthResult;
- import com.google.firebase.auth.FirebaseAuth;
- import com.google.firebase.auth.FirebaseUser;
- import com.google.firebase.database.DatabaseReference;
- import com.google.firebase.database.FirebaseDatabase;
- public class SingActivity extends AppCompatActivity {
- //Declaration
- private EditText mTxtEmail, mTxtPass;
- private Button mBtnGO, mBtnForgot, mBtnAnon;
- private ProgressDialog mProgressDialog;
- private FirebaseAuth mAuth;
- private DatabaseReference mDatabase;
- private FirebaseAuth.AuthStateListener mAuthStateListener;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_sing);
- //Initialization
- //Views
- mProgressDialog = new ProgressDialog(this);
- mAuth = FirebaseAuth.getInstance();
- mDatabase = FirebaseDatabase.getInstance().getReference();
- mTxtEmail = (EditText)findViewById(R.id.edEmail);
- mTxtPass = (EditText)findViewById(R.id.edPwd);
- mBtnGO = (Button)findViewById(R.id.btnGo);
- //Cek the user status
- mAuthStateListener = new FirebaseAuth.AuthStateListener() {
- //Versi lain dari Aunt Instance
- @Override
- public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
- FirebaseUser user = firebaseAuth.getCurrentUser();
- if (user != null) {
- // user has signed
- Log.d("Sing", "onAuthStateChanged:signed_in:" + user.getUid());
- startActivity(new Intent(SingActivity.this, MainActivity.class));
- finish();
- } else {
- // user has logout
- Log.d("Sing", "onAuthStateChanged:signed_out");
- }
- }
- };
- mBtnForgot = (Button) findViewById(R.id.btnForgot);
- mBtnForgot.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- //Showing AlertDialog after clicking Button forgot
- final AlertDialog.Builder alertDialogBuilder =
- new AlertDialog.Builder(SingActivity.this);
- alertDialogBuilder.setTitle("Enter your registered email address!");
- alertDialogBuilder.setIcon(R.mipmap.ic_launcher);
- //Showing EditText in alertDialog
- final EditText inPwd = new EditText(SingActivity.this);
- alertDialogBuilder.setView(inPwd, 60, 60, 60, 0);
- inPwd.setImeOptions(EditorInfo.IME_ACTION_DONE);
- inPwd.setSingleLine(true);
- // set positive button: Send
- alertDialogBuilder.setPositiveButton("Send",new DialogInterface.OnClickListener() {
- public void onClick(final DialogInterface dialog, int id) {
- // go to a new activity of the app
- // onClickEvent to reset the password
- // Get string type data from inPwd
- String email = inPwd.getText().toString().trim();
- if (TextUtils.isEmpty(email)) {
- Toast.makeText(getApplication(),
- "Enter your registered email address",
- Toast.LENGTH_SHORT).show();
- return;
- }
- // Displaying Progress Dialog
- mProgressDialog.show();
- mProgressDialog.setMessage("Sending request!");
- // Sending data to your registered email address
- mAuth.sendPasswordResetEmail(email)
- .addOnCompleteListener(new OnCompleteListener<Void>() {
- @Override
- public void onComplete(@NonNull Task<Void> task) {
- mProgressDialog.dismiss();
- if (task.isSuccessful()) {
- // give notification if instructions reset
- // password was send to your email
- Toast.makeText(SingActivity.this,
- "We have sent you instructions" +
- " to reset your password!",
- Toast.LENGTH_SHORT).show();
- int finishTime = 3; //10 secs
- Handler handler = new Handler();
- handler.postDelayed(new Runnable() {
- public void run() {
- dialog.cancel();
- }
- }, finishTime * 300);
- } else {
- // notify to user if system cant send
- // instructions to reset the password
- Toast.makeText(SingActivity.this,
- "Failed to send an email!",
- Toast.LENGTH_SHORT).show();
- }
- }
- });
- }
- });
- // set negative button: Cancel
- alertDialogBuilder.setNegativeButton("Cancel",new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog,int id) {
- // cancel the alert box and put a Toast to the user
- dialog.cancel();
- // notify to user hes press the cancel button
- Toast.makeText(getApplicationContext(), "Canceled",
- Toast.LENGTH_LONG).show();
- }
- });
- AlertDialog alertDialog = alertDialogBuilder.create();
- // show alert
- alertDialog.show();
- }
- });
- mBtnAnon = (Button) findViewById(R.id.btnAnon);
- mBtnAnon.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- mProgressDialog.show();
- mProgressDialog.setMessage("Please wait...");
- mAuth.signInAnonymously()
- .addOnCompleteListener(SingActivity.this, new OnCompleteListener<AuthResult>() {
- @Override
- public void onComplete(@NonNull Task<AuthResult> task) {
- Log.d("user", "signInAnonymously:onComplete:" + task.isSuccessful());
- mProgressDialog.dismiss();
- // If sign in fails, display a message to the user. If sign in succeeds
- // the auth state listener will be notified and logic to handle the
- // signed in user can be handled in the listener.
- if (!task.isSuccessful()) {
- Log.w("user", "signInAnonymously", task.getException());
- Toast.makeText(SingActivity.this, "Authentication failed.",
- Toast.LENGTH_SHORT).show();
- }
- }
- });
- }
- });
- }
- // Radio button
- public void onRadioButtonClicked(View view) {
- // Is the button now checked?
- boolean checked = ((RadioButton) view).isChecked();
- // Check which radio button was clicked
- switch(view.getId()) {
- case R.id.radio_singup:
- if (checked)
- // set button in singUp mode
- mBtnGO.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- Log.d("user", "signUp");
- if (!validateForm()) {
- return;
- }
- //getString from editText
- String email = mTxtEmail.getText().toString();
- final String password = mTxtPass.getText().toString();
- //Progress singUp
- mProgressDialog.show();
- mProgressDialog.setMessage("Please wait...");
- mAuth.createUserWithEmailAndPassword(email, password)
- .addOnCompleteListener(new OnCompleteListener<AuthResult>() {
- @Override
- public void onComplete(@NonNull Task<AuthResult> task) {
- Log.d("user", "createUser:onComplete:" +
- task.isSuccessful());
- mProgressDialog.dismiss();
- if (task.isSuccessful()) {
- onAuthSuccess(task.getResult().getUser());
- } else {
- // there was an error
- if (password.length() < 6) {
- mTxtPass.setError(getString(R.string.min_pwd));
- } else {
- Toast.makeText(SingActivity.this,
- "Oops! ada masalah dengan email anda," +
- " coba periksa kembali!!",
- Toast.LENGTH_LONG).show();
- }
- }
- }
- });
- }
- });
- // End of singUp task
- break;
- case R.id.radio_singin:
- if (checked)
- //SingIn Mode
- mBtnGO.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- Log.d("user", "signIn");
- if (!validateForm()) {
- return;
- }
- String email = mTxtEmail.getText().toString();
- final String password = mTxtPass.getText().toString();
- //Progress singIn
- mProgressDialog.show();
- mProgressDialog.setMessage("Please wait...");
- mAuth.signInWithEmailAndPassword(email, password)
- .addOnCompleteListener(SingActivity.this, new OnCompleteListener<AuthResult>() {
- @Override
- public void onComplete(@NonNull Task<AuthResult> task) {
- // If sign in fails, display a message to the user. If sign in succeeds
- // the auth state listener will be notified and logic to handle the
- // signed in user can be handled in the listener.
- mProgressDialog.dismiss();
- if (!task.isSuccessful()) {
- // there was an error
- if (password.length() < 6) {
- mTxtPass.setError(getString(R.string.min_pwd));
- } else {
- Toast.makeText(SingActivity.this,
- getString(R.string.mAuth_fail),
- Toast.LENGTH_LONG).show();
- }
- } else {
- Toast.makeText(SingActivity.this, "Welcome back " +
- mTxtEmail.getText().toString(),
- Toast.LENGTH_SHORT).show();
- startActivity(new Intent(SingActivity.this,
- MainActivity.class));
- finish();
- }
- }
- });
- }
- });
- //End of progress singIn
- break;
- default:
- break;
- }
- }
- @Override
- public void onStart() {
- super.onStart();
- mAuth.addAuthStateListener(mAuthStateListener);
- }
- @Override
- public void onStop() {
- super.onStop();
- if (mAuthStateListener != null) {
- mAuth.removeAuthStateListener(mAuthStateListener);
- }
- }
- //If singUp was success email from database converted to username from this method and save it
- //on WriteNewUser task
- private void onAuthSuccess(FirebaseUser user) {
- String username = usernameFromEmail(user.getEmail());
- // Write new user
- writeNewUser(user.getUid(), username, user.getEmail());
- // Go to MainActivity
- startActivity(new Intent(SingActivity.this, MainActivity.class));
- finish();
- }
- //Get username from email
- private String usernameFromEmail(String email) {
- if (email.contains("@")) {
- return email.split("@")[0];
- } else {
- return email;
- }
- }
- private boolean validateForm() {
- boolean result = true;
- if (TextUtils.isEmpty(mTxtEmail.getText().toString())) {
- mTxtEmail.setError("Required");
- result = false;
- } else {
- mTxtEmail.setError(null);
- }
- if (TextUtils.isEmpty(mTxtPass.getText().toString())) {
- mTxtPass.setError("Required");
- result = false;
- } else {
- mTxtPass.setError(null);
- }
- return result;
- }
- // [START basic_write on Firebase Database]
- private void writeNewUser(String userId, String name, String email) {
- User user = new User(name, email);
- mDatabase.child("users").child(userId).setValue(user);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement