* Remove room list range deduplication and allow subscribing to rooms when then update to come into the visible range.
* Fixes#3088 - Update subscriptions if visible range rooms change without the range itself changing
- we switched from range based subscribing with duplicate suppression to id based, but ids can change without ranges changing
- the all rooms list fetches at least 1 event per rooms and can cause rooms to come in and out of the visible range without user interaction
* Remove incorrect message send call and fix typo.
* Add overlay coordinator presentation to the NavigationRootCoordinator.
* Remove GenericCallLinkCoordinator, merging it into CallScreen.
This will allow for picture in picture on call links when available.
* Add inviter property to RoomProxyProtocol.
* Extract the room cell inviter label into it's own view.
* Use the new RoomInviterLabel in the JoinRoomScreen.
* Fix bug with invite to a public room.
* Add a SubscriptionTracker actor to RoomProxy.
* Request subscriptions when scrolling rooms.
* Stop unsubscribing in preparation for Simplified Sliding Sync.
* Switch to the new local room list sorting API
* Get rid of the RoomSummary enum, replace it by the inner RoomSummaryDetails
* And finally, rename RoomSummaryDetails to RoomSummary
* Fix a bunch of warnings
* Small tidy up post rebase/review.
- Remove unused invalidated property.
- Rename some RoomSummary instances to summary instead of details.
- Fix tests with missing roomListItem's.
* Update snapshots
---------
Co-authored-by: Doug <douglase@element.io>
- stop using multiple background task, the appCoordinator sync one is enough for the whole app
- move the AppMeditor to the MainActor
- expose the WindowManager through the AppMediator
- hide sensitive WindowManager API behind a different protocol
- remove the now unnecessary `BackgroundTaskService`
- with the advent of permalinks the same room can be now pushed multiple times onto the stack which means multiple calls to `subscribeForUpdates`
- the reverse doesn't hold and one call to `unsubscribeFromUpdates` will unsubscribe all the rooms at the same time
- we guard against that by tracking the number of subscriptions and calling the underlying `roomListItem.unsubscribe()` when the count goes back to zero
- proxy errors have been getting repetitive and not particularly useful
- differentiate between sdk and client errors and keep what provides value
- add error logs everywhere a failure occurs