diff --git a/app/src/main/java/com/example/sprout/refactor/activity/RoomCreateActivity.java b/app/src/main/java/com/example/sprout/refactor/activity/RoomCreateActivity.java index 4d853aa..e03f763 100644 --- a/app/src/main/java/com/example/sprout/refactor/activity/RoomCreateActivity.java +++ b/app/src/main/java/com/example/sprout/refactor/activity/RoomCreateActivity.java @@ -1,15 +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.RfActivityRoomCreateBinding; -import com.example.sprout.refactor.common.ActivityEvent; -import com.example.sprout.refactor.contract.ViewContract; import com.example.sprout.refactor.viewmodel.RoomCreateViewModel; /** @@ -17,38 +12,29 @@ * * @author matsumoto_k */ -public class RoomCreateActivity extends AppCompatActivity implements ViewContract { +public class RoomCreateActivity extends BaseActivity { + + private RoomCreateViewModel roomCreateViewModel = null; + private RfActivityRoomCreateBinding binding = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - RfActivityRoomCreateBinding binding = DataBindingUtil.setContentView(this, R.layout.rf_activity_room_create); - RoomCreateViewModel roomCreateViewModel = new RoomCreateViewModel((ViewContract) this); + binding = DataBindingUtil.setContentView(this, R.layout.rf_activity_room_create); + roomCreateViewModel = new RoomCreateViewModel(); binding.setViewModel(roomCreateViewModel); getLifecycle().addObserver(roomCreateViewModel); } @Override - public void startActivity(ActivityEvent event) { - switch (event) { - case ROOM_MAIN: - startActivity(new Intent(RoomCreateActivity.this, RoomMainActivity.class)); - break; - } + protected void onResume() { + super.onResume(); + addUiObserver(roomCreateViewModel); } @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(roomCreateViewModel); } } 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 1f72130..e2b6858 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 @@ -7,9 +7,9 @@ import com.example.sprout.refactor.util.PreferenceUtil; /** + * RoomResponseを管理するクラス * Created by matsumoto_k on 2017/12/22. */ - public class RoomResponseModel { private RoomRepository roomRepository = null; @@ -38,6 +38,10 @@ roomRepository.enterRoom(roomId, userId); } + public void createRoom(int userId, String roomName, String key) { + roomRepository.createRoom(userId, roomName, key); + } + public Observable getRoomResponseObservable() { return roomResponseObservable; } diff --git a/app/src/main/java/com/example/sprout/refactor/viewmodel/RoomCreateViewModel.java b/app/src/main/java/com/example/sprout/refactor/viewmodel/RoomCreateViewModel.java index 72ec0c1..bf69eba 100644 --- a/app/src/main/java/com/example/sprout/refactor/viewmodel/RoomCreateViewModel.java +++ b/app/src/main/java/com/example/sprout/refactor/viewmodel/RoomCreateViewModel.java @@ -3,12 +3,13 @@ import android.databinding.ObservableBoolean; 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; /** @@ -18,31 +19,27 @@ */ public class RoomCreateViewModel extends BaseViewModel { - private RoomRepository roomRepository = null; - private ViewContract viewContract = null; + // private RoomRepository roomRepository = null; +// private ViewContract viewContract = null; + private RoomResponseModel roomResponseModel = ModelLocator.get().getRoomResponseModel(); private ObservableField roomName = new ObservableField<>(""); private ObservableField pass = new ObservableField<>(""); private ObservableBoolean hasPass = new ObservableBoolean(false); private Observer observer = null; - public RoomCreateViewModel(ViewContract viewContract) { - this.roomRepository = ModelLocator.getModel(ModelLocator.Tag.ROOM_REPOSITORY, RoomRepository.class); - this.viewContract = viewContract; + public RoomCreateViewModel() { observer = new Observer() { @Override public void notify(RoomResponse roomResponse) { - ModelLocator.setModel(ModelLocator.Tag.RoomResponse, roomResponse); - PreferenceUtil.getInstance().saveInt(PreferenceUtil.Key.ROOM_ID, roomResponse.getRoom().getRoomId()); - PreferenceUtil.getInstance().saveInt(PreferenceUtil.Key.MEMBER_ID, roomResponse.getMemberId()); - viewContract.showShortToast("ルームを作成しました"); - viewContract.startActivity(ActivityEvent.ROOM_MAIN); - viewContract.finishActivity(); + toastObservable.notifyObservers(new ToastMessage("ルームを作成しました", ToastMessage.Length.SHORT)); + navigationObservable.notifyObservers(new NavigationMessage(NavigationMessage.Type.Start, RoomMainActivity.class)); + navigationObservable.notifyObservers(new NavigationMessage(NavigationMessage.Type.Finish)); } @Override public void error(Throwable throwable) { - viewContract.showShortToast("ルーム作成に失敗しました"); + toastObservable.notifyObservers(new ToastMessage("ルーム作成に失敗しました", ToastMessage.Length.SHORT)); } }; } @@ -50,33 +47,33 @@ @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().addObserver(observer); } public void onClickCreate(String userName, String pass) { if (hasPass.get()) { if (userName.isEmpty() || pass.isEmpty()) { - viewContract.showShortToast("必要項目を入力して下さい"); + toastObservable.notifyObservers(new ToastMessage("必須項目を入力して下さい", ToastMessage.Length.SHORT)); return; } - roomRepository.createRoom(PreferenceUtil.getInstance().getInt(PreferenceUtil.Key.USER_ID), userName, pass); + roomResponseModel.createRoom(PreferenceUtil.getInstance().getInt(PreferenceUtil.Key.USER_ID), userName, pass); } else { if (userName.isEmpty()) { - viewContract.showShortToast("必要項目を入力して下さい"); + toastObservable.notifyObservers(new ToastMessage("必須項目を入力して下さい", ToastMessage.Length.SHORT)); return; } - roomRepository.createRoom(PreferenceUtil.getInstance().getInt(PreferenceUtil.Key.USER_ID), userName, null); + roomResponseModel.createRoom(PreferenceUtil.getInstance().getInt(PreferenceUtil.Key.USER_ID), userName, null); } } public void onClickBack() { - viewContract.finishActivity(); + navigationObservable.notifyObservers(new NavigationMessage(NavigationMessage.Type.Finish)); } public ObservableField getRoomName() {