Merge pull request #1905 from vector-im/feature/refresh_device_list

Live sessions list
This commit is contained in:
Benoit Marty 2020-08-13 17:13:36 +02:00 committed by GitHub
commit 81a4b5edbc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 20 additions and 19 deletions

View File

@ -12,6 +12,7 @@ Bugfix 🐛:
- Fix invisible toolbar (Status.im theme) (#1746)
- Fix relative date time formatting (#822)
- Fix crash reported by RageShake
- Fix refreshing of sessions list when another session is logged out
Translations 🗣:
- Add PlayStore description resources in the Triple-T format, to let Weblate handle them

View File

@ -71,7 +71,7 @@ class RxSession(private val session: Session) {
}
}
fun liveMyDeviceInfo(): Observable<List<DeviceInfo>> {
fun liveMyDevicesInfo(): Observable<List<DeviceInfo>> {
return session.cryptoService().getLiveMyDevicesInfo().asObservable()
.startWithCallable {
session.cryptoService().getMyDevicesInfo()

View File

@ -39,11 +39,8 @@ internal data class UploadSignatureQueryBuilder(
fun build(): Map<String, Map<String, @JvmSuppressWildcards Any>> {
val map = HashMap<String, HashMap<String, Any>>()
val usersList = (
deviceInfoList.map { it.userId }
+ signingKeyInfoList
.map { it.userId }
).distinct()
val usersList = (deviceInfoList.map { it.userId } + signingKeyInfoList.map { it.userId })
.distinct()
usersList.forEach { userID ->
val userMap = HashMap<String, Any>()

View File

@ -66,7 +66,7 @@ class BootstrapAccountPasswordFragment @Inject constructor(
.disposeOnDestroyView()
bootstrapAccountPasswordEditText.textChanges()
.distinct()
.distinctUntilChanged()
.subscribe {
if (!it.isNullOrBlank()) {
bootstrapAccountPasswordTil.error = null

View File

@ -61,7 +61,7 @@ class ShortcutsHandler @Inject constructor(
return homeRoomListStore
.observe()
.distinct()
.distinctUntilChanged()
.observeOn(Schedulers.computation())
.subscribe { rooms ->
val shortcuts = rooms

View File

@ -100,7 +100,7 @@ class UnknownDeviceDetectorSharedViewModel @AssistedInject constructor(@Assisted
Observable.combineLatest<List<CryptoDeviceInfo>, List<DeviceInfo>, Optional<PrivateKeysInfo>, List<DeviceDetectionInfo>>(
session.rx().liveUserCryptoDevices(session.myUserId),
session.rx().liveMyDeviceInfo(),
session.rx().liveMyDevicesInfo(),
session.rx().liveCrossSigningPrivateKeys(),
Function3 { cryptoList, infoList, pInfo ->
// Timber.v("## Detector trigger ${cryptoList.map { "${it.deviceId} ${it.trustLevel}" }}")
@ -133,12 +133,13 @@ class UnknownDeviceDetectorSharedViewModel @AssistedInject constructor(@Assisted
}
session.rx().liveUserCryptoDevices(session.myUserId)
.distinct()
.distinctUntilChanged()
.throttleLast(5_000, TimeUnit.MILLISECONDS)
.subscribe {
// If we have a new crypto device change, we might want to trigger refresh of device info
session.cryptoService().fetchDevicesList(NoOpMatrixCallback())
}.disposeOnClear()
}
.disposeOnClear()
// trigger a refresh of lastSeen / last Ip
session.cryptoService().fetchDevicesList(NoOpMatrixCallback())

View File

@ -37,10 +37,10 @@ class CrossSigningSettingsViewModel @AssistedInject constructor(@Assisted privat
init {
Observable.combineLatest<List<DeviceInfo>, Optional<MXCrossSigningInfo>, Pair<List<DeviceInfo>, Optional<MXCrossSigningInfo>>>(
session.rx().liveMyDeviceInfo(),
session.rx().liveMyDevicesInfo(),
session.rx().liveCrossSigningInfo(session.myUserId),
BiFunction { myDeviceInfo, mxCrossSigningInfo ->
(myDeviceInfo to mxCrossSigningInfo)
BiFunction { myDevicesInfo, mxCrossSigningInfo ->
myDevicesInfo to mxCrossSigningInfo
}
)
.execute { data ->

View File

@ -81,7 +81,7 @@ class DeviceVerificationInfoBottomSheetViewModel @AssistedInject constructor(@As
copy(deviceInfo = Loading())
}
session.rx().liveMyDeviceInfo()
session.rx().liveMyDevicesInfo()
.map { devices ->
devices.firstOrNull { it.deviceId == deviceId } ?: DeviceInfo(deviceId = deviceId)
}

View File

@ -103,7 +103,7 @@ class DevicesViewModel @AssistedInject constructor(
Observable.combineLatest<List<CryptoDeviceInfo>, List<DeviceInfo>, List<DeviceFullInfo>>(
session.rx().liveUserCryptoDevices(session.myUserId),
session.rx().liveMyDeviceInfo(),
session.rx().liveMyDevicesInfo(),
BiFunction { cryptoList, infoList ->
infoList
.sortedByDescending { it.lastSeenTs }
@ -113,7 +113,7 @@ class DevicesViewModel @AssistedInject constructor(
}
}
)
.distinct()
.distinctUntilChanged()
.execute { async ->
copy(
devices = async
@ -137,12 +137,14 @@ class DevicesViewModel @AssistedInject constructor(
// }
session.rx().liveUserCryptoDevices(session.myUserId)
.distinct()
.map { it.size }
.distinctUntilChanged()
.throttleLast(5_000, TimeUnit.MILLISECONDS)
.subscribe {
// If we have a new crypto device change, we might want to trigger refresh of device info
session.cryptoService().fetchDevicesList(NoOpMatrixCallback())
}.disposeOnClear()
}
.disposeOnClear()
// session.rx().liveUserCryptoDevices(session.myUserId)
// .execute {