Skip to content

Commit 7e2af90

Browse files
committed
Check power level before starting live sharing location
1 parent 90f1122 commit 7e2af90

File tree

1 file changed

+13
-8
lines changed

1 file changed

+13
-8
lines changed

RiotSwiftUI/Modules/LocationSharing/StartLocationSharing/Coordinator/LocationSharingCoordinator.swift

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -166,17 +166,22 @@ final class LocationSharingCoordinator: Coordinator, Presentable {
166166

167167
// Check if user can send beacon info state event
168168
private func canShareLiveLocation() -> Bool {
169-
guard let myUserId = parameters.roomDataSource.mxSession.myUserId else {
169+
guard let myUserId = parameters.roomDataSource.mxSession.myUserId,
170+
let roomPowerLevels = parameters.roomDataSource.roomState.powerLevels,
171+
let userPowerLevel = RoomPowerLevel(rawValue: parameters.roomDataSource.roomState.powerLevels.powerLevelOfUser(withUserID: myUserId)) else {
170172
return false
171173
}
172174

173-
let userPowerLevelRawValue = parameters.roomDataSource.roomState.powerLevels.powerLevelOfUser(withUserID: myUserId)
174-
175-
guard let userPowerLevel = RoomPowerLevel(rawValue: userPowerLevelRawValue) else {
176-
return false
177-
}
178-
179-
return userPowerLevel.rawValue >= RoomPowerLevel.moderator.rawValue
175+
// Should call `minimumPowerLevelForSendingStateEvent(_ eventType: MXEventType) -> Int` from `MatrixSDK:MXRoomPowerLevels.swift`
176+
// but can't because it is inaccessible due to 'internal' protection level
177+
//
178+
// let liveSharingPowerLevel = parameters.roomDataSource.roomState.powerLevels.minimumPowerLevelForSendingStateEvent(.beaconInfo)
179+
//
180+
181+
// Get live sharing power level from stable value, then unstable value and fallback on default value.
182+
let liveSharingPowerLevel = (roomPowerLevels.events[kMXEventTypeStringBeaconInfo] ?? roomPowerLevels.events[kMXEventTypeStringBeaconInfoMSC3672]) as? Int ?? roomPowerLevels.stateDefault
183+
184+
return userPowerLevel.rawValue >= liveSharingPowerLevel
180185
}
181186

182187
private func showLabFlagPromotionIfNeeded(completion: @escaping ((Bool) -> Void)) {

0 commit comments

Comments
 (0)