diff --git a/app/src/main/java/com/example/tampopo_client/viewmodels/UserViewModel.java b/app/src/main/java/com/example/tampopo_client/viewmodels/UserViewModel.java index 4bd21e4..d44c9f4 100644 --- a/app/src/main/java/com/example/tampopo_client/viewmodels/UserViewModel.java +++ b/app/src/main/java/com/example/tampopo_client/viewmodels/UserViewModel.java @@ -47,7 +47,7 @@ private final MutableLiveData token = new MutableLiveData<>(); private final MutableLiveData icon = new MutableLiveData<>(); private final MutableLiveDataloading = new MutableLiveData<>(false); - private final MutableLiveData error = new MutableLiveData<>(); + private static final MutableLiveData error = new MutableLiveData<>(); //コンストラクタ @@ -247,7 +247,7 @@ // LiveData に更新 User currentUser = user.getValue(); if (currentUser != null) { - currentUser.setEmail(response.body()); + currentUser.setEmail(newEmale); user.setValue(currentUser); } } else { diff --git a/app/src/main/java/com/example/tampopo_client/views/AccountActivity.java b/app/src/main/java/com/example/tampopo_client/views/AccountActivity.java index ead07da..a757838 100644 --- a/app/src/main/java/com/example/tampopo_client/views/AccountActivity.java +++ b/app/src/main/java/com/example/tampopo_client/views/AccountActivity.java @@ -51,75 +51,69 @@ EditText mailbuttonInput = findViewById(R.id.mailbutton); mailbuttonInput.setText(((Tampopo) AccountActivity.this.getApplication()).getMailaddress()); - //決定ボタンを押したときにパスワードとメールアドレスを保存 + // 決定ボタン Button dicisionbutton = findViewById(R.id.dicisionbutton); - dicisionbutton.setOnClickListener(new View.OnClickListener() { + dicisionbutton.setOnClickListener(v -> { - //@Override - public void onClick(View v) { - Tampopo app = (Tampopo) AccountActivity.this.getApplication(); + Tampopo app = (Tampopo) getApplication(); - //現在の(保存されている)パスワード - String currentStoredPassword = app.getPassword() == null ? "" : app.getPassword(); + // 現在の(保存されている)パスワード + String currentStoredPassword = app.getPassword() == null ? "" : app.getPassword(); + // 入力値を取得 + String beforePassword = ((EditText) findViewById(R.id.beforepasswordbutton)).getText().toString(); + String afterPassword1 = ((EditText) findViewById(R.id.afterpasswordbutton1)).getText().toString(); + String afterPassword2 = ((EditText) findViewById(R.id.afterpasswordbutton2)).getText().toString(); + String mailAddress = ((EditText) findViewById(R.id.mailbutton)).getText().toString(); - System.out.println("【DEBUG】保存されているパスワード:" + currentStoredPassword); - String beforepasswordbutton = null; - System.out.println("【DEBUG】入力された現在のパスワード:" + beforepasswordbutton); + boolean passwordChanged = false; + boolean emailChanged = false; + // パスワード変更チェック + if (!afterPassword1.isEmpty() || !afterPassword2.isEmpty() || !beforePassword.isEmpty()) { - //入力された「現在のパスワード」 - EditText beforepasswordbuttonInput = findViewById(R.id.beforepasswordbutton); - beforepasswordbutton = beforepasswordbuttonInput.getText().toString(); - - //入力された「新しいパスワード」2回分 - EditText afterpasswordbutton1Input = findViewById(R.id.afterpasswordbutton1); - String afterpasswordbutton1 = afterpasswordbutton1Input.getText().toString(); - - EditText afterpasswordbutton2Input = findViewById(R.id.afterpasswordbutton2); - String afterpasswordbutton2 = afterpasswordbutton2Input.getText().toString(); - - //メールアドレス登録用 - EditText mailbuttonInput = findViewById(R.id.mailbutton); - String mailbutton = mailbuttonInput.getText().toString(); - - - // 1) 現在のパスワードが一致するか - if (!beforepasswordbutton.equals(currentStoredPassword)) { - Toast.makeText(AccountActivity.this, "現在のパスワードが違います。", Toast.LENGTH_SHORT).show(); + // 現在のパスワード確認 + if (!beforePassword.equals(currentStoredPassword)) { + Toast.makeText(this, "現在のパスワードが違います。", Toast.LENGTH_SHORT).show(); return; } - // 2) 新しいパスワードが2回一致しているか - if (!afterpasswordbutton1.equals(afterpasswordbutton2)) { - Toast.makeText(AccountActivity.this, "新しいパスワードが一致しません。", Toast.LENGTH_SHORT).show(); + // 新しいパスワード2回一致チェック + if (!afterPassword1.equals(afterPassword2)) { + Toast.makeText(this, "新しいパスワードが一致しません。", Toast.LENGTH_SHORT).show(); return; } - // 3) 新しいパスワードが現在のものと同じでないか(同じならはじく) - if (afterpasswordbutton1.equals(currentStoredPassword)) { - Toast.makeText(AccountActivity.this, "新しいパスワードは現在のパスワードと同じです。別のパスワードを入力してください。", Toast.LENGTH_SHORT).show(); + // 新旧同一チェック + if (afterPassword1.equals(currentStoredPassword)) { + Toast.makeText(this, "新しいパスワードは現在のパスワードと同じです。", Toast.LENGTH_SHORT).show(); return; } - - // 全て通ればApplication(Tampopo)に保存 - app.setPassword(afterpasswordbutton2); - app.setMailaddress(mailbutton); - - userViewModel.updatePassword(app.getUserId(),afterpasswordbutton2,app.getToken()); - userViewModel.updateEmail(app.getUserId(),mailbutton,app.getToken()); - - Toast.makeText(AccountActivity.this, "アカウント情報を更新しました。", Toast.LENGTH_SHORT).show(); - - - - //決定を押したら設定画面に遷移 - Intent intent = new Intent(AccountActivity.this, SettingActivity.class); - startActivity(intent); - + // 更新実行 + app.setPassword(afterPassword2); + userViewModel.updatePassword(app.getUserId(), afterPassword2, app.getToken()); + passwordChanged = true; } + + // メールアドレス変更チェック + if (!mailAddress.equals(app.getMailaddress())) { + app.setMailaddress(mailAddress); + userViewModel.updateEmail(app.getUserId(), mailAddress, app.getToken()); + emailChanged = true; + } + + // 結果表示 + if (!passwordChanged && !emailChanged) { + Toast.makeText(this, "変更がありません。", Toast.LENGTH_SHORT).show(); + return; + } + + Toast.makeText(this, "アカウント情報を更新しました。", Toast.LENGTH_SHORT).show(); + + // 設定画面に戻る + Intent intent = new Intent(AccountActivity.this, SettingActivity.class); + startActivity(intent); }); } - - } +} diff --git a/app/src/main/java/com/example/tampopo_client/views/ProfileActivity.java b/app/src/main/java/com/example/tampopo_client/views/ProfileActivity.java index 79898ba..368d583 100644 --- a/app/src/main/java/com/example/tampopo_client/views/ProfileActivity.java +++ b/app/src/main/java/com/example/tampopo_client/views/ProfileActivity.java @@ -12,6 +12,7 @@ import androidx.core.graphics.Insets; import androidx.core.view.ViewCompat; import androidx.core.view.WindowInsetsCompat; +import androidx.lifecycle.ViewModelProvider; import com.example.tampopo_client.R; import com.example.tampopo_client.Tampopo; @@ -32,6 +33,10 @@ return insets; }); + // ViewModel初期化 + userViewModel = new ViewModelProvider(this).get(UserViewModel.class); + + //プロフィール編集画面から設定画面への遷移 ImageButton buttonReturn = (ImageButton)findViewById(R.id.buttonReturn); @@ -85,10 +90,10 @@ super.onStart(); //もともとのidとニックネームを表示 - EditText nicknameInput = (EditText) findViewById(R.id.nicknamebutton); + EditText nicknameInput = findViewById(R.id.nicknamebutton); nicknameInput.setText(((Tampopo) ProfileActivity.this.getApplication()).getNickname()); - EditText useridInput = (EditText) findViewById(R.id.idbutton); + EditText useridInput = findViewById(R.id.idbutton); useridInput.setText(((Tampopo) ProfileActivity.this.getApplication()).getUserId()); }