Skip to content

Commit

Permalink
Merge pull request #39 from FPT-NMTung/nguyen-fix-bug-2
Browse files Browse the repository at this point in the history
Nguyen fix bug 2
  • Loading branch information
FPT-NMTung authored Mar 23, 2022
2 parents ad7a54e + 81c164c commit 7a7d831
Show file tree
Hide file tree
Showing 14 changed files with 591 additions and 24 deletions.
2 changes: 2 additions & 0 deletions .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@
android:roundIcon="@drawable/app_icon"
android:supportsRtl="true"
android:theme="@style/Theme.Project">
<activity
android:name=".view.account.ChangePassword"
android:exported="false" />
<activity
android:name=".view.contact_us.ContactUs"
android:exported="false" />
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package fu.prm391.sampl.project.model.user.change_password;

import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

public class ChangePasswordRequest {

@SerializedName("oldPassword")
@Expose
private String oldPassword;

@SerializedName("password")
@Expose
private String password;

public ChangePasswordRequest(String oldPassword, String password) {
this.oldPassword = oldPassword;
this.password = password;
}

public ChangePasswordRequest() {
}

public String getOldPassword() {
return oldPassword;
}

public void setOldPassword(String oldPassword) {
this.oldPassword = oldPassword;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package fu.prm391.sampl.project.model.user.change_password;

import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

public class ChangePasswordResponse {
@SerializedName("message")
@Expose
private String message;

public String getMessage() {
return message;
}

public void setMessage(String message) {
this.message = message;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

public class ApiClient {

public static final String BASE_URL = "https://api.nmtung.xyz/";
public static final String BASE_URL = "https://api.nmtung.dev/";

private static Retrofit getRetrofit() {
// logging
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
import fu.prm391.sampl.project.model.user.UpdateUserInfoResponse;
import fu.prm391.sampl.project.model.user.active_account.ActiveAccountRequest;
import fu.prm391.sampl.project.model.user.active_account.ActiveAccountResponse;
import fu.prm391.sampl.project.model.user.change_password.ChangePasswordRequest;
import fu.prm391.sampl.project.model.user.change_password.ChangePasswordResponse;
import fu.prm391.sampl.project.model.user.forgot_password.ForgotPassRequest;
import fu.prm391.sampl.project.model.user.forgot_password.ForgotPassResponse;
import fu.prm391.sampl.project.model.user.login.LoginRequest;
Expand Down Expand Up @@ -50,4 +52,8 @@ Call<UpdateUserInfoResponse> updateUserInformation(@Header("Authorization") Stri
@PATCH("user/active")
Call<ActiveAccountResponse> activeAccount(@Header("Authorization") String token,
@Body ActiveAccountRequest activeAccountRequest);

@PATCH("user/change-password")
Call<ChangePasswordResponse> changePassword(@Header("Authorization") String token,
@Body ChangePasswordRequest changePasswordRequest);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,164 @@
package fu.prm391.sampl.project.view.account;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.text.method.HideReturnsTransformationMethod;
import android.text.method.PasswordTransformationMethod;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import org.json.JSONException;
import org.json.JSONObject;

import java.io.IOException;

import fu.prm391.sampl.project.R;
import fu.prm391.sampl.project.helper.PreferencesHelpers;
import fu.prm391.sampl.project.model.user.change_password.ChangePasswordRequest;
import fu.prm391.sampl.project.model.user.change_password.ChangePasswordResponse;
import fu.prm391.sampl.project.remote.ApiClient;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;

public class ChangePassword extends AppCompatActivity {

private TextView txtBack;
private EditText oldPass, newPass, rePass;
private Button btnSave;
private String token;
private ImageView btnShowOldPass, btnShowNewPass, btnShowRepass;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_change_password);

token = PreferencesHelpers.loadStringData(ChangePassword.this, "token");

changePasswordAction();
showHidePass();
backAction();
}

private void changePasswordAction() {
oldPass = findViewById(R.id.et_old_pass);
newPass = findViewById(R.id.et_new_pass);
rePass = findViewById(R.id.et_re_pass);
btnSave = findViewById(R.id.btnSaveChangePass);
btnSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
btnSave.setEnabled(false);
if (TextUtils.isEmpty(oldPass.getText().toString().trim())
|| TextUtils.isEmpty(newPass.getText().toString().trim())
|| TextUtils.isEmpty(rePass.getText().toString().trim())) {
Toast.makeText(ChangePassword.this, "All fields are required!", Toast.LENGTH_SHORT).show();
btnSave.setEnabled(true);
} else if (!newPass.getText().toString().equals(rePass.getText().toString())) {
Toast.makeText(ChangePassword.this, "New Password & Re-Password must be the same!", Toast.LENGTH_SHORT).show();
btnSave.setEnabled(true);
} else {
// proceed change password
changePassword();
}
}
});
}

private void changePassword() {
ChangePasswordRequest changePasswordRequest = new ChangePasswordRequest();
changePasswordRequest.setOldPassword(oldPass.getText().toString());
changePasswordRequest.setPassword(newPass.getText().toString());

Call<ChangePasswordResponse> changePasswordResponseCall = ApiClient
.getUserService()
.changePassword("Bearer " + token, changePasswordRequest);
changePasswordResponseCall.enqueue(new Callback<ChangePasswordResponse>() {
@Override
public void onResponse(Call<ChangePasswordResponse> call, Response<ChangePasswordResponse> response) {
if (response.isSuccessful()) {
Toast.makeText(ChangePassword.this, response.body().getMessage(), Toast.LENGTH_SHORT).show();
finish();
} else {
try {
JSONObject jsonObject = new JSONObject(response.errorBody().string());
Toast.makeText(ChangePassword.this, jsonObject.getString("message"), Toast.LENGTH_SHORT).show();
} catch (JSONException | IOException e) {
Toast.makeText(ChangePassword.this, e.getLocalizedMessage(), Toast.LENGTH_SHORT).show();
}
btnSave.setEnabled(true);
}
}

@Override
public void onFailure(Call<ChangePasswordResponse> call, Throwable t) {
btnSave.setEnabled(true);
}
});
}

private void backAction() {
txtBack = findViewById(R.id.txtBackChangePass);
txtBack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
}
});
}

