| |
---|
| | import android.widget.LinearLayout; |
---|
| | |
---|
| | import com.example.sprout.refactor.adapter.RoomMainAdapter; |
---|
| | import com.example.sprout.refactor.common.MemberState; |
---|
| | import com.example.sprout.refactor.contract.ViewContract; |
---|
| | import com.example.sprout.refactor.messengers.NavigationMessage; |
---|
| | import com.example.sprout.refactor.model.ModelLocator; |
---|
| | import com.example.sprout.refactor.model.RoomModel; |
---|
| | import com.example.sprout.refactor.model.RoomResponseModel; |
---|
| | import com.example.sprout.refactor.model.entity.Member; |
---|
| | import com.example.sprout.refactor.model.entity.Room; |
---|
| | import com.example.sprout.refactor.model.entity.RoomResponse; |
---|
| | import com.example.sprout.refactor.notification.Observer; |
---|
| |
---|
| | */ |
---|
| | |
---|
| | public class RoomMainViewModel extends BaseViewModel { |
---|
| | |
---|
| | private RoomRepository roomRepository = null; |
---|
| | private RoomRepository roomRepository = ModelLocator.get().getRoomRepository(); |
---|
| | private RoomModel roomModel = ModelLocator.get().getRoomModel(); |
---|
| | private RoomResponseModel roomResponseModel = ModelLocator.get().getRoomResponseModel(); |
---|
| | private RoomMainAdapter adapter = null; |
---|
| | private ViewContract viewContract = null; |
---|
| | private ObservableBoolean ready = new ObservableBoolean(false); |
---|
| | private Observer<Room> roomObserver = null; |
---|
| | private Observer<RoomResponse> updateRoomStateObserver = null; |
---|
| | private Observer<Void> exitRoomObserver = null; |
---|
| | |
---|
| | public RoomMainViewModel(RoomMainAdapter adapter, ViewContract viewContract) { |
---|
| | this.roomRepository = ModelLocator.getModel(ModelLocator.Tag.ROOM_REPOSITORY, RoomRepository.class); |
---|
| | this.viewContract = viewContract; |
---|
| | public RoomMainViewModel(RoomMainAdapter adapter) { |
---|
| | this.adapter = adapter; |
---|
| | |
---|
| | roomObserver = new Observer<Room>() { |
---|
| | @Override |
---|
| | public void notify(Room room) { |
---|
| | ModelLocator.setModel(ModelLocator.Tag.Room, room); |
---|
| | ArrayList<Member> items = new ArrayList<>(room.getMemberList().values()); |
---|
| | RoomMainViewModel.this.adapter.setDataAndRefresh(items); |
---|
| | } |
---|
| | |
---|
| |
---|
| | |
---|
| | exitRoomObserver = new Observer<Void>() { |
---|
| | @Override |
---|
| | public void notify(Void aVoid) { |
---|
| | viewContract.finishActivity(); |
---|
| | navigationObservable.notifyObservers(new NavigationMessage(NavigationMessage.Type.Finish)); |
---|
| | } |
---|
| | |
---|
| | @Override |
---|
| | public void error(Throwable throwable) { |
---|
| |
---|
| | |
---|
| | @Override |
---|
| | public void onResume() { |
---|
| | super.onResume(); |
---|
| | roomRepository.getRoomObservable().addObserver(roomObserver); |
---|
| | roomRepository.getRoomResponseObservable().addObserver(updateRoomStateObserver); |
---|
| | roomModel.getRoomObservable().addObserver(roomObserver); |
---|
| | roomResponseModel.getRoomResponseObservable().addObserver(updateRoomStateObserver); |
---|
| | roomRepository.getVoidObservable().addObserver(exitRoomObserver); |
---|
| | } |
---|
| | |
---|
| | @Override |
---|
| | public void onPause() { |
---|
| | super.onPause(); |
---|
| | roomRepository.getRoomObservable().removeObserver(roomObserver); |
---|
| | roomRepository.getRoomResponseObservable().removeObserver(updateRoomStateObserver); |
---|
| | roomModel.getRoomObservable().removeObserver(roomObserver); |
---|
| | roomResponseModel.getRoomResponseObservable().removeObserver(updateRoomStateObserver); |
---|
| | roomRepository.getVoidObservable().removeObserver(exitRoomObserver); |
---|
| | } |
---|
| | |
---|
| | public void update() { |
---|
| | roomRepository.getRoom(PreferenceUtil.getInstance().getInt(PreferenceUtil.Key.ROOM_ID)); |
---|
| | roomModel.get(PreferenceUtil.getInstance().getInt(PreferenceUtil.Key.ROOM_ID)); |
---|
| | } |
---|
| | |
---|
| | public void onClickGunman() { |
---|
| | roomRepository.updateRoomState( |
---|
| | roomResponseModel.updateRoomState( |
---|
| | PreferenceUtil.getInstance().getInt(PreferenceUtil.Key.ROOM_ID), |
---|
| | PreferenceUtil.getInstance().getInt(PreferenceUtil.Key.MEMBER_ID), |
---|
| | MemberState.GUNMAN.getValue()); |
---|
| | } |
---|
| | |
---|
| | public void onClickWitch() { |
---|
| | roomRepository.updateRoomState( |
---|
| | roomResponseModel.updateRoomState( |
---|
| | PreferenceUtil.getInstance().getInt(PreferenceUtil.Key.ROOM_ID), |
---|
| | PreferenceUtil.getInstance().getInt(PreferenceUtil.Key.MEMBER_ID), |
---|
| | MemberState.WITCH.getValue()); |
---|
| | } |
---|
| | |
---|
| | public void onClickReady() { |
---|
| | ready.set(!ready.get()); |
---|
| | roomRepository.updateRoomState( |
---|
| | roomResponseModel.updateRoomState( |
---|
| | PreferenceUtil.getInstance().getInt(PreferenceUtil.Key.ROOM_ID), |
---|
| | PreferenceUtil.getInstance().getInt(PreferenceUtil.Key.MEMBER_ID), |
---|
| | MemberState.READY.getValue()); |
---|
| | } |
---|
| |
---|
| | |