From 70cff446cfe52f7aeab5adff1f3ff5f8d13a37b1 Mon Sep 17 00:00:00 2001 From: Stefan Ceriu Date: Mon, 30 Jan 2023 18:53:05 +0200 Subject: [PATCH] Workaround #418 - Allow swiping back from file previews (#499) --- .../FilePreview/View/FilePreviewScreen.swift | 24 +++++++++++-------- .../RoomScreen/RoomScreenCoordinator.swift | 4 ++-- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/ElementX/Sources/Screens/FilePreview/View/FilePreviewScreen.swift b/ElementX/Sources/Screens/FilePreview/View/FilePreviewScreen.swift index 4c03d0715..28e443b5b 100644 --- a/ElementX/Sources/Screens/FilePreview/View/FilePreviewScreen.swift +++ b/ElementX/Sources/Screens/FilePreview/View/FilePreviewScreen.swift @@ -22,10 +22,20 @@ struct FilePreviewScreen: View { @ObservedObject var context: FilePreviewViewModel.Context var body: some View { - PreviewView(context: context, - fileURL: context.viewState.fileURL, - title: context.viewState.title) - .ignoresSafeArea() + ZStack(alignment: .leading) { + PreviewView(context: context, + fileURL: context.viewState.fileURL, + title: context.viewState.title) + .ignoresSafeArea(edges: .bottom) + + // Drop a random view on top to make QLPreviewController stop + // swallowing all gestures and allow swiping backwards + Rectangle() + .frame(maxWidth: 20.0) + .foregroundColor(.red) + .opacity(0.005) + .ignoresSafeArea() + } } } @@ -37,12 +47,6 @@ private struct PreviewView: UIViewControllerRepresentable { func makeUIViewController(context: Context) -> UINavigationController { let controller = QLPreviewController() controller.dataSource = context.coordinator - - let doneButton = UIBarButtonItem(title: "Done", - style: .done, - target: context.coordinator, - action: #selector(Coordinator.done)) - controller.navigationItem.rightBarButtonItem = doneButton return UINavigationController(rootViewController: controller) } diff --git a/ElementX/Sources/Screens/RoomScreen/RoomScreenCoordinator.swift b/ElementX/Sources/Screens/RoomScreen/RoomScreenCoordinator.swift index 173b8a47c..2b3e7902a 100644 --- a/ElementX/Sources/Screens/RoomScreen/RoomScreenCoordinator.swift +++ b/ElementX/Sources/Screens/RoomScreen/RoomScreenCoordinator.swift @@ -84,10 +84,10 @@ final class RoomScreenCoordinator: CoordinatorProtocol { let params = FilePreviewCoordinatorParameters(fileURL: fileURL, title: title) let coordinator = FilePreviewCoordinator(parameters: params) coordinator.callback = { [weak self] _ in - self?.navigationStackCoordinator.setFullScreenCoverCoordinator(nil) + self?.navigationStackCoordinator.pop() } - navigationStackCoordinator.setFullScreenCoverCoordinator(coordinator) + navigationStackCoordinator.push(coordinator) } private func displayEmojiPickerScreen(for itemId: String) {