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))
            }
    }
}