import Foundation import SwiftUI struct FixtureEnvironmentObjectsModifier: ViewModifier { func body(content: Content) -> some View { content .environmentObject(AccountsModel()) .environmentObject(comments) .environmentObject(InstancesModel()) .environmentObject(InstancesManifest()) .environmentObject(invidious) .environmentObject(NavigationModel()) .environmentObject(NetworkStateModel()) .environmentObject(PipedAPI()) .environmentObject(player) .environmentObject(playerControls) .environmentObject(PlayerTimeModel()) .environmentObject(PlaylistsModel()) .environmentObject(RecentsModel()) .environmentObject(SearchModel()) .environmentObject(SettingsModel()) .environmentObject(subscriptions) .environmentObject(ThumbnailsModel()) } private var comments: CommentsModel { let comments = CommentsModel() comments.loaded = true comments.all = [.fixture] return comments } private var invidious: InvidiousAPI { let api = InvidiousAPI() api.validInstance = true api.signedIn = true return api } private var player: PlayerModel { let player = PlayerModel() player.currentItem = PlayerQueueItem(Video(videoID: "", title: "", author: "", length: 0, published: "2 days ago", views: 43434, channel: .init(id: "", name: ""), likes: 2332, dislikes: 30)) player.queue = Video.allFixtures.map { PlayerQueueItem($0) } player.videoBeingOpened = Video.fixture return player } private var playerControls: PlayerControlsModel { PlayerControlsModel(presentingControls: false, presentingControlsOverlay: true, player: player) } private var subscriptions: SubscriptionsModel { let subscriptions = SubscriptionsModel() subscriptions.channels = Video.allFixtures.map { $0.channel } return subscriptions } } extension View { func injectFixtureEnvironmentObjects() -> some View { modifier(FixtureEnvironmentObjectsModifier()) } }