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 effcf58..3054883 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 @@ -24,6 +24,16 @@ viewModel側  viewModelからsetValueで値を変えていく updateUserName、updateEmail、login、createUserもある。それらを書いていく。viewから必要なものを出していく + +viewとviewModels +イベントパターン +1.画面を表示するごとに値を取る +2.ボタンを押した際の通信をする +3.画面の途中で更新する + +view側がviewModelを使うための方法 +1.最初にUserViewModel userViewModelで宣言 88行目 userViewModelのインスタンスを作る + */ public class UserViewModel extends ViewModel { @@ -49,7 +59,8 @@ public LiveDataisLoading() { return loading;} public LiveData getError() { return error; } - //新規登録 + //新規登録 enqueueで非同期処理、Callbackで成功失敗の処理、LiveDataに反映 + //サーバーから返ってきた型と合わせないとFailureに流れる public void createUser(String id, String password) { loading.setValue(true); userResource.createUser(id, password).enqueue(new Callback() { @@ -63,7 +74,27 @@ } @Override public void onFailure(Call c, Throwable t) { loading.setValue(false); - error.setValue("ネットワークエラー: " + t.getMessage()); + error.setValue("エラー: " + t.getMessage()); + } + }); + } + + //ログイン + public void login(String id, String password) { + loading.setValue(true); + userResource.login(id, password).enqueue(new Callback() { + @Override public void onResponse(Call c, Response res) { + loading.setValue(false); + if (res.isSuccessful()) { + setValue(res.body()); + userResource.getUser(id); + } else { + error.setValue("ログイン失敗: " + res.code()); + } + } + @Override public void onFailure(Call c, Throwable t) { + loading.setValue(false); + error.setValue("エラー: " + t.getMessage()); } }); }