Handling press on multi signout action from header menu in other sessions section

This commit is contained in:
Maxime NATUREL 2022-10-20 17:41:47 +02:00
parent ae4a728358
commit 810c93cef9
4 changed files with 24 additions and 0 deletions

View File

@ -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()
}

View File

@ -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
}
}

View File

@ -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() {

View File

@ -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)
}
}