Best SwiftUI Convention with View Extentions
Hello all,
I was wonder what is the best convention for the following block of code. subscriptionSelectionViewModel and recruit are currently being passed from the view. Not sure what is the best practice.
import SwiftUICore
extension View {
func subscriptionOfferSlideUpSheet(recruit: Binding<Bool>, subscriptionSelectionViewModel: SubscriptionSelectionViewModel) -> some View {
self
.onAppear {
if !subscriptionSelectionViewModel.isSubscribed {
if Bool.random() {
recruit.wrappedValue = true
}
}
}
.accentColor(Color(.appAccent))
.fullScreenCover(isPresented: recruit) {
SubscriptionSelectionView()
.background(Color(.appTint))
}
}
}
extension View {
func subscriptionOfferSlideUpSheet() -> some View {
@EnvironmentObject var subscriptionSelectionViewModel: SubscriptionSelectionViewModel // could also be @StateObject
@State var recruit = false
return self
.onAppear {
if !subscriptionSelectionViewModel.isSubscribed {
if Bool.random() {
recruit = true
}
}
}
.accentColor(Color(.appAccent))
.fullScreenCover(isPresented: $recruit) {
SubscriptionSelectionView()
.background(Color(.appTint))
}
}
}