`JoinedRoom` will now contain both a mandatory live timeline reference and all the functionality associated to it.
`BaseRoom` on the other hand will contain only functionality that's shared for both joined and not joined rooms.
`NotJoinedRoom` is a wrapper around `RoomPreviewInfo` data and a possible local `BaseRoom`, if it exists.
The `RustRoomFactory` cache is now gone since the persistent event cache should have the same effect.
* Fix ringing calls not being automatically canceled
This will keep the sync active while the user is screening an incoming call, allowing receiving a call cancellation event, which will terminate the incoming call ringing early.
* Add extra logs to help debugging ringing call issues.
* Fix settings entry point not available when there is no avatar on the account. Fixes#4599.
* Use Ktx extension `String.toUri()`
* Allow screen reader to focus on the user avatar to allow editing it.
* Fix import order
* Add adb tools to help with doze mode and app standby
* Add info about the device state when an error occurs in push.
* Keep more events in the DB.
* Push history: add confirmation dialog when resetting the data
* Push history: add a filter to see only the errors
* Update screenshots
* Push history: print out invalid/ignored data received.
* Increase log level for push, to make such log more visible.
It also appears that sometimes Timber.d are not present in the rageshakes.
* Log priority
* Do not include device state for invalid/ignored event.
* Fix tests.
* Fix format issue.
* Fix mistake in code blocks and do not filter when not necessary.
* Improve formatting and add missing unit test.
* Reduce nesting of blocks.
---------
Co-authored-by: ElementBot <android@element.io>
* Sync Strings from Localazy
* Fix strings usage after some were moved
* Fix Norwegian string that was causing lint to fail
* Update screenshots
---------
Co-authored-by: bmarty <3940906+bmarty@users.noreply.github.com>
Co-authored-by: Jorge Martín <jorgem@element.io>
* Introduce PushHistoryService to store data about the received push
Add a push database.
* Update screenshots
* Improve preview.
* Update screenshots
* Add missing test.
* Add test for PushHistoryView
* Fix configuration issue.
Was: w: /libraries/troubleshoot/impl/src/test/kotlin/io/element/android/libraries/troubleshoot/impl/history/PushHistoryPresenterTest.kt:35:27 Cannot access class 'PushProvider' in the expression type. While it may work, this case indicates a configuration mistake and can lead to avoidable compilation errors, so it may be forbidden soon. Check your module classpath for missing or conflicting dependencies.
---------
Co-authored-by: ElementBot <android@element.io>
* fix(deps): update dependency org.matrix.rustcomponents:sdk-android to v25.4.8
* Fix API breaks:
- Add `ReplyParameters` class and parameters to send functions.
- Remove outdated OIDC related values.
- Stop pre-processing the timeline to add the timeline start item, this is already done by the SDK.
* Use the new function to reply to messages in a quick reply from a notification, however:
1. We don't have the thread id value at the moment since the SDK does not provide it yet.
2. The replied to event id wasn't being passed from the notification info.
* Remove also timeline start virtual item for DMs, since this wasn't present before either
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jorge Martín <jorgem@element.io>
* Add `WakeLock` to dismiss ringing call screen when call is cancelled
We had already some checks in place to automatically cancel a ringing call notification/screen when the call was no longer active, but the `RoomInfo` updates weren't being processed because the app was 'paused'.
The partial wakelock should ensure these room info updates are handled.
* Add mutual exclusion to `ActiveCallManager` methods to improve thread safety
Breaking changes addressed:
* Make `MatrixClient.getNotificationSettings()` async, cache its result.
* Use `RoomInfo` for accessing the updated room's info.
* Refactor `MatrixRoom` so it always receives an initial `MatrixRoomInfo` value: this value will be used to make `MatrixRoom.roomInfoFlow` a `StateFlow` so we can assume the initial updated Room data will be present.
* Fetch encryption state when loading a room if it's unknown
* Add Google Tink dependency, replacing `androidx.security.crypto`
* Replace the `EncryptedFile` implementation too
* Extract constants, add some more docs
* Use `Settings.System.DEFAULT_RINGTONE_URI` for ringing notifications
This replaces `RingtoneManager.getActualDefaultRingtoneUri`, it should get the same audio file and avoid some reported issues about not having permission to load the audio file.
* Create `SyncOrchestrator` to centralise the sync start/stop flow through the whole app: the decision is based on several inputs: sync state, network available, app in foreground, app in call, app needing to sync an event for a notification.
* Make network monitor return network connectivity status, not internet connectivity
* Don't stop the `SyncService` when network connection is lost, let it fail instead. This prevents an issue when using the offline mode of the SDK, which made the wrong UI states to be shown when the `SyncState` is `Idle` (that is, after the service being manually stopped).
* Rename `NetworkStatus.Online/Offline` to `Connected/Disconnected` so they're not easily mistaken with internet connectivity instead
2 replace all actions have been performed:
- "SPDX-License-Identifier: AGPL-3.0-only" to "SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial"
- "Please see LICENSE in the repository root for full details." to "Please see LICENSE files in the repository root for full details."