// // MapViewModel.swift // QuickLocation // import Foundation import RxSwift import RxCocoa import CoreLocation final class MapViewModel { struct Output { var members: Observable<[CircleMember]> var trackingMode: Observable } let output: Output private let membersRelay = BehaviorRelay<[CircleMember]>(value: []) private let trackingRelay = BehaviorRelay(value: true) let selectedMember = PublishSubject() init() { output = Output( members: membersRelay.asObservable(), trackingMode: trackingRelay.asObservable() ) } func loadMembers() { membersRelay.accept(.mock) } func toggleTracking() { trackingRelay.accept(!trackingRelay.value) } func selectMember(_ member: CircleMember) { selectedMember.onNext(member) } func currentUser() -> CircleMember? { membersRelay.value.first { $0.isCurrentUser } } #if !targetEnvironment(simulator) func memberAnnotations() -> [MemberAnnotation] { membersRelay.value.map { MemberAnnotation(member: $0) } } #endif }