mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-03 06:55:59 +00:00
Revert decryption banner & try fix context menu crash. (#525)
This commit is contained in:
@@ -29,7 +29,6 @@ class RoomScreenViewModel: RoomScreenViewModelType, RoomScreenViewModelProtocol
|
||||
private let timelineController: RoomTimelineControllerProtocol
|
||||
private let timelineViewFactory: RoomTimelineViewFactoryProtocol
|
||||
|
||||
// swiftlint:disable:next cyclomatic_complexity
|
||||
init(timelineController: RoomTimelineControllerProtocol,
|
||||
timelineViewFactory: RoomTimelineViewFactoryProtocol,
|
||||
mediaProvider: MediaProviderProtocol,
|
||||
@@ -67,10 +66,6 @@ class RoomScreenViewModel: RoomScreenViewModelType, RoomScreenViewModelProtocol
|
||||
if self.state.isBackPaginating != isBackPaginating {
|
||||
self.state.isBackPaginating = isBackPaginating
|
||||
}
|
||||
case .hasEncryptedItems(let hasEncryptedItems):
|
||||
if self.state.showEncryptionBanner != hasEncryptedItems {
|
||||
self.state.showEncryptionBanner = hasEncryptedItems
|
||||
}
|
||||
}
|
||||
}
|
||||
.store(in: &cancellables)
|
||||
@@ -118,8 +113,6 @@ class RoomScreenViewModel: RoomScreenViewModelType, RoomScreenViewModelProtocol
|
||||
state.bindings.composerText = ""
|
||||
case .markRoomAsRead:
|
||||
await markRoomAsRead()
|
||||
case .retryDecryption:
|
||||
retryDecryption()
|
||||
case .contextMenuAction(let itemID, let action):
|
||||
processContentMenuAction(action, itemID: itemID)
|
||||
}
|
||||
@@ -189,19 +182,6 @@ class RoomScreenViewModel: RoomScreenViewModelType, RoomScreenViewModelProtocol
|
||||
}
|
||||
}
|
||||
|
||||
/// Retry decrypting any encrypted items in the timeline.
|
||||
private func retryDecryption() {
|
||||
Task {
|
||||
let firstEncryptedItem = state.items.first { $0.sessionID != nil }
|
||||
|
||||
if let sessionID = firstEncryptedItem?.sessionID {
|
||||
// Request for the first encrypted item to be decrypted as the SDK
|
||||
// will continue to decrypt any following items automatically.
|
||||
await timelineController.retryDecryption(for: sessionID)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private func displayError(_ type: RoomScreenErrorType) {
|
||||
switch type {
|
||||
case .alert(let message):
|
||||
@@ -244,7 +224,12 @@ class RoomScreenViewModel: RoomScreenViewModelType, RoomScreenViewModelProtocol
|
||||
actions.append(.redact)
|
||||
}
|
||||
|
||||
let debugActions: [TimelineItemContextMenuAction] = [.viewSource]
|
||||
var debugActions: [TimelineItemContextMenuAction] = [.viewSource]
|
||||
|
||||
if let item = timelineItem as? EncryptedRoomTimelineItem,
|
||||
case let .megolmV1AesSha2(sessionID) = item.encryptionType {
|
||||
debugActions.append(.retryDecryption(sessionID: sessionID))
|
||||
}
|
||||
|
||||
return .init(actions: actions, debugActions: debugActions)
|
||||
}
|
||||
@@ -286,6 +271,10 @@ class RoomScreenViewModel: RoomScreenViewModelType, RoomScreenViewModelProtocol
|
||||
let debugDescription = timelineController.debugDescription(for: item.id)
|
||||
MXLog.info(debugDescription)
|
||||
state.bindings.debugInfo = .init(title: "Timeline item", content: debugDescription)
|
||||
case .retryDecryption(let sessionID):
|
||||
Task {
|
||||
await timelineController.retryDecryption(for: sessionID)
|
||||
}
|
||||
}
|
||||
|
||||
if action.switchToDefaultComposer {
|
||||
@@ -302,14 +291,3 @@ extension RoomScreenViewModel {
|
||||
mediaProvider: MockMediaProvider(),
|
||||
roomName: "Preview room")
|
||||
}
|
||||
|
||||
private extension RoomTimelineViewProvider {
|
||||
/// The item's session ID if it was unable to decrypt and uses megolm.
|
||||
/// This will be nil for items that have already been decrypted.
|
||||
var sessionID: String? {
|
||||
guard case let .encrypted(item) = self,
|
||||
case let .megolmV1AesSha2(sessionID) = item.encryptionType
|
||||
else { return nil }
|
||||
return sessionID
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user