ui: do not return to detail page when restoring state

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
This commit is contained in:
Jason A. Donenfeld 2023-04-02 15:35:39 +02:00
parent 46bf98d7f6
commit 5e844bed5e

View File

@ -17,14 +17,17 @@ import kotlinx.coroutines.launch
*/ */
abstract class BaseActivity : ThemeChangeAwareActivity() { abstract class BaseActivity : ThemeChangeAwareActivity() {
private val selectionChangeRegistry = SelectionChangeRegistry() private val selectionChangeRegistry = SelectionChangeRegistry()
private var created = false
var selectedTunnel: ObservableTunnel? = null var selectedTunnel: ObservableTunnel? = null
set(value) { set(value) {
val oldTunnel = field val oldTunnel = field
if (oldTunnel == value) return if (oldTunnel == value) return
field = value field = value
if (created) {
onSelectedTunnelChanged(oldTunnel, value) onSelectedTunnelChanged(oldTunnel, value)
selectionChangeRegistry.notifyCallbacks(oldTunnel, 0, value) selectionChangeRegistry.notifyCallbacks(oldTunnel, 0, value)
} }
}
fun addOnSelectedTunnelChangedListener(listener: OnSelectedTunnelChangedListener) { fun addOnSelectedTunnelChangedListener(listener: OnSelectedTunnelChangedListener) {
selectionChangeRegistry.add(listener) selectionChangeRegistry.add(listener)
@ -39,9 +42,16 @@ abstract class BaseActivity : ThemeChangeAwareActivity() {
intent != null -> intent.getStringExtra(KEY_SELECTED_TUNNEL) intent != null -> intent.getStringExtra(KEY_SELECTED_TUNNEL)
else -> null else -> null
} }
if (savedTunnelName != null) if (savedTunnelName != null) {
lifecycleScope.launch { lifecycleScope.launch {
selectedTunnel = Application.getTunnelManager().getTunnels()[savedTunnelName] val tunnel = Application.getTunnelManager().getTunnels()[savedTunnelName]
if (tunnel == null)
created = true
selectedTunnel = tunnel
created = true
}
} else {
created = true
} }
} }