Plug screens together

This commit is contained in:
Benoit Marty 2019-05-27 17:28:18 +02:00
parent 02a81dd9e1
commit dde94c0d0f
12 changed files with 49 additions and 37 deletions

View File

@ -296,8 +296,8 @@ abstract class VectorBaseActivity : BaseMvRxActivity() {
* Temporary method * Temporary method
* ========================================================================================== */ * ========================================================================================== */


fun notImplemented() { fun notImplemented(message: String = "") {
toast(getString(R.string.not_implemented)) toast(getString(R.string.not_implemented) + message.takeIf { message.isNotBlank() }.run { ": $message" })
} }


} }

View File

@ -123,12 +123,6 @@ class HomeActivity : VectorBaseActivity(), ToolbarConfigurable {
SignOutUiWorker(this).perform(Matrix.getInstance().currentSession!!) SignOutUiWorker(this).perform(Matrix.getInstance().currentSession!!)
return true return true
} }
// TODO Temporary code here to create a room
R.id.tmp_menu_create_room -> {
// Start Activity for now
startActivity(Intent(this, RoomDirectoryActivity::class.java))
return true
}
} }


return true return true

View File

@ -24,6 +24,7 @@ import com.airbnb.mvrx.ViewModelContext
import im.vector.matrix.android.api.session.Session import im.vector.matrix.android.api.session.Session
import im.vector.matrix.android.api.session.group.model.GroupSummary import im.vector.matrix.android.api.session.group.model.GroupSummary
import im.vector.matrix.rx.rx import im.vector.matrix.rx.rx
import im.vector.riotredesign.R
import im.vector.riotredesign.core.platform.VectorViewModel import im.vector.riotredesign.core.platform.VectorViewModel
import im.vector.riotredesign.core.resources.StringProvider import im.vector.riotredesign.core.resources.StringProvider
import im.vector.riotredesign.core.utils.LiveEvent import im.vector.riotredesign.core.utils.LiveEvent
@ -88,8 +89,7 @@ class GroupListViewModel(initialState: GroupListViewState,
val myUser = session.getUser(session.sessionParams.credentials.userId) val myUser = session.getUser(session.sessionParams.credentials.userId)
val allCommunityGroup = GroupSummary( val allCommunityGroup = GroupSummary(
groupId = ALL_COMMUNITIES_GROUP_ID, groupId = ALL_COMMUNITIES_GROUP_ID,
// TODO i18n displayName = stringProvider.getString(R.string.group_all_communities),
displayName = "All Communities",
avatarUrl = myUser?.avatarUrl ?: "") avatarUrl = myUser?.avatarUrl ?: "")
listOf(allCommunityGroup) + it listOf(allCommunityGroup) + it
} }

View File

@ -16,15 +16,12 @@


package im.vector.riotredesign.features.home.room.list package im.vector.riotredesign.features.home.room.list


import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.os.Parcelable import android.os.Parcelable
import androidx.annotation.StringRes import androidx.annotation.StringRes
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import com.airbnb.mvrx.Fail import com.airbnb.mvrx.*
import com.airbnb.mvrx.Incomplete
import com.airbnb.mvrx.Success
import com.airbnb.mvrx.args
import com.airbnb.mvrx.fragmentViewModel
import im.vector.matrix.android.api.failure.Failure import im.vector.matrix.android.api.failure.Failure
import im.vector.matrix.android.api.session.room.model.RoomSummary import im.vector.matrix.android.api.session.room.model.RoomSummary
import im.vector.riotredesign.R import im.vector.riotredesign.R
@ -32,13 +29,11 @@ import im.vector.riotredesign.core.epoxy.LayoutManagerStateRestorer
import im.vector.riotredesign.core.extensions.observeEvent import im.vector.riotredesign.core.extensions.observeEvent
import im.vector.riotredesign.core.platform.StateView import im.vector.riotredesign.core.platform.StateView
import im.vector.riotredesign.core.platform.VectorBaseFragment import im.vector.riotredesign.core.platform.VectorBaseFragment
import im.vector.riotredesign.features.home.HomeModule
import im.vector.riotredesign.features.home.HomeNavigator import im.vector.riotredesign.features.home.HomeNavigator
import im.vector.riotredesign.features.roomdirectory.RoomDirectoryActivity
import kotlinx.android.parcel.Parcelize import kotlinx.android.parcel.Parcelize
import kotlinx.android.synthetic.main.fragment_room_list.* import kotlinx.android.synthetic.main.fragment_room_list.*
import org.koin.android.ext.android.inject import org.koin.android.ext.android.inject
import org.koin.android.scope.ext.android.bindScope
import org.koin.android.scope.ext.android.getOrCreateScope


