I'm trying to pass in an optional publisher to my view's .onReceive. I don't want to force wrap it like this:
let refreshPublisher: AnyPublisher<Void, Never>?
var body: some View {
Group {
...
}
.onReceive(refreshPublisher!) {...}
}
So I'm passing an empty default value like this:
var body: some View {
Group {
...
}
.onReceive(refreshPublisher ?? Empty<Void, Never>().eraseToAnyPublisher()) {...}
}
This is really verbose and want to add an extension on Optional publishers something like this:
extension Optional where Wrapped == Publisher { // Incorrect syntax, doesn't compile
func orEmpty() -> AnyPublisher<Void, Never> { ... }
}
This way, I can end or doing something like this:
var body: some View {
Group {
...
}
.onReceive(refreshPublisher.orEmpty()) {...}
}
Is something like this possible or a better way to handle optional publishers in non-optional chains?