From 979fb204915680adaeb80069c434d06435f76cf7 Mon Sep 17 00:00:00 2001 From: Nicolas Buquet Date: Thu, 13 Jun 2024 11:35:30 +0200 Subject: [PATCH] Check power level before starting live sharing location Signed-off-by: Nicolas Buquet Update RiotSwiftUI/Modules/LocationSharing/StartLocationSharing/Coordinator/LocationSharingCoordinator.swift Use local var `roomPowerLevels` Co-authored-by: Doug <6060466+pixlwave@users.noreply.github.com> --- .../Coordinator/LocationSharingCoordinator.swift | 15 +++++++-------- changelog.d/pr-7808.change | 1 + 2 files changed, 8 insertions(+), 8 deletions(-) create mode 100644 changelog.d/pr-7808.change diff --git a/RiotSwiftUI/Modules/LocationSharing/StartLocationSharing/Coordinator/LocationSharingCoordinator.swift b/RiotSwiftUI/Modules/LocationSharing/StartLocationSharing/Coordinator/LocationSharingCoordinator.swift index 9cd5853c74..c2494be129 100644 --- a/RiotSwiftUI/Modules/LocationSharing/StartLocationSharing/Coordinator/LocationSharingCoordinator.swift +++ b/RiotSwiftUI/Modules/LocationSharing/StartLocationSharing/Coordinator/LocationSharingCoordinator.swift @@ -166,17 +166,16 @@ final class LocationSharingCoordinator: Coordinator, Presentable { // Check if user can send beacon info state event private func canShareLiveLocation() -> Bool { - guard let myUserId = parameters.roomDataSource.mxSession.myUserId else { + guard let myUserId = parameters.roomDataSource.mxSession.myUserId, + let roomPowerLevels = parameters.roomDataSource.roomState.powerLevels, + let userPowerLevel = RoomPowerLevel(rawValue: roomPowerLevels.powerLevelOfUser(withUserID: myUserId)) else { return false } - let userPowerLevelRawValue = parameters.roomDataSource.roomState.powerLevels.powerLevelOfUser(withUserID: myUserId) - - guard let userPowerLevel = RoomPowerLevel(rawValue: userPowerLevelRawValue) else { - return false - } - - return userPowerLevel.rawValue >= RoomPowerLevel.moderator.rawValue + // CHeck user power level in room against power level needed to post geolocation state event. + let liveSharingPowerLevel = roomPowerLevels.minimumPowerLevelForSendingStateEvent(.beaconInfo) + + return userPowerLevel.rawValue >= liveSharingPowerLevel } private func showLabFlagPromotionIfNeeded(completion: @escaping ((Bool) -> Void)) { diff --git a/changelog.d/pr-7808.change b/changelog.d/pr-7808.change new file mode 100644 index 0000000000..cc803849fb --- /dev/null +++ b/changelog.d/pr-7808.change @@ -0,0 +1 @@ +Check power level before starting live sharing location \ No newline at end of file