public void showHidePass() {
btnShowOldPass = findViewById(R.id.btnShowOldPassChangePass);
btnShowOldPass.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (oldPass.getTransformationMethod().equals(PasswordTransformationMethod.getInstance())) {
((ImageView) (view)).setImageResource(R.drawable.ic_visibility_off);
oldPass.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
} else {
((ImageView) (view)).setImageResource(R.drawable.ic_visibility);
oldPass.setTransformationMethod(PasswordTransformationMethod.getInstance());
}
oldPass.setSelection(oldPass.length());
}
});

btnShowNewPass = findViewById(R.id.btnShowNewPassChangePass);
btnShowNewPass.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (newPass.getTransformationMethod().equals(PasswordTransformationMethod.getInstance())) {
((ImageView) (view)).setImageResource(R.drawable.ic_visibility_off);
newPass.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
} else {
((ImageView) (view)).setImageResource(R.drawable.ic_visibility);
newPass.setTransformationMethod(PasswordTransformationMethod.getInstance());
}
newPass.setSelection(newPass.length());
}
});

btnShowRepass = findViewById(R.id.btnShowRePassChangePass);
btnShowRepass.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (rePass.getTransformationMethod().equals(PasswordTransformationMethod.getInstance())) {
((ImageView) (view)).setImageResource(R.drawable.ic_visibility_off);
rePass.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
} else {
((ImageView) (view)).setImageResource(R.drawable.ic_visibility);
rePass.setTransformationMethod(PasswordTransformationMethod.getInstance());
}
rePass.setSelection(rePass.length());
}
});
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import fu.prm391.sampl.project.model.user.User;
import fu.prm391.sampl.project.model.user.UserResponse;
import fu.prm391.sampl.project.remote.ApiClient;
import fu.prm391.sampl.project.view.account.ChangePassword;
import fu.prm391.sampl.project.view.account.Login;
import fu.prm391.sampl.project.view.address.ProfileShippingAddress;
import fu.prm391.sampl.project.view.contact_us.ContactUs;
Expand Down Expand Up @@ -61,6 +62,7 @@ public class Profiles extends Fragment {
private User user;
private View viewContactUs;
private CardView loadingCard;
private View viewChangePassword;

public Profiles() {
// Required empty public constructor
Expand Down Expand Up @@ -264,6 +266,14 @@ public void onClick(View view) {
startActivity(intent);
}
});

viewChangePassword = view.findViewById(R.id.viewChangePassword);
viewChangePassword.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(getContext(), ChangePassword.class));
}
});
}

private void editProfileAction() {
Expand Down
Loading

0 comments on commit 7a7d831

Please sign in to comment.