video: stop video in post when it disappears from view

Changelog-Fixes: Stop video when it disappears from view
This commit is contained in:
gladiusKatana
2023-06-08 19:44:40 -04:00
committed by William Casarin
parent 0b5d68c0b8
commit df20b67fc1

View File

@@ -43,25 +43,34 @@ struct DamusVideoPlayer: View {
} }
var body: some View { var body: some View {
ZStack(alignment: .bottomTrailing) { GeometryReader { geo in
VideoPlayer(url: url, model: model) let localFrame = geo.frame(in: .local)
.onAppear { let localCenter = CGPoint(x: localFrame.midX, y: localFrame.midY)
model.start() let globalCenter = geo.frame(in: .global).origin.applying(.init(translationX: localCenter.x, y: localCenter.y))
} let centerY = globalCenter.y
if model.has_audio == true { ZStack(alignment: .bottomTrailing) {
MuteIcon VideoPlayer(url: url, model: model)
.zIndex(11.0) if model.has_audio == true {
.onTapGesture { MuteIcon
self.model.muted = !self.model.muted .zIndex(11.0)
} .onTapGesture {
self.model.muted = !self.model.muted
}
}
} }
} .onChange(of: model.size) { size in
.onChange(of: model.size) { size in guard let size else {
guard let size else { return
return }
video_size = size
}
.onChange(of: centerY) { _ in
let screenHeight = UIScreen.main.bounds.height
let screenMidY = screenHeight / 2
let tol = 0.20 * screenHeight /// tolerance - can vary to taste ie., % of screen height of a centered box in which video plays
model.play = centerY > screenMidY - tol && centerY < screenMidY + tol /// video plays when inside tolerance box
} }
video_size = size
} }
} }
} }