I have an observable
lazy var user = _user.share(replay: 1)
private let _user = PublishRelay<User>()
in a UserState.swift
singleton. My user
observable gets an event as soon as the app loads and I receive a User from the backend.
Later on, in one of my ViewModels, I try to
func profileViewModel(
viewAppeared: Observable<Void>
) -> (
title: Observable<String>
) {
let title = viewAppeared.withLatestFrom(UserState.shared.user) { _, user in
user.username
}
return title
}
Except this event never fires (dont get inside the closure) because user
already fired before it was subscribed to.
How can I accomplish this behavior where on viewDidLoad
event, I grab the latest user
value from my observable?
EDIT:
In my singleton init, if I throw in a random user.subscribe()...
, then this all works. I'm so confused...