Throttle controls bar gestures

This commit is contained in:
Arkadiusz Fal 2022-12-20 23:41:21 +01:00
parent c432aa3b9a
commit a32f417776

View File

@ -13,6 +13,8 @@ struct ControlsBar: View {
@State private var shareURL: URL?
@Binding var expansionState: ExpansionState
@State internal var gestureThrottle = Throttle(interval: 0.25)
var presentingControls = true
var backgroundEnabled = true
var borderTop = true
@ -244,20 +246,22 @@ struct ControlsBar: View {
}
func gestureAction(_ action: PlayerTapGestureAction) {
gestureThrottle.execute {
switch action {
case .togglePlayer:
model.togglePlayer()
self.model.togglePlayer()
case .openChannel:
guard let channel = model.videoForDisplay?.channel else { return }
navigation.openChannel(channel, navigationStyle: navigationStyle)
guard let channel = self.model.videoForDisplay?.channel else { return }
self.navigation.openChannel(channel, navigationStyle: self.navigationStyle)
case .togglePlayerVisibility:
withAnimation(.spring(response: 0.25)) {
expansionState = expansionState == .full ? .mini : .full
self.expansionState = self.expansionState == .full ? .mini : .full
}
default:
return
}
}
}
#endif
@ViewBuilder var contextMenu: some View {
if let video = model.videoForDisplay {