Skip to content

Commit bf98e90

Browse files
aleksprogergithub-actions[bot]
authored andcommitted
Add button to hide floors (#10383)
- Allowing to pass null to selectFloor, to effecitvely drop any selection. This was previously allowed, but then dropped as not needed at the momemt. - Add button to hide indoor floors, on iOS it uses pre-existing system icons - A bit of cleanup in IndoorSelectorView, but real changes are small there as well https://github.com/user-attachments/assets/d17d3c3e-2a5d-4c6e-a311-c16dfec33e2d https://github.com/user-attachments/assets/3a84b0a2-f638-4659-9924-a52919b6c3d1 GitOrigin-RevId: ffde7cb5a76d8cba1fdef7b891c9c75e5df58b3c
1 parent 40760a8 commit bf98e90

4 files changed

Lines changed: 175 additions & 152 deletions

File tree

Sources/MapboxMaps/Ornaments/IndoorSelectorModel.swift

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,19 @@ import UIKit
33

44
protocol IndoorSelectorModelProtocol: AnyObject {
55
var floors: [IndoorFloor] { get }
6-
var selectedFloorId: String { get }
6+
var selectedFloorId: String? { get }
77
var isHidden: Bool { get }
88
var onFloorsUpdated: (() -> Void)? { get set }
99
var onFloorSelected: (() -> Void)? { get set }
1010
var onVisibilityChanged: (() -> Void)? { get set }
1111

1212
func selectFloor(_ floorId: String)
13+
func clearFloor()
1314
}
1415

1516
final class IndoorSelectorModel: IndoorSelectorModelProtocol {
1617
private(set) var floors: [IndoorFloor] = []
17-
private(set) var selectedFloorId: String = ""
18+
private(set) var selectedFloorId: String?
1819
private(set) var isHidden: Bool = true
1920

2021
private let indoorManager: IndoorManager
@@ -38,14 +39,21 @@ final class IndoorSelectorModel: IndoorSelectorModelProtocol {
3839
onFloorSelected?()
3940
}
4041

42+
func clearFloor() {
43+
selectedFloorId = nil
44+
indoorManager.selectFloor(selectedFloorId: nil)
45+
onFloorSelected?()
46+
}
47+
4148
private func onIndoorUpdated(_ state: IndoorState) {
4249
if floors != state.floors {
4350
floors = state.floors
4451
onFloorsUpdated?()
4552
}
4653

47-
if selectedFloorId != state.selectedFloorId {
48-
selectedFloorId = state.selectedFloorId
54+
let incomingFloorId: String? = state.selectedFloorId.isEmpty ? nil : state.selectedFloorId
55+
if selectedFloorId != incomingFloorId {
56+
selectedFloorId = incomingFloorId
4957
onFloorSelected?()
5058
}
5159

0 commit comments

Comments
 (0)