Live Location Sharing - handle server echoes (#5514)

* Track active live location sessions by ID instead of timeout.

# Conflicts:
#	ElementX/Sources/Services/Location/LiveLocationManager.swift

* implemented a system to promote starting session to active sesessions to send locations at the right time, and a system to remove a local session if it's handled by an external device.

* pr suggestions

---------

Co-authored-by: Doug <douglase@element.io>
This commit is contained in:
Mauro
2026-04-30 15:18:36 +02:00
committed by GitHub
parent 53a54c1b90
commit 76f744b9c4
13 changed files with 209 additions and 61 deletions
@@ -171,11 +171,11 @@ class RoomScreenViewModel: RoomScreenViewModelType, RoomScreenViewModelProtocol
.weakAssign(to: \.state.isKnockingEnabled, on: self)
.store(in: &cancellables)
appSettings.$liveLocationSharingTimeoutDatesByRoomID
appSettings.$liveLocationSharingSessionsByRoomID
.receive(on: DispatchQueue.main)
.sink { [weak self] timeoutDatesByRoomID in
.sink { [weak self] sessionsByRoomID in
guard let self else { return }
state.isSharingLiveLocation = timeoutDatesByRoomID.keys.contains(roomProxy.id)
state.isSharingLiveLocation = sessionsByRoomID.keys.contains(roomProxy.id)
}
.store(in: &cancellables)