@Parcelize @Parcelize
data class RoomListParams( data class RoomListParams(
@ -82,7 +77,8 @@ class RoomListFragment : VectorBaseFragment(), RoomSummaryController.Callback {
private fun setupCreateRoomButton() { private fun setupCreateRoomButton() {
createRoomButton.setImageResource(R.drawable.ic_add_white) createRoomButton.setImageResource(R.drawable.ic_add_white)
createRoomButton.setOnClickListener { createRoomButton.setOnClickListener {
vectorBaseActivity.notImplemented() // Start Activity for now
startActivity(Intent(requireActivity(), RoomDirectoryActivity::class.java))
} }
} }



View File

@ -83,23 +83,27 @@ class PublicRoomsController(private val stringProvider: StringProvider,
avatarUrl(publicRoom.avatarUrl) avatarUrl(publicRoom.avatarUrl)
roomName(publicRoom.name) roomName(publicRoom.name)
nbOfMembers(publicRoom.numJoinedMembers) nbOfMembers(publicRoom.numJoinedMembers)
when {
viewState.joinedRoomsIds.contains(publicRoom.roomId) -> joinState(PublicRoomItem.JoinState.JOINED) val joinState = when {
viewState.joiningRoomsIds.contains(publicRoom.roomId) -> joinState(PublicRoomItem.JoinState.JOINING) viewState.joinedRoomsIds.contains(publicRoom.roomId) -> PublicRoomItem.JoinState.JOINED
viewState.joiningErrorRoomsIds.contains(publicRoom.roomId) -> joinState(PublicRoomItem.JoinState.JOINING_ERROR) viewState.joiningRoomsIds.contains(publicRoom.roomId) -> PublicRoomItem.JoinState.JOINING
else -> joinState(PublicRoomItem.JoinState.NOT_JOINED) viewState.joiningErrorRoomsIds.contains(publicRoom.roomId) -> PublicRoomItem.JoinState.JOINING_ERROR
else -> PublicRoomItem.JoinState.NOT_JOINED
} }

joinState(joinState)

joinListener { joinListener {
callback?.onPublicRoomJoin(publicRoom) callback?.onPublicRoomJoin(publicRoom)
} }
globalListener { globalListener {
callback?.onPublicRoomClicked(publicRoom) callback?.onPublicRoomClicked(publicRoom, joinState)
} }
} }
} }


interface Callback { interface Callback {
fun onPublicRoomClicked(publicRoom: PublicRoom) fun onPublicRoomClicked(publicRoom: PublicRoom, joinState: PublicRoomItem.JoinState)
fun onPublicRoomJoin(publicRoom: PublicRoom) fun onPublicRoomJoin(publicRoom: PublicRoom)
fun loadMore() fun loadMore()
} }

View File

@ -30,6 +30,8 @@ import im.vector.riotredesign.R
import im.vector.riotredesign.core.error.ErrorFormatter import im.vector.riotredesign.core.error.ErrorFormatter
import im.vector.riotredesign.core.extensions.addFragmentToBackstack import im.vector.riotredesign.core.extensions.addFragmentToBackstack
import im.vector.riotredesign.core.platform.VectorBaseFragment import im.vector.riotredesign.core.platform.VectorBaseFragment
import im.vector.riotredesign.features.home.room.detail.RoomDetailActivity
import im.vector.riotredesign.features.home.room.detail.RoomDetailArgs
import im.vector.riotredesign.features.roomdirectory.picker.RoomDirectoryPickerFragment import im.vector.riotredesign.features.roomdirectory.picker.RoomDirectoryPickerFragment
import io.reactivex.rxkotlin.subscribeBy import io.reactivex.rxkotlin.subscribeBy
import kotlinx.android.synthetic.main.fragment_public_rooms.* import kotlinx.android.synthetic.main.fragment_public_rooms.*
@ -114,9 +116,25 @@ class PublicRoomsFragment : VectorBaseFragment(), PublicRoomsController.Callback
publicRoomsList.setController(publicRoomsController) publicRoomsList.setController(publicRoomsController)
} }


