steroid-team/app

View on GitHub
app/src/main/java/com/github/steroidteam/todolist/view/dialog/AuthDialogFragment.java

Summary

Maintainability
A
1 hr
Test Coverage
A
96%
package com.github.steroidteam.todolist.view.dialog;

import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.EditText;
import androidx.fragment.app.DialogFragment;
import com.github.steroidteam.todolist.R;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;

public class AuthDialogFragment extends DialogFragment {

    private final String DIALOG_TITLE = "Please, you need to re-authenticate!";
    private AuthDialogListener listener;

    public AuthDialogFragment() {
        super();
    }

    public AuthDialogFragment newInstance(AuthDialogListener listener) {

        this.listener = listener;

        return this;
    }

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {

        LayoutInflater inflater = this.getLayoutInflater();
        View dialogLayout = inflater.inflate(R.layout.auth_dialog, null);

        MaterialAlertDialogBuilder builder =
                new MaterialAlertDialogBuilder(getActivity())
                        .setTitle(DIALOG_TITLE)
                        .setPositiveButton(
                                R.string.confirm,
                                (DialogInterface dialog, int which) -> {
                                    EditText email =
                                            dialogLayout.findViewById(R.id.alert_dialog_email);
                                    String inputEmail = email.getText().toString();
                                    email.getText().clear();

                                    EditText pwd =
                                            dialogLayout.findViewById(R.id.alert_dialog_password);
                                    String inputPwd = pwd.getText().toString();
                                    pwd.getText().clear();

                                    listener.onPositiveClick(inputEmail, inputPwd);
                                    dialog.dismiss();
                                })
                        .setNegativeButton(
                                R.string.cancel, (dialog, whichButton) -> dialog.dismiss());

        builder.setView(dialogLayout);

        Dialog dialog = builder.show();

        dialog.setCanceledOnTouchOutside(false);
        dialog.getWindow().setGravity(Gravity.TOP);
        return dialog;
    }

    public interface AuthDialogListener {

        /**
         * Method to call when the user, click on the positive button and we want to return some
         * inputs.
         */
        void onPositiveClick(String input1, String input2);
    }
}