| | package com.example.sprout.refactor.viewmodel; |
---|
| | |
---|
| | 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.entity.RoomResponse; |
---|
| | import com.example.sprout.refactor.notification.Observer; |
---|
| | import com.example.sprout.refactor.repository.RoomRepository; |
---|
| | import com.example.sprout.refactor.model.RoomResponseModel; |
---|
| | import com.example.sprout.refactor.util.PreferenceUtil; |
---|
| | |
---|
| | /** |
---|
| | * ルーム入室(key)のViewModel |
---|
| |
---|
| | * @author matsumoto_k |
---|
| | */ |
---|
| | public class RoomInputKeyViewModel extends BaseViewModel { |
---|
| | |
---|
| | private RoomRepository roomRepository = null; |
---|
| | private ViewContract viewContract = null; |
---|
| | private RoomResponseModel roomResponseModel = ModelLocator.get().getRoomResponseModel(); |
---|
| | private ObservableField<String> pass = new ObservableField<>(""); |
---|
| | private Observer<RoomResponse> observer = null; |
---|
| | |
---|
| | public RoomInputKeyViewModel(ViewContract viewContract) { |
---|
| | this.roomRepository = ModelLocator.getModel(ModelLocator.Tag.ROOM_REPOSITORY, RoomRepository.class); |
---|
| | this.viewContract = viewContract; |
---|
| | |
---|
| | observer = new Observer<RoomResponse>() { |
---|
| | @Override |
---|
| | public void notify(RoomResponse roomResponse) { |
---|
| | if (roomResponse.canEnter()) { |
---|
| | ModelLocator.setModel(ModelLocator.Tag.RoomResponse, roomResponse); |
---|
| | viewContract.startActivity(ActivityEvent.ROOM_MAIN); |
---|
| | } else { |
---|
| | viewContract.showShortToast("入室に失敗しました"); |
---|
| | } |
---|
| | } |
---|
| | |
---|
| | @Override |
---|
| | public void error(Throwable throwable) { |
---|
| | viewContract.showShortToast("入室に失敗しました"); |
---|
| | } |
---|
| | }; |
---|
| | public RoomInputKeyViewModel() { |
---|
| | } |
---|
| | |
---|
| | @Override |
---|
| | public void onResume() { |
---|
| | super.onResume(); |
---|
| | roomRepository.getRoomResponseObservable().addObserver(observer); |
---|
| | subscriptions.add( |
---|
| | roomResponseModel.getRoomResopnseObservable() |
---|
| | .subscribe( |
---|
| | roomResponse -> { |
---|
| | if (roomResponse.canEnter()) { |
---|
| | navigationMessenger.navigateTo(new NavigationMessage(NavigationMessage.Type.Start, RoomMainActivity.class)); |
---|
| | navigationMessenger.navigateTo(new NavigationMessage(NavigationMessage.Type.Finsih)); |
---|
| | } |
---|
| | } |
---|
| | ) |
---|
| | ); |
---|
| | subscriptions.add( |
---|
| | roomResponseModel.getErrorObservable() |
---|
| | .subscribe(error -> { |
---|
| | switch (error.type()) { |
---|
| | case CONFLICT: |
---|
| | toastMessanger.showToast(new ToastMessage("入室に失敗しました", ToastMessage.Length.SHORT)); |
---|
| | break; |
---|
| | case NetworkError: |
---|
| | toastMessanger.showToast(new ToastMessage("電波の良い場所に移動してもう一度試して下さい", ToastMessage.Length.SHORT)); |
---|
| | } |
---|
| | }) |
---|
| | ); |
---|
| | } |
---|
| | |
---|
| | @Override |
---|
| | public void onPause() { |
---|
| | super.onPause(); |
---|
| | roomRepository.getRoomResponseObservable().removeObserver(observer); |
---|
| | } |
---|
| | |
---|
| | public void onClickEnter(String pass) { |
---|
| | if (pass.isEmpty()) { |
---|
| | viewContract.showShortToast("パスワードを入力して下さい"); |
---|
| | public void onClickEnter(String key) { |
---|
| | if (key.isEmpty()) { |
---|
| | toastMessanger.showToast(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 |
---|
| | key |
---|
| | ); |
---|
| | } |
---|
| | } |
---|
| | |
---|
| | public void onClickBack() { |
---|
| | viewContract.finishActivity(); |
---|
| | navigationMessenger.navigateTo(new NavigationMessage(NavigationMessage.Type.Finsih)); |
---|
| | } |
---|
| | |
---|
| | public ObservableField<String> getPass() { |
---|
| | return pass; |
---|
| | |