Navigation from other session item
This commit is contained in:
parent
b626a1e4f9
commit
30710f7f15
|
@ -42,6 +42,7 @@ import im.vector.app.features.settings.devices.DevicesViewEvents
|
||||||
import im.vector.app.features.settings.devices.DevicesViewModel
|
import im.vector.app.features.settings.devices.DevicesViewModel
|
||||||
import im.vector.app.features.settings.devices.v2.list.SESSION_IS_MARKED_AS_INACTIVE_AFTER_DAYS
|
import im.vector.app.features.settings.devices.v2.list.SESSION_IS_MARKED_AS_INACTIVE_AFTER_DAYS
|
||||||
import im.vector.app.features.settings.devices.v2.list.SecurityRecommendationViewState
|
import im.vector.app.features.settings.devices.v2.list.SecurityRecommendationViewState
|
||||||
|
import im.vector.app.features.settings.devices.v2.list.OtherSessionsController
|
||||||
import im.vector.app.features.settings.devices.v2.list.SessionInfoViewState
|
import im.vector.app.features.settings.devices.v2.list.SessionInfoViewState
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
@ -76,6 +77,7 @@ class VectorSettingsDevicesFragment :
|
||||||
|
|
||||||
initLearnMoreButtons()
|
initLearnMoreButtons()
|
||||||
initWaitingView()
|
initWaitingView()
|
||||||
|
initOtherSessionsView()
|
||||||
observeViewEvents()
|
observeViewEvents()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -114,6 +116,14 @@ class VectorSettingsDevicesFragment :
|
||||||
views.waitingView.waitingStatusText.isVisible = true
|
views.waitingView.waitingStatusText.isVisible = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun initOtherSessionsView() {
|
||||||
|
views.deviceListOtherSessions.setCallback(object : OtherSessionsController.Callback {
|
||||||
|
override fun onItemClicked(deviceId: String) {
|
||||||
|
navigateToSessionOverview(deviceId)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
override fun onDestroyView() {
|
override fun onDestroyView() {
|
||||||
cleanUpLearnMoreButtonsListeners()
|
cleanUpLearnMoreButtonsListeners()
|
||||||
super.onDestroyView()
|
super.onDestroyView()
|
||||||
|
|
|
@ -22,8 +22,10 @@ import android.widget.TextView
|
||||||
import com.airbnb.epoxy.EpoxyAttribute
|
import com.airbnb.epoxy.EpoxyAttribute
|
||||||
import com.airbnb.epoxy.EpoxyModelClass
|
import com.airbnb.epoxy.EpoxyModelClass
|
||||||
import im.vector.app.R
|
import im.vector.app.R
|
||||||
|
import im.vector.app.core.epoxy.ClickListener
|
||||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||||
import im.vector.app.core.epoxy.VectorEpoxyModel
|
import im.vector.app.core.epoxy.VectorEpoxyModel
|
||||||
|
import im.vector.app.core.epoxy.onClick
|
||||||
import im.vector.app.core.resources.StringProvider
|
import im.vector.app.core.resources.StringProvider
|
||||||
import im.vector.app.core.ui.views.ShieldImageView
|
import im.vector.app.core.ui.views.ShieldImageView
|
||||||
import org.matrix.android.sdk.api.session.crypto.model.RoomEncryptionTrustLevel
|
import org.matrix.android.sdk.api.session.crypto.model.RoomEncryptionTrustLevel
|
||||||
|
@ -49,8 +51,16 @@ abstract class OtherSessionItem : VectorEpoxyModel<OtherSessionItem.Holder>(R.la
|
||||||
@EpoxyAttribute
|
@EpoxyAttribute
|
||||||
lateinit var stringProvider: StringProvider
|
lateinit var stringProvider: StringProvider
|
||||||
|
|
||||||
|
@EpoxyAttribute(EpoxyAttribute.Option.DoNotHash)
|
||||||
|
var clickListener: ClickListener? = null
|
||||||
|
|
||||||
override fun bind(holder: Holder) {
|
override fun bind(holder: Holder) {
|
||||||
super.bind(holder)
|
super.bind(holder)
|
||||||
|
holder.view.onClick(clickListener)
|
||||||
|
if (clickListener == null) {
|
||||||
|
holder.view.isClickable = false
|
||||||
|
}
|
||||||
|
|
||||||
when (deviceType) {
|
when (deviceType) {
|
||||||
DeviceType.MOBILE -> {
|
DeviceType.MOBILE -> {
|
||||||
holder.otherSessionDeviceTypeImageView.setImageResource(R.drawable.ic_device_type_mobile)
|
holder.otherSessionDeviceTypeImageView.setImageResource(R.drawable.ic_device_type_mobile)
|
||||||
|
|
|
@ -35,6 +35,12 @@ class OtherSessionsController @Inject constructor(
|
||||||
private val colorProvider: ColorProvider,
|
private val colorProvider: ColorProvider,
|
||||||
) : TypedEpoxyController<List<DeviceFullInfo>>() {
|
) : TypedEpoxyController<List<DeviceFullInfo>>() {
|
||||||
|
|
||||||
|
var callback: Callback? = null
|
||||||
|
|
||||||
|
interface Callback {
|
||||||
|
fun onItemClicked(deviceId: String)
|
||||||
|
}
|
||||||
|
|
||||||
override fun buildModels(data: List<DeviceFullInfo>?) {
|
override fun buildModels(data: List<DeviceFullInfo>?) {
|
||||||
val host = this
|
val host = this
|
||||||
|
|
||||||
|
@ -70,6 +76,7 @@ class OtherSessionsController @Inject constructor(
|
||||||
sessionDescription(description)
|
sessionDescription(description)
|
||||||
sessionDescriptionDrawable(descriptionDrawable)
|
sessionDescriptionDrawable(descriptionDrawable)
|
||||||
stringProvider(this@OtherSessionsController.stringProvider)
|
stringProvider(this@OtherSessionsController.stringProvider)
|
||||||
|
clickListener { device.deviceInfo.deviceId?.let { host.callback?.onItemClicked(it) } }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,7 +49,12 @@ class OtherSessionsView @JvmOverloads constructor(
|
||||||
otherSessionsController.setData(devices)
|
otherSessionsController.setData(devices)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun setCallback(callback: OtherSessionsController.Callback) {
|
||||||
|
otherSessionsController.callback = callback
|
||||||
|
}
|
||||||
|
|
||||||
override fun onDetachedFromWindow() {
|
override fun onDetachedFromWindow() {
|
||||||
|
otherSessionsController.callback = null
|
||||||
views.otherSessionsRecyclerView.cleanup()
|
views.otherSessionsRecyclerView.cleanup()
|
||||||
super.onDetachedFromWindow()
|
super.onDetachedFromWindow()
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:foreground="?selectableItemBackground"
|
||||||
android:paddingTop="16dp">
|
android:paddingTop="16dp">
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
|
|
Loading…
Reference in New Issue