Removing devices in foreach resulted in an exception, thus the device
did not get properly removed, which resulted in following issues:
- In the room settings, members would show with unverified devices,
where devices were actually logged out
- Sending encrypted messages to contacts who logged out a device did
lead to a "Message failed to send" with Retry button showing
E/ /Tag: ## CRYPTO | refreshOutdatedDeviceLists() : ERROR updating device keys for users [@redacted:somematrixserver.com]
java.util.NoSuchElementException: Cannot access index 10 when size is 9. Remember to check hasNext() before using next().
at io.realm.RealmList$RealmItr.next(RealmList.java:9)
at org.matrix.android.sdk.internal.crypto.store.db.RealmCryptoStore$storeUserDevices$1.invoke(RealmCryptoStore.kt:41)
at org.matrix.android.sdk.internal.crypto.store.db.RealmCryptoStore$storeUserDevices$1.invoke(RealmCryptoStore.kt:1)
at org.matrix.android.sdk.internal.crypto.store.db.-$$Lambda$HelperKt$XtYpPdQTMtzbOWZdtlMV_aWM9XY.execute(lambda:2)
at io.realm.Realm.executeTransaction(Realm.java:9)
at org.matrix.android.sdk.api.MatrixCallback$DefaultImpls.doRealmTransaction(MatrixCallback.kt:2)
at org.matrix.android.sdk.internal.crypto.store.db.RealmCryptoStore.storeUserDevices(RealmCryptoStore.kt:1)
at org.matrix.android.sdk.internal.crypto.DeviceListManager.doKeyDownloadForUsers(DeviceListManager.kt:120)
at org.matrix.android.sdk.internal.crypto.DeviceListManager$doKeyDownloadForUsers$1.invokeSuspend(DeviceListManager.kt:1)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:3)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:18)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:237)
at android.os.HandlerThread.run(HandlerThread.java:67)
Change-Id: Icd3e21f15c6672673fec58e0fc617fa8c57ba18e
We want to specify where to scroll to from the top of the message rather
than the bottom. To do this in a recycler view that's filled from the
bottom, let's just target the event above and move that out by 2/3 of
the screen.
Change-Id: Ica8ec2d0aaa22b654232f128992510c9d550fe35
With scrollToPosition(), the layout will only scroll such that the view
is visible *somewhere* on the screen. Defining a precise offset where to
show it is better, so the user can expect where the message will show
up.
Change-Id: Idd25a062c4be8f45ba804e442d63409f279f2a76
* develop: (127 commits)
fastlane changelog added.
Changelog added.
Fix lint error.
Translated using Weblate (Slovenian)
Lint fixes.
cleanup
Update initial recording state to restore from background.
Hide mic if there is a draft message.
Migration to cleanup orphan TrustLevelEntities
Design review fixes.
Better algorithm to update user devices Should fix the problem of too many TrustLevelEntity objects
Small optimization
Translated using Weblate (Chinese (Traditional))
Translated using Weblate (Italian)
Translated using Weblate (Hungarian)
Translated using Weblate (Hungarian)
Fix wording when verification is cancelled.
Design review fixes.
Do not check the baseURL to override if it is the same than the one previously known and used
Translated using Weblate (Portuguese (Brazil))
...