Skip to content

Commit cec2069

Browse files
aleksprogeractions-user
authored andcommitted
[Backport release/v0.19] Add building button to indoor selector (#10401)
- Backports mapbox/mapbox-sdk#10383 cc @mapbox/maps-ios cc @mapbox/core-sdk cc @mapbox/gl-native cc @mapbox/maps-android --------- Co-authored-by: Changelog autocreator bot <actions@github.com> GitOrigin-RevId: 6e562ccfbad9957ef1c0750d53772123e49c13ff
1 parent 3d99561 commit cec2069

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)