Replace FilePreviewScreen with InteractiveQuickLook. (#1187)

* Replace FilePreviewScreen with InteractiveQuickLook.

- Allows full screen presentation.
- Allows dismiss gesture to work.
- Presentation looks much better on macOS.
This commit is contained in:
Doug
2023-06-28 15:32:16 +01:00
committed by GitHub
parent 908b368680
commit afbb0a8260
14 changed files with 147 additions and 363 deletions
@@ -119,11 +119,6 @@ class RoomFlowCoordinator: FlowCoordinatorProtocol {
case (.dismissRoomMemberDetails, .roomMemberDetails(let roomID, _)):
return .room(roomID: roomID)
case (.presentMediaViewer(let file, let title), .room(let roomID)):
return .mediaViewer(roomID: roomID, file: file, title: title)
case (.dismissMediaViewer, .mediaViewer(let roomID, _, _)):
return .room(roomID: roomID)
case (.presentReportContent(let itemID, let senderID), .room(let roomID)):
return .reportContent(roomID: roomID, itemID: itemID, senderID: senderID)
case (.dismissReportContent, .reportContent(let roomID, _, _)):
@@ -185,11 +180,6 @@ class RoomFlowCoordinator: FlowCoordinatorProtocol {
case (.roomDetails, .dismissRoom, .initial):
dismissRoom(animated: animated)
case (.room, .presentMediaViewer, .mediaViewer(_, let file, let title)):
presentMediaViewer(file, title: title)
case (.mediaViewer, .dismissMediaViewer, .room):
break
case (.room, .presentReportContent, .reportContent(_, let itemID, let senderID)):
presentReportContent(for: itemID, from: senderID)
case (.reportContent, .dismissReportContent, .room):
@@ -308,8 +298,6 @@ class RoomFlowCoordinator: FlowCoordinatorProtocol {
switch action {
case .presentRoomDetails:
stateMachine.tryEvent(.presentRoomDetails(roomID: roomID))
case .presentMediaViewer(let file, let title):
stateMachine.tryEvent(.presentMediaViewer(file: file, title: title))
case .presentReportContent(let itemID, let senderID):
stateMachine.tryEvent(.presentReportContent(itemID: itemID, senderID: senderID))
case .presentMediaUploadPicker(let source):
@@ -412,21 +400,6 @@ class RoomFlowCoordinator: FlowCoordinatorProtocol {
}
}
private func presentMediaViewer(_ file: MediaFileHandleProxy, title: String?) {
let params = FilePreviewScreenCoordinatorParameters(mediaFile: file, title: title)
let coordinator = FilePreviewScreenCoordinator(parameters: params)
coordinator.callback = { [weak self] action in
switch action {
case .cancel:
self?.navigationStackCoordinator.pop()
}
}
navigationStackCoordinator.push(coordinator) { [weak self] in
self?.stateMachine.tryEvent(.dismissMediaViewer)
}
}
private func presentReportContent(for itemID: String, from senderID: String) {
guard let roomProxy else {
fatalError()
@@ -640,7 +613,6 @@ private extension RoomFlowCoordinator {
enum State: StateType {
case initial
case room(roomID: String)
case mediaViewer(roomID: String, file: MediaFileHandleProxy, title: String?)
case reportContent(roomID: String, itemID: String, senderID: String)
case roomDetails(roomID: String, isRoot: Bool)
case mediaUploadPicker(roomID: String, source: MediaPickerScreenSource)
@@ -660,9 +632,6 @@ private extension RoomFlowCoordinator {
case presentRoom(roomID: String)
case dismissRoom
case presentMediaViewer(file: MediaFileHandleProxy, title: String?)
case dismissMediaViewer
case presentReportContent(itemID: String, senderID: String)
case dismissReportContent