Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.semesta.suryakami;
- import android.app.AlertDialog;
- import android.app.Dialog;
- import android.app.ProgressDialog;
- import android.content.DialogInterface;
- import android.content.Intent;
- import android.graphics.Color;
- import android.graphics.drawable.ColorDrawable;
- import android.os.Bundle;
- import android.text.InputType;
- import android.text.TextUtils;
- import android.view.View;
- import android.widget.Button;
- import android.widget.EditText;
- import android.widget.ImageButton;
- import android.widget.ImageView;
- import android.widget.LinearLayout;
- import android.widget.TextView;
- import android.widget.Toast;
- import androidx.annotation.NonNull;
- import androidx.appcompat.widget.Toolbar;
- import androidx.appcompat.app.AppCompatActivity;
- import com.google.android.gms.tasks.OnCompleteListener;
- import com.google.android.gms.tasks.OnFailureListener;
- import com.google.android.gms.tasks.OnSuccessListener;
- import com.google.android.gms.tasks.Task;
- import com.google.android.material.textfield.TextInputEditText;
- import com.google.firebase.auth.AuthResult;
- import com.google.firebase.auth.FirebaseAuth;
- import com.google.firebase.database.DatabaseReference;
- import com.google.firebase.database.FirebaseDatabase;
- import com.google.firebase.iid.FirebaseInstanceId;
- import java.util.Objects;
- public class SigninActivity extends AppCompatActivity {
- ImageButton backPress;
- private TextInputEditText mSigninEmail, mSigninPassword;
- private Dialog epicDialog;
- private ProgressDialog mLoginProgress;
- private FirebaseAuth mAuth;
- private DatabaseReference mUserDatabase;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_signin);
- backPress = findViewById(R.id.backLogin);
- mAuth = FirebaseAuth.getInstance();
- mLoginProgress = new ProgressDialog( this );
- mUserDatabase = FirebaseDatabase.getInstance().getReference().child( "Users" );
- epicDialog = new Dialog(this);
- TextView mRecoverPassword = findViewById(R.id.recoverPassword);
- mSigninEmail = findViewById( R.id.signinEmail);
- mSigninPassword = findViewById( R.id.signinPassword);
- Button mSignin_btn = findViewById(R.id.buttonSignin);
- mRecoverPassword.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- showRecoverPasswordDialog();
- }
- });
- mSignin_btn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if (validateEmailPassword()) {
- return;
- }
- ShowReminderPopup();
- }
- });
- backPress.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- onBackPressed();
- }
- });
- }
- private void showRecoverPasswordDialog() {
- //AlertDialog
- AlertDialog.Builder builder = new AlertDialog.Builder(this);
- builder.setTitle("Memulihkan Password");
- //set layout linear layout
- LinearLayout linearLayout = new LinearLayout(this);
- //views to set in dialog
- final EditText emailText = new EditText(this);
- emailText.setHint("Email Anda");
- emailText.setInputType(InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS);
- emailText.setMinEms(16);
- linearLayout.addView(emailText);
- linearLayout.setPadding(10,10,10,10);
- builder.setView(linearLayout);
- //buttons recover
- builder.setPositiveButton("Memulihkan", new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialogInterface, int i) {
- //input email
- String email = emailText.getText().toString().trim();
- beginRecovery(email);
- }
- });
- //buttons cancel
- builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialogInterface, int i) {
- dialogInterface.dismiss();
- }
- });
- //show dialog
- builder.create().show();
- }
- private void beginRecovery(String email) {
- mLoginProgress.setMessage("Mengirim Email...");
- mLoginProgress.show();
- mAuth.sendPasswordResetEmail(email).addOnCompleteListener(new OnCompleteListener<Void>() {
- @Override
- public void onComplete(@NonNull Task<Void> task) {
- mLoginProgress.dismiss();
- if (task.isSuccessful()) {
- Toast.makeText(SigninActivity.this, "Email Terkirim", Toast.LENGTH_SHORT).show();
- } else {
- Toast.makeText(SigninActivity.this, "Gagal...", Toast.LENGTH_SHORT).show();
- }
- }
- }).addOnFailureListener(new OnFailureListener() {
- @Override
- public void onFailure(@NonNull Exception e) {
- mLoginProgress.dismiss();
- //get and show proper error message
- Toast.makeText(SigninActivity.this, ""+e.getMessage(), Toast.LENGTH_SHORT).show();
- }
- });
- }
- private boolean validateEmailPassword() {
- String emailInput = (Objects.requireNonNull(mSigninEmail.getText()).toString().trim());
- String passwordInput = (Objects.requireNonNull(mSigninPassword.getText()).toString().trim());
- if (emailInput.isEmpty() | passwordInput.isEmpty() ) {
- Toast.makeText(this, "Masukkan Email dan Password Anda", Toast.LENGTH_SHORT).show();
- return true;
- } else {
- mSigninEmail.setError(null);
- return false;
- }
- }
- private void ShowReminderPopup() {
- epicDialog.setContentView(R.layout.activity_popup_reminder);
- ImageView closePopup = epicDialog.findViewById(R.id.closePopupImg);
- Button acceptBtn = epicDialog.findViewById(R.id.btnAccept);
- closePopup.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- epicDialog.dismiss();
- }
- });
- acceptBtn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- String email = Objects.requireNonNull(mSigninEmail.getText()).toString();
- String password = Objects.requireNonNull(mSigninPassword.getText()).toString();
- if (!TextUtils.isEmpty( email ) || !TextUtils.isEmpty( password )){
- mLoginProgress.setTitle( "Logging In" );
- mLoginProgress.setMessage( "Please Wait While We Check Your Credentials." );
- mLoginProgress.setCanceledOnTouchOutside( false );
- mLoginProgress.show();
- loginUser(email,password);
- epicDialog.dismiss();
- }
- }
- });
- Objects.requireNonNull(epicDialog.getWindow()).setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
- epicDialog.show();
- }
- private void loginUser(String email, String password) {
- mAuth.signInWithEmailAndPassword( email, password ).addOnCompleteListener( new OnCompleteListener<AuthResult>() {
- @Override
- public void onComplete(@NonNull Task<AuthResult> task) {
- if (task.isSuccessful()){
- if (Objects.requireNonNull(mAuth.getCurrentUser()).isEmailVerified()) {
- mLoginProgress.dismiss();
- String current_user_id = Objects.requireNonNull(mAuth.getCurrentUser()).getUid();
- String deviceToken = FirebaseInstanceId.getInstance().getToken();
- mUserDatabase.child(current_user_id).child("device_token").setValue(deviceToken).addOnSuccessListener(new OnSuccessListener<Void>() {
- @Override
- public void onSuccess(Void aVoid) {
- Intent mainIntent = new Intent(SigninActivity.this, MainActivity.class);
- mainIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
- startActivity(mainIntent);
- finish();
- }
- });
- } else {
- mLoginProgress.hide();
- Toast.makeText(SigninActivity.this, "Silahkan Verifikasi Alamat Email Anda.", Toast.LENGTH_LONG).show();
- }
- } else {
- mLoginProgress.hide();
- Toast.makeText(SigninActivity.this, "Tidak Bisa Masuk, Silahkan Cek Email dan Password Anda.", Toast.LENGTH_LONG).show();
- }
- }
- } );
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement