From 868581a93792d9475dd0796487ccc5b42e1fb9a2 Mon Sep 17 00:00:00 2001 From: Deep Date: Wed, 28 Oct 2020 00:16:12 +0530 Subject: [PATCH 1/2] I tried to my best to do it but i am getting an error as on pressing change password it goes to home screen --- .../example/javaminiproject/api/LoginAPI.java | 67 +++++++++++++++++++ .../ui/slideshow/Confirmation_dialogue.java | 35 ++++++++-- .../ui/slideshow/SlideshowFragment.java | 60 +++++++++++++++-- .../main/res/layout/fragment_slideshow.xml | 30 ++++++++- .../src/main/res/layout/password_dialogue.xml | 12 ++++ 5 files changed, 193 insertions(+), 11 deletions(-) diff --git a/AndroidApp/app/src/main/java/akshatchhaya/example/javaminiproject/api/LoginAPI.java b/AndroidApp/app/src/main/java/akshatchhaya/example/javaminiproject/api/LoginAPI.java index b0a77fc..188ae5d 100644 --- a/AndroidApp/app/src/main/java/akshatchhaya/example/javaminiproject/api/LoginAPI.java +++ b/AndroidApp/app/src/main/java/akshatchhaya/example/javaminiproject/api/LoginAPI.java @@ -106,6 +106,73 @@ public Map getHeaders() throws AuthFailureError { } } + public void confirmPassword(final String password){ + String passwordUrl=url+"/login/confirmPassword"; + getToken(); + StringRequest cnfPassRequest=new StringRequest(Request.Method.POST, passwordUrl, new Response.Listener() { + @Override + public void onResponse(String response) { + if(response!=null){ + mListener.onSuccess(); + } + } + }, new Response.ErrorListener() { + @Override + public void onErrorResponse(VolleyError error) { + Log.e(TAG, "onErrorResponse: error"+error ); + mListener.onFailure(403); + } + }){ + @Override + public Map getHeaders() throws AuthFailureError { + Map headers=new HashMap<>(); + headers.put("authorization","Bearer "+authToken); + return headers; + } + + @Override + protected Map getParams() throws AuthFailureError { + Map params=new HashMap<>(); + params.put("password",password); + return params; + } + }; + + mRequestQueue.add(cnfPassRequest); + } + + public void resetPassword(final String newPassword){ + String passwordUrl=url+"/login/changePassword"; + getToken(); + StringRequest resetPassword=new StringRequest(Request.Method.POST, passwordUrl, new Response.Listener() { + @Override + public void onResponse(String response) { + mListener.onSuccess(); + } + }, new Response.ErrorListener() { + @Override + public void onErrorResponse(VolleyError error) { + Log.e(TAG, "onErrorResponse: error"+error ); + mListener.onFailure(403); + } + }){ + @Override + public Map getHeaders() throws AuthFailureError { + Map headers=new HashMap<>(); + headers.put("authorization","Bearer "+authToken); + return headers; + } + @Override + protected Map getParams() throws AuthFailureError { + Map params=new HashMap<>(); + params.put("newPassword",newPassword); + return params; + } + }; + + mRequestQueue.add(resetPassword); + } + } diff --git a/AndroidApp/app/src/main/java/akshatchhaya/example/javaminiproject/ui/slideshow/Confirmation_dialogue.java b/AndroidApp/app/src/main/java/akshatchhaya/example/javaminiproject/ui/slideshow/Confirmation_dialogue.java index fda1e54..96b8a49 100644 --- a/AndroidApp/app/src/main/java/akshatchhaya/example/javaminiproject/ui/slideshow/Confirmation_dialogue.java +++ b/AndroidApp/app/src/main/java/akshatchhaya/example/javaminiproject/ui/slideshow/Confirmation_dialogue.java @@ -2,28 +2,41 @@ import android.app.AlertDialog; import android.app.Dialog; +import android.content.Context; import android.content.DialogInterface; +import android.content.Intent; import android.os.Bundle; +import android.util.Log; import android.view.LayoutInflater; +import android.view.TextureView; import android.view.View; import android.widget.Button; import android.widget.EditText; +import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatDialogFragment; +import com.google.android.material.snackbar.Snackbar; + +import akshatchhaya.example.javaminiproject.MainActivity; import akshatchhaya.example.javaminiproject.R; +import akshatchhaya.example.javaminiproject.api.LoginAPI; +import akshatchhaya.example.javaminiproject.api.OnResponseListener; public class Confirmation_dialogue extends AppCompatDialogFragment { - private EditText password_for_confirmation; - private Button confirmButton; + + final String TAG="Confirm Password"; + private ExampleDialogListener listener; @NonNull @Override public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) { AlertDialog.Builder builder=new AlertDialog.Builder(getActivity()); LayoutInflater inflater=getActivity().getLayoutInflater(); - View view=inflater.inflate(R.layout.password_dialogue,null); + final View view=inflater.inflate(R.layout.password_dialogue,null); + + builder.setView(view).setTitle("Confirm your password to change the password").setNegativeButton("Cancel", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { @@ -32,10 +45,24 @@ public void onClick(DialogInterface dialog, int which) { }).setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { + final EditText password=view.findViewById(R.id.confirm_password_for_changing); + listener.applyTexts(password.getText().toString()); } }); - password_for_confirmation= view.findViewById(R.id.confirm_password_for_changing); return builder.create(); } + @Override + public void onAttach(Context context) { + super.onAttach(context); + try { + listener = (ExampleDialogListener) context; + } catch (ClassCastException e) { + throw new ClassCastException(context.toString() + + "must implement ExampleDialogListener"); + } + } + public interface ExampleDialogListener { + void applyTexts(String password); + } } diff --git a/AndroidApp/app/src/main/java/akshatchhaya/example/javaminiproject/ui/slideshow/SlideshowFragment.java b/AndroidApp/app/src/main/java/akshatchhaya/example/javaminiproject/ui/slideshow/SlideshowFragment.java index 43a1b78..20d0d3a 100644 --- a/AndroidApp/app/src/main/java/akshatchhaya/example/javaminiproject/ui/slideshow/SlideshowFragment.java +++ b/AndroidApp/app/src/main/java/akshatchhaya/example/javaminiproject/ui/slideshow/SlideshowFragment.java @@ -1,11 +1,14 @@ package akshatchhaya.example.javaminiproject.ui.slideshow; import android.app.AlertDialog; +import android.content.Intent; import android.os.Bundle; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; +import android.widget.EditText; import android.widget.TextView; import androidx.annotation.NonNull; @@ -15,21 +18,67 @@ import androidx.lifecycle.ViewModelProvider; +import com.google.android.material.snackbar.Snackbar; + +import akshatchhaya.example.javaminiproject.MainActivity; import akshatchhaya.example.javaminiproject.R; +import akshatchhaya.example.javaminiproject.api.LoginAPI; +import akshatchhaya.example.javaminiproject.api.OnResponseListener; -public class SlideshowFragment extends Fragment { +public class SlideshowFragment extends Fragment implements Confirmation_dialogue.ExampleDialogListener { private SlideshowViewModel slideshowViewModel; - + final String TAG="Reset Password"; + public String password_from_dialogue; public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { slideshowViewModel = new ViewModelProvider(this).get(SlideshowViewModel.class); View root = inflater.inflate(R.layout.fragment_slideshow, container, false); - Button button=(Button)root.findViewById(R.id.button_reset_password); + final Button button=(Button)root.findViewById(R.id.button_reset_password); + final Button button1=(Button)root.findViewById(R.id.button_reset_password_1); + final EditText new_Password1=root.findViewById(R.id.new_password); + final EditText new_Password2=root.findViewById(R.id.confirm_password); button.setOnClickListener(new View.OnClickListener() { @Override - public void onClick(View root){ + public void onClick(final View root){ openDialog(); + LoginAPI api = new LoginAPI(getActivity(), new OnResponseListener() { + @Override + public void onSuccess() { + button.setVisibility(View.INVISIBLE); + button1.setVisibility(View.VISIBLE); + new_Password1.setVisibility(View.VISIBLE); + new_Password1.setVisibility(View.VISIBLE); + } + @Override + public void onFailure(int statusCode) { + openDialog(); + } + }); + api.confirmPassword(password_from_dialogue); + } + }); + button1.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(final View root){ + final String s1=new_Password1.getText().toString(); + final String s2=new_Password2.getText().toString(); + if(s1==s2) { + LoginAPI api = new LoginAPI(getActivity(), new OnResponseListener() { + @Override + public void onSuccess() { + + } + + + @Override + public void onFailure(int statusCode) { + Snackbar.make(root, "Looks like login failed please retry or re check your credentials and try again!", Snackbar.LENGTH_INDEFINITE).show(); + Log.e(TAG, "onFailure: error" + statusCode); + } + }); + api.resetPassword(new_Password1.getText().toString()); + } } }); return root; @@ -39,4 +88,7 @@ public void openDialog(){ Confirmation_dialogue d1=new Confirmation_dialogue(); d1.show(getChildFragmentManager(),"Password Confirmation"); } + public void applyTexts(String password) { + password_from_dialogue=password; + } } \ No newline at end of file diff --git a/AndroidApp/app/src/main/res/layout/fragment_slideshow.xml b/AndroidApp/app/src/main/res/layout/fragment_slideshow.xml index 0d75c8a..967d301 100644 --- a/AndroidApp/app/src/main/res/layout/fragment_slideshow.xml +++ b/AndroidApp/app/src/main/res/layout/fragment_slideshow.xml @@ -62,10 +62,12 @@ android:ems="10" android:hint="@string/new_password" android:inputType="textPassword" + android:visibility="invisible" app:layout_constraintBottom_toTopOf="@+id/confirm_password" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.517" - app:layout_constraintStart_toStartOf="parent" /> + app:layout_constraintStart_toStartOf="parent" + tools:visibility="visible" /> + app:layout_constraintStart_toStartOf="parent" + tools:visibility="visible" />