From 5cafa4d5b47404ebf60e4294fc0732e1be26c950 Mon Sep 17 00:00:00 2001 From: jack Date: Thu, 25 Sep 2025 12:28:02 +0200 Subject: [PATCH] Reblur images via swipe --- bitchat/Views/Media/BlockRevealImageView.swift | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/bitchat/Views/Media/BlockRevealImageView.swift b/bitchat/Views/Media/BlockRevealImageView.swift index 1f2283c5..5801888c 100644 --- a/bitchat/Views/Media/BlockRevealImageView.swift +++ b/bitchat/Views/Media/BlockRevealImageView.swift @@ -105,8 +105,7 @@ struct BlockRevealImageView: View { isBlurred = initiallyBlurred loadImage() } - .gesture(gestureHandler) - .simultaneousGesture(longPressGesture) + .gesture(mainGesture) } private func loadImage() { @@ -124,7 +123,7 @@ struct BlockRevealImageView: View { } } - private var gestureHandler: some Gesture { + private var mainGesture: some Gesture { let doubleTap = TapGesture(count: 2).onEnded { guard !isSending else { return } onDelete?() @@ -139,18 +138,18 @@ struct BlockRevealImageView: View { onOpen?() } } - return doubleTap.exclusively(before: singleTap) - } - - private var longPressGesture: some Gesture { - LongPressGesture(minimumDuration: 0.4).onEnded { _ in + let swipe = DragGesture(minimumDistance: 20, coordinateSpace: .local).onEnded { value in guard !isSending else { return } + let horizontal = value.translation.width + let vertical = value.translation.height + guard abs(horizontal) > abs(vertical), abs(horizontal) > 40 else { return } if !isBlurred { withAnimation(.easeInOut(duration: 0.2)) { isBlurred = true } } } + return doubleTap.exclusively(before: singleTap).simultaneously(with: swipe) } }