* Update metro to v0.11.0
* Fix `@AssistedInject` usages
Now the injected variables in the factories must match the names in the constructors
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jorge Martín <jorgem@element.io>
* Add `NetworkMonitor.isNetworkBlocked()`, use it to check if Doze prevented us from loading notifications
* Only check if network is blocked after checking if we have a network available, otherwise it's always `true`
* Extract `NetworkBlockedChecker` to handle deprecations more carefully
* Set a maximum journal size limit (WAL file size) of 25MB
The previous value was null, which meant unlimited growth. This can affect performance, since the WAL file performance as a cache will worsen the larger it is
* When scheduling the vacuum task, make sure the user has enough free disk storage, since vacuuming can duplicate the DB sizes in disk
* Add extra analytics for notification performance
Add technical spans to track how long a notification fetching work request takes to run, then how long it takes to actually fetch the events for the notifications
* Remove `withContext(io)` for `FetchNotificationsWorker`
The default `Dispatchers.Default` dispatcher used should be good enough and more performant
* Add network check span
* Remove `runBlocking` call to restore sessions when the app starts
Sadly, to do this we need to manually handle restoring the state from Appyx using internal values. At least it doesn't seem like they're going to change any time soon (or ever).
This should take care of a few ANRs, although it may make loading the initial state a bit slower
* Add `ReplaceAllOperation` for state restoration
* Add warning comment for Appyx dependency
* Disable the cross-process lock in the SDK
We don't use multiple process as iOS does, so we don't need it. It should improve DB performance a bit and overall waste less resources.
* Add free disk space action
* Remove 'upload APK for Maestro' step since it's no longer used
* Re-enable tool-cache removal
* Add the free disk space step to other gradle-related jobs
* Use commit SHA
* Disable removing `large-packages`
* Limit the max number of opened rooms in the backstack
This should help with the `TransactionTooLargeExceptions` we were seeing, since every one of these nodes and their sub-nodes would be saved to the instance state.
Also, make sure we use `LoggedInFlowNode.attachRoom` as much as possible to ensure this check is used
The exception is:
> Size(720 x -83) is out of range. Each dimension must be between 0 and 16777215.
So forcing the height to at least 0 should fix it (although it might cause UI glitches?)
* Remove explicit dependency for `androix.compose.material` for compose library modules
* Ensure `Button` uses the `material3.Icon` instead of the `material.Icon`
* Remove entry in `libs.versions.toml`
if something else grabs focus mid-recording (phone call, etc), stop
the recording and keep the partial result in preview state instead
of silently recording garbage
Signed-off-by: vmfunc <celeste@linux.com>
separates recording from playback focus - willPausedWhenDucked is false
for recording so notification sounds don't interrupt mid-recording
Signed-off-by: vmfunc <celeste@linux.com>