import Foundation import SwiftUI struct FixtureEnvironmentObjectsModifier: ViewModifier { func body(content: Content) -> some View { content .environmentObject(AccountsModel()) .environmentObject(InstancesManifest()) .environmentObject(invidious) .environmentObject(NavigationModel()) .environmentObject(NetworkStateModel()) .environmentObject(PipedAPI()) .environmentObject(player) .environmentObject(playerControls) .environmentObject(PlayerTimeModel()) .environmentObject(PlaylistsModel()) .environmentObject(RecentsModel()) .environmentObject(SettingsModel()) .environmentObject(subscriptions) .environmentObject(ThumbnailsModel()) } private var invidious: InvidiousAPI { let api = InvidiousAPI() api.validInstance = true return api } private var player: PlayerModel { let player = PlayerModel() player.currentItem = PlayerQueueItem( Video( videoID: "https://a/b/c", title: "Video Name", author: "", length: 0, published: "2 days ago", views: 43434, description: "The 14\" and 16\" MacBook Pros are incredible. I can finally retire the travel iMac.\nThat shirt! http://shop.MKBHD.com\nMacBook Pro skins: https://dbrand.com/macbooks\n\n0:00 Intro\n1:38 Top Notch Design\n2:27 Let's Talk Ports\n7:11 RIP Touchbar\n8:20 The new displays\n10:12 Living with the notch\n12:37 Performance\n19:39 Battery\n20:30 So should you get it?\n\nThe Verge Review: https://youtu.be/ftU1HzBKd5Y\nTyler Stalman Review: https://youtu.be/I10WMJV96ns\nDeveloper's tweet: https://twitter.com/softwarejameson/status/1455971162060697613?s=09&t=WbOkVKgDdcegIdyOdurSNQ&utm_source=pocket_mylist\n\nTech I'm using right now: https://www.amazon.com/shop/MKBHD\n\nIntro Track: http://youtube.com/20syl\nPlaylist of MKBHD Intro music: https://goo.gl/B3AWV5\n\nLaptop provided by Apple for review.\n\n~\nhttp://twitter.com/MKBHD\nhttp://instagram.com/MKBHD\nhttp://facebook.com/MKBHD", channel: .init(id: "", name: "Channel Name"), likes: 2332, dislikes: 30, keywords: ["Video", "Computer", "Long Long Keyword"], chapters: [ .init( title: "Abc", image: URL(string: "https://pipedproxy.kavin.rocks/vi/rr2XfL_df3o/hqdefault_29633.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg%3D%3D&rs=AOn4CLDFDm9D5SvsIA7D3v5n5KZahLs_UA&host=i.ytimg.com")!, start: 3 ), .init( title: "Def", image: URL(string: "https://pipedproxy.kavin.rocks/vi/rr2XfL_df3o/hqdefault_98900.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg%3D%3D&rs=AOn4CLCfjXJBJb2O2q0jT0RHIi7hARVahw&host=i.ytimg.com")!, start: 33 ) ] ) ) #if os(iOS) player.playerSize = .init(width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height) #endif let local = (1 ... 10).map { Video.local(URL(string: "https://\($0)")!) } let videos = Video.allFixtures + local player.queue = videos.map { PlayerQueueItem($0) } return player } private var playerControls: PlayerControlsModel { PlayerControlsModel(presentingControls: true) } private var subscriptions: SubscriptionsModel { let subscriptions = SubscriptionsModel() subscriptions.channels = Video.allFixtures.map { $0.channel } return subscriptions } } extension View { func injectFixtureEnvironmentObjects() -> some View { modifier(FixtureEnvironmentObjectsModifier()) } }