From 0d1dc4bf01caeacc8a85db09d362ef7cfb577d88 Mon Sep 17 00:00:00 2001 From: Doug <6060466+pixlwave@users.noreply.github.com> Date: Wed, 6 Mar 2024 12:33:32 +0000 Subject: [PATCH] Fix for a potential crash when building a removed timeline item. (#2533) --- .../RoomScreen/RoomScreenInteractionHandler.swift | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/ElementX/Sources/Screens/RoomScreen/RoomScreenInteractionHandler.swift b/ElementX/Sources/Screens/RoomScreen/RoomScreenInteractionHandler.swift index 6e7153f09..5aa9ad225 100644 --- a/ElementX/Sources/Screens/RoomScreen/RoomScreenInteractionHandler.swift +++ b/ElementX/Sources/Screens/RoomScreen/RoomScreenInteractionHandler.swift @@ -503,7 +503,9 @@ class RoomScreenInteractionHandler { await voiceMessageRecorder.stopRecording() } - let audioPlayerState = audioPlayerState(for: itemID) + guard let audioPlayerState = audioPlayerState(for: itemID) else { + fatalError("Audio player not found for \(itemID)") + } // Ensure this one is attached if !audioPlayerState.isAttached { @@ -546,13 +548,15 @@ class RoomScreenInteractionHandler { await playerState.updateState(progress: progress) } - func audioPlayerState(for itemID: TimelineItemIdentifier) -> AudioPlayerState { + func audioPlayerState(for itemID: TimelineItemIdentifier) -> AudioPlayerState? { guard let timelineItem = timelineController.timelineItems.firstUsingStableID(itemID) else { - fatalError("TimelineItem \(itemID) not found") + MXLog.error("TimelineItem \(itemID) not found") + return nil } guard let voiceMessageRoomTimelineItem = timelineItem as? VoiceMessageRoomTimelineItem else { - fatalError("Invalid TimelineItem type (expecting `VoiceMessageRoomTimelineItem` but found \(type(of: timelineItem)) instead") + MXLog.error("Invalid TimelineItem type (expecting `VoiceMessageRoomTimelineItem` but found \(type(of: timelineItem)) instead") + return nil } if let playerState = mediaPlayerProvider.playerState(for: .timelineItemIdentifier(itemID)) {