From 6cbbf75bfc52623c3af32d5ef09e574310ab0c78 Mon Sep 17 00:00:00 2001 From: Kazuki Chigita Date: Thu, 3 May 2018 16:09:12 +0900 Subject: [PATCH 01/19] [add] add response parameter --- .../com/cyder/android/syncpod/api/request/CreateRoom.kt | 7 ++++--- .../cyder/android/syncpod/repository/RoomDataRepository.kt | 4 ++-- .../com/cyder/android/syncpod/repository/RoomRepository.kt | 2 +- .../syncpod/viewmodel/CreateRoomActivityViewModel.kt | 2 +- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/app/src/main/kotlin/com/cyder/android/syncpod/api/request/CreateRoom.kt b/app/src/main/kotlin/com/cyder/android/syncpod/api/request/CreateRoom.kt index 634f3db7..d61f9414 100644 --- a/app/src/main/kotlin/com/cyder/android/syncpod/api/request/CreateRoom.kt +++ b/app/src/main/kotlin/com/cyder/android/syncpod/api/request/CreateRoom.kt @@ -4,11 +4,12 @@ package com.cyder.android.syncpod.api.request * Created by chigichan24 on 2018/03/31. */ -class CreateRoom(name: String, description: String) { - private val room = Room(name, description) +class CreateRoom(name: String, description: String, isPublic: Boolean) { + private val room = Room(name, description, isPublic) } private data class Room ( val name: String, - val description: String + val description: String, + val public: Boolean ) \ No newline at end of file diff --git a/app/src/main/kotlin/com/cyder/android/syncpod/repository/RoomDataRepository.kt b/app/src/main/kotlin/com/cyder/android/syncpod/repository/RoomDataRepository.kt index c99c1704..c8f9e79b 100644 --- a/app/src/main/kotlin/com/cyder/android/syncpod/repository/RoomDataRepository.kt +++ b/app/src/main/kotlin/com/cyder/android/syncpod/repository/RoomDataRepository.kt @@ -33,9 +33,9 @@ class RoomDataRepository @Inject constructor( return syncPodWsApi.exitRoom() } - override fun createNewRoom(name: String, description: String): Single { + override fun createNewRoom(name: String, description: String, isPublic: Boolean): Single { return createNewRoomValidation(name, description) - .andThen(syncPodApi.createNewRoom(token, CreateRoom(name, description))) + .andThen(syncPodApi.createNewRoom(token, CreateRoom(name, description, isPublic))) .map { it.room } .map { it.toModel() } .subscribeOn(Schedulers.computation()) diff --git a/app/src/main/kotlin/com/cyder/android/syncpod/repository/RoomRepository.kt b/app/src/main/kotlin/com/cyder/android/syncpod/repository/RoomRepository.kt index 5389587f..0382fd6b 100644 --- a/app/src/main/kotlin/com/cyder/android/syncpod/repository/RoomRepository.kt +++ b/app/src/main/kotlin/com/cyder/android/syncpod/repository/RoomRepository.kt @@ -11,7 +11,7 @@ import io.reactivex.Single */ interface RoomRepository { val isEntered: Flowable - fun createNewRoom(name: String, description: String): Single + fun createNewRoom(name: String, description: String, isPublic: Boolean): Single fun fetchJoinedRooms(): Single> fun fetch(roomKey: String): Single fun joinRoom(roomKey: String): Completable diff --git a/app/src/main/kotlin/com/cyder/android/syncpod/viewmodel/CreateRoomActivityViewModel.kt b/app/src/main/kotlin/com/cyder/android/syncpod/viewmodel/CreateRoomActivityViewModel.kt index 8d84e779..dc424051 100644 --- a/app/src/main/kotlin/com/cyder/android/syncpod/viewmodel/CreateRoomActivityViewModel.kt +++ b/app/src/main/kotlin/com/cyder/android/syncpod/viewmodel/CreateRoomActivityViewModel.kt @@ -37,7 +37,7 @@ class CreateRoomActivityViewModel @Inject constructor( fun onBackButtonClicked() = navigator.closeActivity() fun onSubmit() { - repository.createNewRoom(roomName.get() ?: "", roomDescription.get() ?: "") + repository.createNewRoom(roomName.get() ?: "", roomDescription.get() ?: "", false) .subscribe({ response -> repository.joinRoom(response.key) .subscribe({ From 774cb88e9f41a07c91e2bb12255373f3e3efbb48 Mon Sep 17 00:00:00 2001 From: Kazuki Chigita Date: Thu, 3 May 2018 18:53:27 +0900 Subject: [PATCH 02/19] [add] add feature that can post public room --- .../android/syncpod/api/mapper/RoomDataMapper.kt | 1 + .../com/cyder/android/syncpod/api/response/Room.kt | 1 + .../kotlin/com/cyder/android/syncpod/model/Room.kt | 1 + .../com/cyder/android/syncpod/util/CustomBinder.kt | 13 ++++++++++--- .../viewmodel/CreateRoomActivityViewModel.kt | 8 +++++++- app/src/main/res/layout/activity_create_room.xml | 8 ++++++++ app/src/main/res/values/strings.xml | 1 + 7 files changed, 29 insertions(+), 4 deletions(-) diff --git a/app/src/main/kotlin/com/cyder/android/syncpod/api/mapper/RoomDataMapper.kt b/app/src/main/kotlin/com/cyder/android/syncpod/api/mapper/RoomDataMapper.kt index 381865fd..3ac14158 100644 --- a/app/src/main/kotlin/com/cyder/android/syncpod/api/mapper/RoomDataMapper.kt +++ b/app/src/main/kotlin/com/cyder/android/syncpod/api/mapper/RoomDataMapper.kt @@ -17,6 +17,7 @@ fun RoomResponse.toModel(): Room = this.name, this.description, this.key, + this.isPublic, this.nowPlayingVideo?.toModel(), this.lastPlayedVideo?.toModel(), this.onlineUsers?.toModel()) \ No newline at end of file diff --git a/app/src/main/kotlin/com/cyder/android/syncpod/api/response/Room.kt b/app/src/main/kotlin/com/cyder/android/syncpod/api/response/Room.kt index cb5a748b..5139c489 100644 --- a/app/src/main/kotlin/com/cyder/android/syncpod/api/response/Room.kt +++ b/app/src/main/kotlin/com/cyder/android/syncpod/api/response/Room.kt @@ -11,6 +11,7 @@ data class Room( val name: String, val description: String, val key: String, + @SerializedName("public") val isPublic: Boolean, @SerializedName("now_playing_video") val nowPlayingVideo: Video?, @SerializedName("last_played_video") val lastPlayedVideo: Video?, @SerializedName("online_users") val onlineUsers: List? diff --git a/app/src/main/kotlin/com/cyder/android/syncpod/model/Room.kt b/app/src/main/kotlin/com/cyder/android/syncpod/model/Room.kt index 9b61e7e2..f0ea2ab4 100644 --- a/app/src/main/kotlin/com/cyder/android/syncpod/model/Room.kt +++ b/app/src/main/kotlin/com/cyder/android/syncpod/model/Room.kt @@ -9,6 +9,7 @@ data class Room( val name: String, val description: String, val key: String, + val isPublic: Boolean, val nowPlayingVideo: Video?, val lastPlayedVideo: Video?, val onlineUsers: List? diff --git a/app/src/main/kotlin/com/cyder/android/syncpod/util/CustomBinder.kt b/app/src/main/kotlin/com/cyder/android/syncpod/util/CustomBinder.kt index 5e9ee023..75b74192 100644 --- a/app/src/main/kotlin/com/cyder/android/syncpod/util/CustomBinder.kt +++ b/app/src/main/kotlin/com/cyder/android/syncpod/util/CustomBinder.kt @@ -3,15 +3,17 @@ package com.cyder.android.syncpod.util import android.databinding.BindingAdapter import android.support.v7.widget.LinearLayoutManager import android.support.v7.widget.RecyclerView +import android.support.v7.widget.SwitchCompat import android.support.v7.widget.Toolbar import android.text.method.LinkMovementMethod import android.view.View +import android.view.animation.AccelerateDecelerateInterpolator +import android.view.animation.Animation +import android.widget.CompoundButton import android.widget.EditText import android.widget.ImageView import android.widget.TextView import com.bumptech.glide.Glide -import android.view.animation.AccelerateDecelerateInterpolator -import android.view.animation.Animation import com.cyder.android.syncpod.view.helper.ResizeAnimation import com.cyder.android.syncpod.view.helper.dpToPx import com.cyder.android.syncpod.view.helper.hideSoftwareKeyBoard @@ -102,4 +104,9 @@ fun View.hideSoftwareKeyboard(flag: Boolean) { if (flag) { hideSoftwareKeyBoard() } -} \ No newline at end of file +} + +@BindingAdapter("isChecked") +fun SwitchCompat.setCheck(listener: CompoundButton.OnCheckedChangeListener) { + setOnCheckedChangeListener(listener) +} diff --git a/app/src/main/kotlin/com/cyder/android/syncpod/viewmodel/CreateRoomActivityViewModel.kt b/app/src/main/kotlin/com/cyder/android/syncpod/viewmodel/CreateRoomActivityViewModel.kt index dc424051..b48b6ff4 100644 --- a/app/src/main/kotlin/com/cyder/android/syncpod/viewmodel/CreateRoomActivityViewModel.kt +++ b/app/src/main/kotlin/com/cyder/android/syncpod/viewmodel/CreateRoomActivityViewModel.kt @@ -1,6 +1,7 @@ package com.cyder.android.syncpod.viewmodel import android.databinding.ObservableField +import android.util.Log import com.cyder.android.syncpod.R import com.cyder.android.syncpod.repository.RoomRepository import com.cyder.android.syncpod.util.NotFilledFormsException @@ -17,6 +18,7 @@ class CreateRoomActivityViewModel @Inject constructor( ) : ActivityViewModel() { var roomName: ObservableField = ObservableField() var roomDescription: ObservableField = ObservableField() + var isPublic: ObservableField = ObservableField() var callback: SnackbarCallback? = null override fun onStart() { @@ -36,8 +38,12 @@ class CreateRoomActivityViewModel @Inject constructor( fun onBackButtonClicked() = navigator.closeActivity() + fun onChecked(isChecked: Boolean){ + isPublic.set(isChecked) + } + fun onSubmit() { - repository.createNewRoom(roomName.get() ?: "", roomDescription.get() ?: "", false) + repository.createNewRoom(roomName.get() ?: "", roomDescription.get() ?: "", isPublic.get() ?: false) .subscribe({ response -> repository.joinRoom(response.key) .subscribe({ diff --git a/app/src/main/res/layout/activity_create_room.xml b/app/src/main/res/layout/activity_create_room.xml index bcaef97b..7b020785 100644 --- a/app/src/main/res/layout/activity_create_room.xml +++ b/app/src/main/res/layout/activity_create_room.xml @@ -60,6 +60,14 @@ android:inputType="textMultiLine" android:text="@={viewModel.roomDescription}" /> + + +