override fun onPublicRoomClicked(publicRoom: PublicRoom) { override fun onPublicRoomClicked(publicRoom: PublicRoom, joinState: PublicRoomItem.JoinState) {
Timber.v("PublicRoomClicked: $publicRoom") Timber.v("PublicRoomClicked: $publicRoom")
vectorBaseActivity.notImplemented()
when (joinState) {
PublicRoomItem.JoinState.JOINED -> {
val args = RoomDetailArgs(publicRoom.roomId)
val roomDetailIntent = RoomDetailActivity.newIntent(requireActivity(), args)
requireActivity().startActivity(roomDetailIntent)
}
PublicRoomItem.JoinState.NOT_JOINED,
PublicRoomItem.JoinState.JOINING_ERROR -> {
// ROOM PREVIEW
vectorBaseActivity.notImplemented("Opening room preview")
}
else -> {
Snackbar.make(publicRoomsCoordinator, getString(R.string.please_wait), Snackbar.LENGTH_SHORT)
.show()
}
}
} }


override fun onPublicRoomJoin(publicRoom: PublicRoom) { override fun onPublicRoomJoin(publicRoom: PublicRoom) {

View File

@ -88,7 +88,7 @@ class RoomDirectoryPickerController(private val stringProvider: StringProvider,
} }


interface Callback { interface Callback {
fun onRoomDirectoryClicked(roomDirectory: RoomDirectoryData) fun onRoomDirectoryClicked(roomDirectoryData: RoomDirectoryData)
fun retry() fun retry()
} }



View File

@ -57,9 +57,9 @@
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="?attr/colorPrimary" android:background="?attr/colorPrimary"
app:labelVisibilityMode="unlabeled"
app:itemIconTint="@android:color/white" app:itemIconTint="@android:color/white"
app:itemTextColor="@color/home_bottom_nav_view_tint" app:itemTextColor="@color/home_bottom_nav_view_tint"
app:labelVisibilityMode="unlabeled"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"

View File

@ -149,7 +149,6 @@
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/roomToolbar" app:layout_constraintTop_toBottomOf="@+id/roomToolbar"
app:layout_constraintVertical_bias="1.0"
tools:visibility="visible" /> tools:visibility="visible" />


</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -40,7 +40,7 @@
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/inviteNameView" app:layout_constraintTop_toBottomOf="@id/inviteNameView"
tools:text="\@matthew:matrix.org" /> tools:text=" @matthew:matrix.org" />


<TextView <TextView
android:id="@+id/inviteLabelView" android:id="@+id/inviteLabelView"
@ -55,11 +55,13 @@


<Button <Button
android:id="@+id/inviteRejectView" android:id="@+id/inviteRejectView"
style="@style/VectorButtonStyleFlat"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="16dp" android:layout_marginTop="16dp"
android:layout_marginEnd="4dp" android:layout_marginEnd="4dp"
android:layout_marginRight="4dp" android:layout_marginRight="4dp"
android:minWidth="120dp"
android:text="@string/reject" android:text="@string/reject"
app:layout_constraintEnd_toStartOf="@+id/inviteAcceptView" app:layout_constraintEnd_toStartOf="@+id/inviteAcceptView"
app:layout_constraintHorizontal_chainStyle="packed" app:layout_constraintHorizontal_chainStyle="packed"
@ -68,10 +70,12 @@


<Button <Button
android:id="@+id/inviteAcceptView" android:id="@+id/inviteAcceptView"
style="@style/VectorButtonStyle"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="4dp" android:layout_marginStart="4dp"
android:layout_marginLeft="4dp" android:layout_marginLeft="4dp"
android:minWidth="120dp"
android:text="@string/accept" android:text="@string/accept"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_chainStyle="packed" app:layout_constraintHorizontal_chainStyle="packed"

View File

@ -6,9 +6,4 @@
android:icon="@drawable/ic_material_exit_to_app" android:icon="@drawable/ic_material_exit_to_app"
android:title="@string/action_sign_out" /> android:title="@string/action_sign_out" />


<!-- TODO Temporary code -->
<item
android:id="@+id/tmp_menu_create_room"
android:title="@string/room_recents_create_room" />

</menu> </menu>

View File

@ -27,5 +27,7 @@
<string name="error_no_network">No network. Please check your Internet connection.</string> <string name="error_no_network">No network. Please check your Internet connection.</string>


<string name="action_change">"Change"</string> <string name="action_change">"Change"</string>
<string name="please_wait">"Please wait…"</string>
<string name="group_all_communities">"All Communities"</string>


</resources> </resources>