diff --git a/app/src/main/java/com/example/sprout/refactor/Constant.java b/app/src/main/java/com/example/sprout/refactor/Constant.java index 91c9712..e517600 100644 --- a/app/src/main/java/com/example/sprout/refactor/Constant.java +++ b/app/src/main/java/com/example/sprout/refactor/Constant.java @@ -5,7 +5,7 @@ */ public class Constant { - public static final boolean DEVELOP = false; + public static final boolean DEVELOP = true; public static final long ROOM_UPDATE_INTERVAL = 333; // ms public static final long ROOM_UPDATE_DELAY = 50; // ms } diff --git a/app/src/main/java/com/example/sprout/refactor/api/SproutService.java b/app/src/main/java/com/example/sprout/refactor/api/SproutService.java index 5a01115..821b7b4 100644 --- a/app/src/main/java/com/example/sprout/refactor/api/SproutService.java +++ b/app/src/main/java/com/example/sprout/refactor/api/SproutService.java @@ -33,6 +33,10 @@ Call enterRoom(@Path("roomId") int roomId, @Field("userId") int userId); @FormUrlEncoded + @PUT("rooms/{roomId}") + Call enterRoomWithKey(@Path("roomId") int roomId, @Field("userId") int userId, @Field("key") String key); + + @FormUrlEncoded @POST("rooms") Call createRoom(@Field("userId") int userId, @Field("roomName") String roomName, @Field("key") String key); diff --git a/app/src/main/java/com/example/sprout/refactor/repository/RoomRepository.java b/app/src/main/java/com/example/sprout/refactor/repository/RoomRepository.java index cfd6d01..9d567b4 100644 --- a/app/src/main/java/com/example/sprout/refactor/repository/RoomRepository.java +++ b/app/src/main/java/com/example/sprout/refactor/repository/RoomRepository.java @@ -24,6 +24,7 @@ private Observable roomObservable = new Observable<>(); private Observable roomUpdateStateObservable = new Observable<>(); private Observable exitRoomObservable = new Observable<>(); + private Observable enterRoomWithKeyObservable = new Observable<>(); public RoomRepository(SproutService sproutService) { this.sproutService = sproutService; @@ -143,6 +144,25 @@ }); } + public void enterRoomWithKey(int roomId, int userId, String key) { + Call task = sproutService.enterRoomWithKey(roomId, userId, key); + task.enqueue(new Callback() { + @Override + public void onResponse(Call call, Response response) { + if (response.isSuccessful()) { + enterRoomWithKeyObservable.notifyObservers(response.body()); + } else { + enterRoomWithKeyObservable.notifyError(new Throwable("error")); + } + } + + @Override + public void onFailure(Call call, Throwable t) { + enterRoomWithKeyObservable.notifyError(t); + } + }); + } + public Observable getRoomListObservable() { return roomListObservable; } @@ -163,6 +183,10 @@ return roomUpdateStateObservable; } + public Observable getEnterRoomWithKeyObservable() { + return enterRoomWithKeyObservable; + } + public Observable getExitRoomObservable() { return exitRoomObservable; } 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 7b61bd4..672b702 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 @@ -1,7 +1,13 @@ 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.notification.Observer; import com.example.sprout.refactor.repository.RoomRepository; +import com.example.sprout.refactor.util.PreferenceUtil; +import com.example.sprout.refactor.vo.RoomResponse; /** * ルーム入室(key)のViewModel @@ -12,9 +18,59 @@ private RoomRepository roomRepository = null; private ViewContract viewContract = null; + private ObservableField pass = new ObservableField<>(""); + private Observer observer = null; public RoomInputKeyViewModel(RoomRepository roomRepository, ViewContract viewContract) { this.roomRepository = roomRepository; this.viewContract = viewContract; + + observer = new Observer() { + @Override + public void notify(RoomResponse roomResponse) { + if (roomResponse.canEnter()) { + viewContract.startActivity(ActivityEvent.ROOM_MAIN); + } else { + viewContract.showShortToast("入室に失敗しました"); + } + } + + @Override + public void error(Throwable throwable) { + viewContract.showShortToast("入室に失敗しました"); + } + }; + } + + @Override + public void onResume() { + super.onResume(); + roomRepository.getEnterRoomWithKeyObservable().addObserver(observer); + } + + @Override + public void onPause() { + super.onPause(); + roomRepository.getEnterRoomWithKeyObservable().removeObserver(observer); + } + + public void onClickEnter(String pass) { + if (pass.isEmpty()) { + viewContract.showShortToast("パスワードを入力して下さい"); + } else { + roomRepository.enterRoomWithKey( + PreferenceUtil.getInstance().getInt(PreferenceUtil.Key.ROOM_ID), + PreferenceUtil.getInstance().getInt(PreferenceUtil.Key.USER_ID), + pass + ); + } + } + + public void onClickBack() { + viewContract.finishActivity(); + } + + public ObservableField getPass() { + return pass; } } diff --git a/app/src/main/res/layout/rf_activity_room_input_key.xml b/app/src/main/res/layout/rf_activity_room_input_key.xml index 03d4d89..cfbd450 100644 --- a/app/src/main/res/layout/rf_activity_room_input_key.xml +++ b/app/src/main/res/layout/rf_activity_room_input_key.xml @@ -8,9 +8,29 @@ type="com.example.sprout.refactor.viewmodel.RoomInputKeyViewModel" /> - + android:layout_height="match_parent" + android:orientation="vertical"> - + + +