diff --git a/app/src/main/java/com/example/sprout/refactor/activity/RoomInputKeyActivity.java b/app/src/main/java/com/example/sprout/refactor/activity/RoomInputKeyActivity.java index 115f5a1..58dfaa8 100644 --- a/app/src/main/java/com/example/sprout/refactor/activity/RoomInputKeyActivity.java +++ b/app/src/main/java/com/example/sprout/refactor/activity/RoomInputKeyActivity.java @@ -1,14 +1,10 @@ package com.example.sprout.refactor.activity; -import android.content.Intent; import android.databinding.DataBindingUtil; import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; -import android.widget.Toast; import com.example.sprout.R; import com.example.sprout.databinding.RfActivityRoomInputKeyBinding; -import com.example.sprout.refactor.common.ActivityEvent; import com.example.sprout.refactor.contract.ViewContract; import com.example.sprout.refactor.viewmodel.RoomInputKeyViewModel; @@ -17,7 +13,7 @@ * * @author matsumoto_k */ -public class RoomInputKeyActivity extends AppCompatActivity implements ViewContract { +public class RoomInputKeyActivity extends BaseActivity { private RfActivityRoomInputKeyBinding binding = null; private RoomInputKeyViewModel roomInputKeyViewModel = null; @@ -26,32 +22,20 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); binding = DataBindingUtil.setContentView(this, R.layout.rf_activity_room_input_key); - roomInputKeyViewModel = new RoomInputKeyViewModel((ViewContract) this); + roomInputKeyViewModel = new RoomInputKeyViewModel(); binding.setViewModel(roomInputKeyViewModel); getLifecycle().addObserver(roomInputKeyViewModel); } @Override - public void startActivity(ActivityEvent event) { - switch (event) { - case ROOM_MAIN: - startActivity(new Intent(RoomInputKeyActivity.this, RoomMainActivity.class)); - break; - } + protected void onResume() { + super.onResume(); + addUiObserver(roomInputKeyViewModel); } @Override - public void finishActivity() { - finish(); - } - - @Override - public void showShortToast(String message) { - Toast.makeText(this, message, Toast.LENGTH_SHORT).show(); - } - - @Override - public void showLongToast(String message) { - Toast.makeText(this, message, Toast.LENGTH_LONG).show(); + protected void onPause() { + super.onPause(); + removeUiObserver(roomInputKeyViewModel); } } diff --git a/app/src/main/java/com/example/sprout/refactor/model/RoomResponseModel.java b/app/src/main/java/com/example/sprout/refactor/model/RoomResponseModel.java index e2b6858..ccd4e9e 100644 --- a/app/src/main/java/com/example/sprout/refactor/model/RoomResponseModel.java +++ b/app/src/main/java/com/example/sprout/refactor/model/RoomResponseModel.java @@ -34,12 +34,16 @@ this.roomRepository.getRoomResponseObservable().addObserver(roomResponseObserver); } + public void createRoom(int userId, String roomName, String key) { + roomRepository.createRoom(userId, roomName, key); + } + public void enterRoom(int roomId, int userId) { roomRepository.enterRoom(roomId, userId); } - public void createRoom(int userId, String roomName, String key) { - roomRepository.createRoom(userId, roomName, key); + public void enterRoomWithKey(int roomId, int userId, String key) { + roomRepository.enterRoomWithKey(roomId, userId, key); } public Observable getRoomResponseObservable() { diff --git a/app/src/main/java/com/example/sprout/refactor/viewmodel/RoomInputKeyViewModel.java b/app/src/main/java/com/example/sprout/refactor/viewmodel/RoomInputKeyViewModel.java index 9bcc836..23755de 100644 --- a/app/src/main/java/com/example/sprout/refactor/viewmodel/RoomInputKeyViewModel.java +++ b/app/src/main/java/com/example/sprout/refactor/viewmodel/RoomInputKeyViewModel.java @@ -2,12 +2,13 @@ import android.databinding.ObservableField; -import com.example.sprout.refactor.common.ActivityEvent; -import com.example.sprout.refactor.contract.ViewContract; +import com.example.sprout.refactor.activity.RoomMainActivity; +import com.example.sprout.refactor.messengers.NavigationMessage; +import com.example.sprout.refactor.messengers.ToastMessage; import com.example.sprout.refactor.model.ModelLocator; +import com.example.sprout.refactor.model.RoomResponseModel; import com.example.sprout.refactor.model.entity.RoomResponse; import com.example.sprout.refactor.notification.Observer; -import com.example.sprout.refactor.repository.RoomRepository; import com.example.sprout.refactor.util.PreferenceUtil; /** @@ -17,29 +18,24 @@ */ public class RoomInputKeyViewModel extends BaseViewModel { - private RoomRepository roomRepository = null; - private ViewContract viewContract = null; + private RoomResponseModel roomResponseModel = ModelLocator.get().getRoomResponseModel(); private ObservableField pass = new ObservableField<>(""); private Observer observer = null; - public RoomInputKeyViewModel(ViewContract viewContract) { - this.roomRepository = ModelLocator.getModel(ModelLocator.Tag.ROOM_REPOSITORY, RoomRepository.class); - this.viewContract = viewContract; - + public RoomInputKeyViewModel() { observer = new Observer() { @Override public void notify(RoomResponse roomResponse) { if (roomResponse.canEnter()) { - ModelLocator.setModel(ModelLocator.Tag.RoomResponse, roomResponse); - viewContract.startActivity(ActivityEvent.ROOM_MAIN); + navigationObservable.notifyObservers(new NavigationMessage(NavigationMessage.Type.Start, RoomMainActivity.class)); } else { - viewContract.showShortToast("入室に失敗しました"); + toastObservable.notifyObservers(new ToastMessage("入室に失敗しました", ToastMessage.Length.SHORT)); } } @Override public void error(Throwable throwable) { - viewContract.showShortToast("入室に失敗しました"); + toastObservable.notifyObservers(new ToastMessage("入室に失敗しました", ToastMessage.Length.SHORT)); } }; } @@ -47,20 +43,20 @@ @Override public void onResume() { super.onResume(); - roomRepository.getRoomResponseObservable().addObserver(observer); + roomResponseModel.getRoomResponseObservable().addObserver(observer); } @Override public void onPause() { super.onPause(); - roomRepository.getRoomResponseObservable().removeObserver(observer); + roomResponseModel.getRoomResponseObservable().removeObserver(observer); } public void onClickEnter(String pass) { if (pass.isEmpty()) { - viewContract.showShortToast("パスワードを入力して下さい"); + toastObservable.notifyObservers(new ToastMessage("パスワードを入力して下さい", ToastMessage.Length.SHORT)); } else { - roomRepository.enterRoomWithKey( + roomResponseModel.enterRoomWithKey( PreferenceUtil.getInstance().getInt(PreferenceUtil.Key.ROOM_ID), PreferenceUtil.getInstance().getInt(PreferenceUtil.Key.USER_ID), pass @@ -69,7 +65,7 @@ } public void onClickBack() { - viewContract.finishActivity(); + navigationObservable.notifyObservers(new NavigationMessage(NavigationMessage.Type.Finish)); } public ObservableField getPass() {