Handling press on multi signout action from header menu in other sessions section
This commit is contained in:
parent
ae4a728358
commit
810c93cef9
|
@ -22,4 +22,5 @@ import org.matrix.android.sdk.api.session.crypto.model.CryptoDeviceInfo
|
|||
sealed class DevicesAction : VectorViewModelAction {
|
||||
object VerifyCurrentSession : DevicesAction()
|
||||
data class MarkAsManuallyVerified(val cryptoDeviceInfo: CryptoDeviceInfo) : DevicesAction()
|
||||
object MultiSignoutOtherSessions : DevicesAction()
|
||||
}
|
||||
|
|
|
@ -95,10 +95,12 @@ class DevicesViewModel @AssistedInject constructor(
|
|||
}
|
||||
}
|
||||
|
||||
// TODO update unit tests
|
||||
override fun handle(action: DevicesAction) {
|
||||
when (action) {
|
||||
is DevicesAction.VerifyCurrentSession -> handleVerifyCurrentSessionAction()
|
||||
is DevicesAction.MarkAsManuallyVerified -> handleMarkAsManuallyVerifiedAction()
|
||||
DevicesAction.MultiSignoutOtherSessions -> handleMultiSignoutOtherSessions()
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -116,4 +118,8 @@ class DevicesViewModel @AssistedInject constructor(
|
|||
private fun handleMarkAsManuallyVerifiedAction() {
|
||||
// TODO implement when needed
|
||||
}
|
||||
|
||||
private fun handleMultiSignoutOtherSessions() {
|
||||
// TODO call multi signout use case with all other devices than the current one
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,9 +19,11 @@ package im.vector.app.features.settings.devices.v2
|
|||
import android.content.Context
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.MenuItem
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.appcompat.widget.ActionMenuView.OnMenuItemClickListener
|
||||
import androidx.core.view.isVisible
|
||||
import com.airbnb.mvrx.Success
|
||||
import com.airbnb.mvrx.fragmentViewModel
|
||||
|
@ -48,6 +50,7 @@ import im.vector.app.features.settings.devices.v2.list.SESSION_IS_MARKED_AS_INAC
|
|||
import im.vector.app.features.settings.devices.v2.list.SecurityRecommendationView
|
||||
import im.vector.app.features.settings.devices.v2.list.SecurityRecommendationViewState
|
||||
import im.vector.app.features.settings.devices.v2.list.SessionInfoViewState
|
||||
import im.vector.app.features.settings.devices.v2.othersessions.OtherSessionsAction
|
||||
import org.matrix.android.sdk.api.session.crypto.model.RoomEncryptionTrustLevel
|
||||
import javax.inject.Inject
|
||||
|
||||
|
@ -136,6 +139,15 @@ class VectorSettingsDevicesFragment :
|
|||
private fun initOtherSessionsHeaderView() {
|
||||
val color = colorProvider.getColorFromAttribute(R.attr.colorError)
|
||||
views.deviceListHeaderOtherSessions.menu.findItem(R.id.otherSessionsHeaderMultiSignout).setTextColor(color)
|
||||
views.deviceListHeaderOtherSessions.setOnMenuItemClickListener { menuItem ->
|
||||
when(menuItem.itemId) {
|
||||
R.id.otherSessionsHeaderMultiSignout -> {
|
||||
viewModel.handle(DevicesAction.MultiSignoutOtherSessions)
|
||||
true
|
||||
}
|
||||
else -> false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun initOtherSessionsView() {
|
||||
|
|
|
@ -23,6 +23,7 @@ import android.view.LayoutInflater
|
|||
import android.view.Menu
|
||||
import android.view.MenuInflater
|
||||
import androidx.appcompat.view.menu.MenuBuilder
|
||||
import androidx.appcompat.widget.ActionMenuView.OnMenuItemClickListener
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import androidx.core.content.res.use
|
||||
import androidx.core.view.isVisible
|
||||
|
@ -106,4 +107,8 @@ class SessionsListHeaderView @JvmOverloads constructor(
|
|||
menuBuilder?.let { MenuInflater(context).inflate(menuResId, it) }
|
||||
}
|
||||
}
|
||||
|
||||
fun setOnMenuItemClickListener(listener: OnMenuItemClickListener) {
|
||||
binding.sessionsListHeaderMenu.setOnMenuItemClickListener(listener)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue