Untitled
unknown
java
4 years ago
5.0 kB
5
Indexable
package com.twainarc.minibankpro.view.fragment; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import androidx.fragment.app.DialogFragment; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentTransaction; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; import com.twainarc.minibankpro.databinding.FragmentRegisterBinding; import com.twainarc.minibankpro.dialog.ErrorDialog; import com.twainarc.minibankpro.dialog.ProgressDialog; import com.twainarc.minibankpro.dialog.SuccessDialog; import com.twainarc.minibankpro.listener.FragmentListener; import com.twainarc.minibankpro.model.ApiResponse; import com.twainarc.minibankpro.model.Content; import com.twainarc.minibankpro.util.Constant; import com.twainarc.minibankpro.util.Validation; import com.twainarc.minibankpro.viewmodel.LoginViewModel; public class RegisterFragment extends Fragment implements SuccessDialog.SuccessDialogListener { private FragmentRegisterBinding binding; private DialogFragment dialog; private FragmentListener listener; public RegisterFragment(FragmentListener listener) { this.listener = (FragmentListener) listener; } public static RegisterFragment newInstance(FragmentListener listener) { RegisterFragment fragment = new RegisterFragment(listener); return fragment; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); dialog = new DialogFragment(); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { binding = FragmentRegisterBinding.inflate(inflater); init(); return binding.getRoot(); } private void init() { binding.nextIV.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String userName = binding.userNameET.getText().toString().trim(); String number = binding.phoneNumberET.getText().toString().trim(); String playerId = binding.playerIdET.getText().toString().trim(); if (!userName.isEmpty() && Validation.getInstance().isValidNumber(number) && Validation.getInstance().isValidPlayerId(playerId)) { showDialog(Constant.PROGRESS, ""); LoginViewModel viewModel = new ViewModelProvider(RegisterFragment.this).get(LoginViewModel.class); viewModel.registerUser(number, userName, playerId).observe(getViewLifecycleOwner(), new Observer<ApiResponse>() { @Override public void onChanged(ApiResponse apiResponse) { if (apiResponse.getStatus().equals(Constant.STATUS_SUCCESS)) { RegisterFragment.this.dialog.dismiss(); showDialog(Constant.SUCCESS, ""); } else { RegisterFragment.this.dialog.dismiss(); showDialog(Constant.ERROR, apiResponse.getFailReason()); } } }); } else { if (userName.isEmpty()) { binding.userNameET.setError("Enter Name"); } if (!Validation.getInstance().isValidNumber(number)) { binding.phoneNumberET.setError("Enter Valid Number"); } if (!Validation.getInstance().isValidPlayerId(playerId)) { binding.playerIdET.setError("Enter Valid Player Id"); } } } }); } private void showDialog(int type, String failReason) { if (dialog.isVisible()) { return; } FragmentTransaction ft = requireActivity().getSupportFragmentManager().beginTransaction(); Fragment prevFragment = requireActivity().getSupportFragmentManager().findFragmentByTag("dialog"); if (prevFragment != null) { ft.remove(prevFragment); } ft.addToBackStack(null); if (type == Constant.PROGRESS) { dialog = ProgressDialog.newInstance(); } else if (type == Constant.SUCCESS) { dialog = SuccessDialog.newInstance(new Content("Registration Complete", "New account created with your given phone number", "Login", 2), this); } else { dialog = ErrorDialog.newInstance(new Content("Registration Failed", failReason, "Continue", 1)); } dialog.show(ft, "dialog"); } @Override public void onButtonClick() { listener.communicate(""); } }
Editor is loading...