@@ -27,6 +27,7 @@ import im.vector.app.core.resources.StringProvider
27
27
import im.vector.app.features.auth.PendingAuthHandler
28
28
import im.vector.app.features.login.ReAuthHelper
29
29
import kotlinx.coroutines.Dispatchers
30
+ import kotlinx.coroutines.Job
30
31
import kotlinx.coroutines.flow.launchIn
31
32
import kotlinx.coroutines.flow.onEach
32
33
import kotlinx.coroutines.launch
@@ -52,6 +53,8 @@ class CrossSigningSettingsViewModel @AssistedInject constructor(
52
53
private val pendingAuthHandler : PendingAuthHandler ,
53
54
) : VectorViewModel<CrossSigningSettingsViewState, CrossSigningSettingsAction, CrossSigningSettingsViewEvents>(initialState) {
54
55
56
+ private var observeCrossSigningJob: Job ? = null
57
+
55
58
init {
56
59
observeCrossSigning()
57
60
}
@@ -90,6 +93,8 @@ class CrossSigningSettingsViewModel @AssistedInject constructor(
90
93
}
91
94
}
92
95
})
96
+ // Force a fast refresh of the data
97
+ observeCrossSigning()
93
98
} catch (failure: Throwable ) {
94
99
handleInitializeXSigningError(failure)
95
100
} finally {
@@ -114,7 +119,8 @@ class CrossSigningSettingsViewModel @AssistedInject constructor(
114
119
// ) { myDevicesInfo, mxCrossSigningInfo ->
115
120
// myDevicesInfo to mxCrossSigningInfo
116
121
// }
117
- session.flow().liveCrossSigningInfo(session.myUserId)
122
+ observeCrossSigningJob?.cancel()
123
+ observeCrossSigningJob = session.flow().liveCrossSigningInfo(session.myUserId)
118
124
.onEach { data ->
119
125
val crossSigningKeys = data.getOrNull()
120
126
val xSigningIsEnableInAccount = crossSigningKeys != null
@@ -128,7 +134,8 @@ class CrossSigningSettingsViewModel @AssistedInject constructor(
128
134
xSigningKeyCanSign = xSigningKeyCanSign
129
135
)
130
136
}
131
- }.launchIn(viewModelScope)
137
+ }
138
+ .launchIn(viewModelScope)
132
139
}
133
140
134
141
private fun handleInitializeXSigningError (failure : Throwable ) {
0 commit comments