package com.example.citrusclient.viewmodels; import com.example.citrusclient.rest.AccountsRest; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; import retrofit2.Retrofit; import retrofit2.converter.jackson.JacksonConverterFactory; public class SettingsViewModel extends ViewModel { private final Retrofit retrofit; private final AccountsRest accountsRest; private final MutableLiveData<String> accountColorLiveData; //通信レスポンスの画面表示用のライブデーター //PW変更時の通信レスポンス結果格納用 private final MutableLiveData<Integer> error_changePw_LiveData; //アカウント削除時の通信レスポンス結果格納用 private final MutableLiveData<Integer> error_deleteAccount_LiveData; //アカウントID変更 private final MutableLiveData<Integer> error_changeAccount_LiveData; public SettingsViewModel(){ retrofit = new Retrofit.Builder() .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/citrus/") .addConverterFactory(JacksonConverterFactory.create()) .build(); this.accountsRest = retrofit.create(AccountsRest.class); this.accountColorLiveData = new MutableLiveData<>(); this.error_changePw_LiveData = new MutableLiveData<>(); this.error_deleteAccount_LiveData = new MutableLiveData<>(); this.error_changeAccount_LiveData = new MutableLiveData<>(); } public MutableLiveData<String> getAccountColorLiveData(){return accountColorLiveData;} public MutableLiveData<Integer> getError_changePw_LiveData(){return error_changePw_LiveData;} public MutableLiveData<Integer> getError_deleteAccount_LiveData(){return error_deleteAccount_LiveData;} public MutableLiveData<Integer> getError_changeAccount_LiveData(){return error_changeAccount_LiveData;} public void loadAccountColor(String accountId){ Call<String> call= accountsRest.getAccountColor(accountId); call.enqueue(new Callback<String>() { @Override public void onResponse(Call<String> call, Response<String> response) { String strAccountColor = response.body(); if (response.isSuccessful()){ System.out.println("success"); accountColorLiveData.setValue(strAccountColor); }else{ System.out.println("fail"); } } @Override public void onFailure(Call<String> call, Throwable t) { System.out.println("NetworkError"+t); } }); } //なんちゃって通信ver1 //PW変更時のサーバ通信プログラム public void changePW(String accountId, String new_password, String old_password,String token){ Call<String> call = accountsRest.changePW(accountId,new_password, old_password, token); call.enqueue(new Callback<String>() { @Override public void onResponse(Call<String> call, Response<String> response) { if (response.isSuccessful()) { System.out.println("success"); error_changePw_LiveData.setValue(204); //成功処理 } else { System.out.println("fail"); error_changePw_LiveData.setValue(404); } } @Override public void onFailure(Call<String> call, Throwable t) { System.out.println("NetWorkError"+t); error_changePw_LiveData.setValue(404); } }); } //通信ver2 //アカウント削除 public void deleteId(String accountId, String token, String password){ Call<String> call =accountsRest.deleteId(accountId,token,password); call.enqueue(new Callback<String>() { @Override public void onResponse(Call<String> call, Response<String> response) { if(response.isSuccessful()){ System.out.println("success"); //成功処理 error_deleteAccount_LiveData.setValue(204); }else{ System.out.println("fail"); //もしコンソール表記をするならこの下に処理を記載 error_deleteAccount_LiveData.setValue(404); } } @Override public void onFailure(Call<String> call, Throwable t) { System.out.println("NetWorkError"+t); //もしコンソール表記をするならこの下に処理を記載 error_deleteAccount_LiveData.setValue(404); } }); } //通信Ver3 //色変更 public void changeColor(String accountId, String accountColor, String token){ Call<String> call =accountsRest.changeColor(accountId, accountColor, token); call.enqueue(new Callback<String>() { @Override public void onResponse(Call<String> call, Response<String> response) { if(response.isSuccessful()){ System.out.println("success"); accountColorLiveData.setValue(accountColor); }else{ System.out.println("fail"); } } @Override public void onFailure(Call<String> call, Throwable t) { System.out.println("NetWorkError"+t); } }); } //通信Ver4 //アカウント名変更 public void changeAccount(String accountId, String new_account_id, String old_password, String token){ Call<String> call =accountsRest.changeAccount(accountId, new_account_id, old_password, token); call.enqueue(new Callback<String>() { @Override public void onResponse(Call<String> call, Response<String> response) { if(response.isSuccessful()){ System.out.println("success"); error_changeAccount_LiveData.setValue(204); }else{ System.out.println("fail"); error_changeAccount_LiveData.setValue(404); } } @Override public void onFailure(Call<String> call, Throwable t) { System.out.println("NetWorkError"+t); error_changeAccount_LiveData.setValue(404); } }); } }