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..caf446c 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"; + public 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,23 @@ public void onClick(DialogInterface dialog, int which) { }).setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { + 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)getTargetFragment(); + } catch (ClassCastException e) { + Log.e(TAG,"Dakho onAttach"); + } + } + 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..e0a43c1 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() { + + } + @Override + public void onFailure(int statusCode) { + button.setVisibility(View.INVISIBLE); + button1.setVisibility(View.VISIBLE); + new_Password1.setVisibility(View.VISIBLE); + new_Password2.setVisibility(View.VISIBLE); + } + }); + 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() { + TextView t3=root.findViewById(R.id.textView3); + t3.setVisibility(View.VISIBLE); + t3.setText(s1); + } + @Override + public void onFailure(int statusCode) { + Log.e(TAG, "onFailure: error" + statusCode); + } + }); + api.resetPassword(new_Password1.getText().toString()); + } } }); return root; @@ -37,6 +86,12 @@ public void onClick(View root){ public void openDialog(){ Confirmation_dialogue d1=new Confirmation_dialogue(); - d1.show(getChildFragmentManager(),"Password Confirmation"); + d1.setTargetFragment(SlideshowFragment.this,1); + d1.show(getParentFragmentManager(),"Password Confirmation"); + } + + @Override + 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..5bb3cbb 100644 --- a/AndroidApp/app/src/main/res/layout/fragment_slideshow.xml +++ b/AndroidApp/app/src/main/res/layout/fragment_slideshow.xml @@ -18,28 +18,17 @@ android:id="@+id/textView2" android:layout_width="294dp" android:layout_height="71dp" + android:layout_marginTop="128dp" + android:layout_marginBottom="63dp" android:fontFamily="@font/monserrat_alternatives_regular" android:text="@string/reset_password" android:textColor="@color/colorPrimaryDark" android:textSize="30sp" - app:layout_constraintBottom_toTopOf="@+id/username" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintHorizontal_bias="0.41" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintVertical_bias="0.659" /> - - + app:layout_constraintHorizontal_bias="0.495" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + app:layout_constraintStart_toStartOf="parent" + tools:visibility="visible" /> + app:layout_constraintStart_toStartOf="parent" + tools:visibility="visible" />