mirror of
				https://github.com/yattee/yattee.git
				synced 2025-11-03 22:22:02 +00:00 
			
		
		
		
	Performance improvements
This commit is contained in:
		@@ -37,39 +37,25 @@ final class PlayerControlsModel: ObservableObject {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    func handlePresentationChange() {
 | 
			
		||||
        DispatchQueue.main.async { [weak self] in
 | 
			
		||||
            guard let self = self,
 | 
			
		||||
                  let player = self.player else { return }
 | 
			
		||||
            if self.presentingControls {
 | 
			
		||||
                player.backend.startControlsUpdates()
 | 
			
		||||
                self.resetTimer()
 | 
			
		||||
        guard let player = player else { return }
 | 
			
		||||
        if presentingControls {
 | 
			
		||||
            player.backend.startControlsUpdates()
 | 
			
		||||
            resetTimer()
 | 
			
		||||
        } else {
 | 
			
		||||
            if !player.musicMode {
 | 
			
		||||
                player.backend.stopControlsUpdates()
 | 
			
		||||
                removeTimer()
 | 
			
		||||
            } else {
 | 
			
		||||
                if !player.musicMode {
 | 
			
		||||
                    player.backend.stopControlsUpdates()
 | 
			
		||||
                    self.removeTimer()
 | 
			
		||||
                } else {
 | 
			
		||||
                    self.presentingControls = true
 | 
			
		||||
                }
 | 
			
		||||
                presentingControls = true
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    func handleSettingsOverlayPresentationChange() {
 | 
			
		||||
        player?.backend.setNeedsNetworkStateUpdates(presentingControlsOverlay && Defaults[.showMPVPlaybackStats])
 | 
			
		||||
        if presentingControlsOverlay {
 | 
			
		||||
            removeTimer()
 | 
			
		||||
        } else {
 | 
			
		||||
            resetTimer()
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    func handleDetailsOverlayPresentationChange() {
 | 
			
		||||
        if presentingDetailsOverlay {
 | 
			
		||||
            removeTimer()
 | 
			
		||||
        } else {
 | 
			
		||||
            resetTimer()
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    func handleDetailsOverlayPresentationChange() {}
 | 
			
		||||
 | 
			
		||||
    var presentingOverlays: Bool {
 | 
			
		||||
        presentingDetailsOverlay || presentingControlsOverlay
 | 
			
		||||
 
 | 
			
		||||
@@ -136,12 +136,7 @@ struct PlayerControls: View {
 | 
			
		||||
        }
 | 
			
		||||
        .onChange(of: model.presentingOverlays) { newValue in
 | 
			
		||||
            if newValue {
 | 
			
		||||
                player.backend.stopControlsUpdates()
 | 
			
		||||
            } else {
 | 
			
		||||
                #if os(tvOS)
 | 
			
		||||
                    focusedField = .play
 | 
			
		||||
                #endif
 | 
			
		||||
                player.backend.startControlsUpdates()
 | 
			
		||||
                model.hide()
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        #if os(tvOS)
 | 
			
		||||
 
 | 
			
		||||
@@ -103,7 +103,7 @@ struct VideoDescription: View {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        func updateUIView(_: UIViewType, context _: Context) {
 | 
			
		||||
            customizeLabel()
 | 
			
		||||
            updatePreferredMaxLayoutWidth()
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        func customizeLabel() {
 | 
			
		||||
@@ -143,6 +143,10 @@ struct VideoDescription: View {
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        func updatePreferredMaxLayoutWidth() {
 | 
			
		||||
            label.preferredMaxLayoutWidth = (detailsSize?.width ?? 330) - 30
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -454,10 +454,9 @@ struct VideoPlayerView: View {
 | 
			
		||||
                    if drag > 60,
 | 
			
		||||
                       player.playingFullScreen
 | 
			
		||||
                    {
 | 
			
		||||
                        player.exitFullScreen()
 | 
			
		||||
                        player.exitFullScreen(showControls: false)
 | 
			
		||||
                        if Defaults[.rotateToPortraitOnExitFullScreen] {
 | 
			
		||||
                            Orientation.lockOrientation(.allButUpsideDown, andRotateTo: .portrait)
 | 
			
		||||
                            playerControls.show()
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
 
 | 
			
		||||
@@ -27,20 +27,25 @@ struct ShareButton: View {
 | 
			
		||||
 | 
			
		||||
    private var instanceActions: some View {
 | 
			
		||||
        Group {
 | 
			
		||||
            if let url = player.playerAPI.shareURL(contentItem) {
 | 
			
		||||
                Button(labelForShareURL(accounts.app.name)) {
 | 
			
		||||
            Button(labelForShareURL(accounts.app.name)) {
 | 
			
		||||
                if let url = player.playerAPI.shareURL(contentItem) {
 | 
			
		||||
                    shareAction(url)
 | 
			
		||||
                } else {
 | 
			
		||||
                    navigation.presentAlert(
 | 
			
		||||
                        title: "Could not create share link",
 | 
			
		||||
                        message: "For custom locations you can configure Frontend URL in Locations settings"
 | 
			
		||||
                    )
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
                if contentItemIsPlayerCurrentVideo {
 | 
			
		||||
                    Button(labelForShareURL(accounts.app.name, withTime: true)) {
 | 
			
		||||
                        shareAction(
 | 
			
		||||
                            player.playerAPI.shareURL(
 | 
			
		||||
                                contentItem,
 | 
			
		||||
                                time: player.backend.currentTime
 | 
			
		||||
                            )!
 | 
			
		||||
                        )
 | 
			
		||||
                    }
 | 
			
		||||
            if contentItemIsPlayerCurrentVideo {
 | 
			
		||||
                Button(labelForShareURL(accounts.app.name, withTime: true)) {
 | 
			
		||||
                    shareAction(
 | 
			
		||||
                        player.playerAPI.shareURL(
 | 
			
		||||
                            contentItem,
 | 
			
		||||
                            time: player.backend.currentTime
 | 
			
		||||
                        )!
 | 
			
		||||
                    )
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user