Toggle ip address on sessions overview screen.
This commit is contained in:
parent
b5e8375592
commit
0868869fe3
@ -76,6 +76,7 @@ class SessionInfoView @JvmOverloads constructor(
|
|||||||
sessionInfoViewState.deviceFullInfo.isInactive,
|
sessionInfoViewState.deviceFullInfo.isInactive,
|
||||||
sessionInfoViewState.deviceFullInfo.deviceInfo,
|
sessionInfoViewState.deviceFullInfo.deviceInfo,
|
||||||
sessionInfoViewState.isLastSeenDetailsVisible,
|
sessionInfoViewState.isLastSeenDetailsVisible,
|
||||||
|
sessionInfoViewState.isShowingIpAddress,
|
||||||
dateFormatter,
|
dateFormatter,
|
||||||
drawableProvider,
|
drawableProvider,
|
||||||
colorProvider,
|
colorProvider,
|
||||||
@ -157,6 +158,7 @@ class SessionInfoView @JvmOverloads constructor(
|
|||||||
isInactive: Boolean,
|
isInactive: Boolean,
|
||||||
deviceInfo: DeviceInfo,
|
deviceInfo: DeviceInfo,
|
||||||
isLastSeenDetailsVisible: Boolean,
|
isLastSeenDetailsVisible: Boolean,
|
||||||
|
isShowingIpAddress: Boolean,
|
||||||
dateFormatter: VectorDateFormatter,
|
dateFormatter: VectorDateFormatter,
|
||||||
drawableProvider: DrawableProvider,
|
drawableProvider: DrawableProvider,
|
||||||
colorProvider: ColorProvider,
|
colorProvider: ColorProvider,
|
||||||
@ -187,6 +189,7 @@ class SessionInfoView @JvmOverloads constructor(
|
|||||||
views.sessionInfoLastActivityTextView.isGone = true
|
views.sessionInfoLastActivityTextView.isGone = true
|
||||||
}
|
}
|
||||||
views.sessionInfoLastIPAddressTextView.setTextOrHide(deviceInfo.lastSeenIp?.takeIf { isLastSeenDetailsVisible })
|
views.sessionInfoLastIPAddressTextView.setTextOrHide(deviceInfo.lastSeenIp?.takeIf { isLastSeenDetailsVisible })
|
||||||
|
views.sessionInfoLastIPAddressTextView.isVisible = isShowingIpAddress
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun renderDetailsButton(isDetailsButtonVisible: Boolean) {
|
private fun renderDetailsButton(isDetailsButtonVisible: Boolean) {
|
||||||
|
@ -25,4 +25,5 @@ data class SessionInfoViewState(
|
|||||||
val isDetailsButtonVisible: Boolean = true,
|
val isDetailsButtonVisible: Boolean = true,
|
||||||
val isLearnMoreLinkVisible: Boolean = false,
|
val isLearnMoreLinkVisible: Boolean = false,
|
||||||
val isLastSeenDetailsVisible: Boolean = false,
|
val isLastSeenDetailsVisible: Boolean = false,
|
||||||
|
val isShowingIpAddress: Boolean = false,
|
||||||
)
|
)
|
||||||
|
@ -29,4 +29,5 @@ sealed class SessionOverviewAction : VectorViewModelAction {
|
|||||||
val deviceId: String,
|
val deviceId: String,
|
||||||
val enabled: Boolean,
|
val enabled: Boolean,
|
||||||
) : SessionOverviewAction()
|
) : SessionOverviewAction()
|
||||||
|
object ToggleIpAddressVisibility : SessionOverviewAction()
|
||||||
}
|
}
|
||||||
|
@ -19,6 +19,7 @@ package im.vector.app.features.settings.devices.v2.overview
|
|||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
|
import android.view.Menu
|
||||||
import android.view.MenuItem
|
import android.view.MenuItem
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
@ -156,16 +157,34 @@ class SessionOverviewFragment :
|
|||||||
|
|
||||||
override fun getMenuRes() = R.menu.menu_session_overview
|
override fun getMenuRes() = R.menu.menu_session_overview
|
||||||
|
|
||||||
|
override fun handlePrepareMenu(menu: Menu) {
|
||||||
|
withState(viewModel) { state ->
|
||||||
|
menu.findItem(R.id.sessionOverviewToggleIpAddress).title = if (state.isShowingIpAddress) {
|
||||||
|
getString(R.string.device_manager_other_sessions_hide_ip_address)
|
||||||
|
} else {
|
||||||
|
getString(R.string.device_manager_other_sessions_show_ip_address)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override fun handleMenuItemSelected(item: MenuItem): Boolean {
|
override fun handleMenuItemSelected(item: MenuItem): Boolean {
|
||||||
return when (item.itemId) {
|
return when (item.itemId) {
|
||||||
R.id.sessionOverviewRename -> {
|
R.id.sessionOverviewRename -> {
|
||||||
goToRenameSession()
|
goToRenameSession()
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
|
R.id.sessionOverviewToggleIpAddress -> {
|
||||||
|
toggleIpAddressVisibility()
|
||||||
|
true
|
||||||
|
}
|
||||||
else -> false
|
else -> false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun toggleIpAddressVisibility() {
|
||||||
|
viewModel.handle(SessionOverviewAction.ToggleIpAddressVisibility)
|
||||||
|
}
|
||||||
|
|
||||||
private fun goToRenameSession() = withState(viewModel) { state ->
|
private fun goToRenameSession() = withState(viewModel) { state ->
|
||||||
viewNavigator.goToRenameSession(requireContext(), state.deviceId)
|
viewNavigator.goToRenameSession(requireContext(), state.deviceId)
|
||||||
}
|
}
|
||||||
@ -206,6 +225,7 @@ class SessionOverviewFragment :
|
|||||||
isDetailsButtonVisible = false,
|
isDetailsButtonVisible = false,
|
||||||
isLearnMoreLinkVisible = deviceInfo.roomEncryptionTrustLevel != RoomEncryptionTrustLevel.Default,
|
isLearnMoreLinkVisible = deviceInfo.roomEncryptionTrustLevel != RoomEncryptionTrustLevel.Default,
|
||||||
isLastSeenDetailsVisible = !isCurrentSession,
|
isLastSeenDetailsVisible = !isCurrentSession,
|
||||||
|
isShowingIpAddress = viewState.isShowingIpAddress,
|
||||||
)
|
)
|
||||||
views.sessionOverviewInfo.render(infoViewState, dateFormatter, drawableProvider, colorProvider, stringProvider)
|
views.sessionOverviewInfo.render(infoViewState, dateFormatter, drawableProvider, colorProvider, stringProvider)
|
||||||
views.sessionOverviewInfo.onLearnMoreClickListener = {
|
views.sessionOverviewInfo.onLearnMoreClickListener = {
|
||||||
|
@ -113,6 +113,14 @@ class SessionOverviewViewModel @AssistedInject constructor(
|
|||||||
is SessionOverviewAction.PasswordAuthDone -> handlePasswordAuthDone(action)
|
is SessionOverviewAction.PasswordAuthDone -> handlePasswordAuthDone(action)
|
||||||
SessionOverviewAction.ReAuthCancelled -> handleReAuthCancelled()
|
SessionOverviewAction.ReAuthCancelled -> handleReAuthCancelled()
|
||||||
is SessionOverviewAction.TogglePushNotifications -> handleTogglePusherAction(action)
|
is SessionOverviewAction.TogglePushNotifications -> handleTogglePusherAction(action)
|
||||||
|
SessionOverviewAction.ToggleIpAddressVisibility -> handleToggleIpAddressVisibility()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun handleToggleIpAddressVisibility() = withState { state ->
|
||||||
|
val isShowingIpAddress = state.isShowingIpAddress
|
||||||
|
setState {
|
||||||
|
copy(isShowingIpAddress = !isShowingIpAddress)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28,6 +28,7 @@ data class SessionOverviewViewState(
|
|||||||
val deviceInfo: Async<DeviceFullInfo> = Uninitialized,
|
val deviceInfo: Async<DeviceFullInfo> = Uninitialized,
|
||||||
val isLoading: Boolean = false,
|
val isLoading: Boolean = false,
|
||||||
val notificationsStatus: NotificationsStatus = NotificationsStatus.NOT_SUPPORTED,
|
val notificationsStatus: NotificationsStatus = NotificationsStatus.NOT_SUPPORTED,
|
||||||
|
val isShowingIpAddress: Boolean = false,
|
||||||
) : MavericksState {
|
) : MavericksState {
|
||||||
constructor(args: SessionOverviewArgs) : this(
|
constructor(args: SessionOverviewArgs) : this(
|
||||||
deviceId = args.deviceId
|
deviceId = args.deviceId
|
||||||
|
@ -4,6 +4,11 @@
|
|||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
tools:ignore="AlwaysShowAction">
|
tools:ignore="AlwaysShowAction">
|
||||||
|
|
||||||
|
<item
|
||||||
|
android:id="@+id/sessionOverviewToggleIpAddress"
|
||||||
|
android:title="@string/device_manager_other_sessions_show_ip_address"
|
||||||
|
app:showAsAction="withText|never" />
|
||||||
|
|
||||||
<item
|
<item
|
||||||
android:id="@+id/sessionOverviewRename"
|
android:id="@+id/sessionOverviewRename"
|
||||||
android:title="@string/device_manager_session_rename"
|
android:title="@string/device_manager_session_rename"
|
||||||
|
Loading…
Reference in New Issue
Block a user