From 1a7f58711bf5eb780b73d0398b94a624e2c00b23 Mon Sep 17 00:00:00 2001 From: Stefan Ceriu Date: Thu, 24 Jul 2025 14:02:17 +0300 Subject: [PATCH] Have the EmojiPicker screen take in a TimelineController similar to all the other flows. --- .../RoomFlowCoordinator.swift | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/ElementX/Sources/FlowCoordinators/RoomFlowCoordinator.swift b/ElementX/Sources/FlowCoordinators/RoomFlowCoordinator.swift index 64501ca2a..e8790da54 100644 --- a/ElementX/Sources/FlowCoordinators/RoomFlowCoordinator.swift +++ b/ElementX/Sources/FlowCoordinators/RoomFlowCoordinator.swift @@ -309,7 +309,13 @@ class RoomFlowCoordinator: FlowCoordinatorProtocol { presentMediaUploadPickerWithSource(source, timelineController: timelineController, animated: animated) case (_, .presentEmojiPicker, .emojiPicker(let itemID, let selectedEmoji, _)): - presentEmojiPicker(for: itemID, selectedEmoji: selectedEmoji) + guard let timelineController = (context.userInfo as? EventUserInfo)?.timelineController else { + fatalError("Missing required TimelineController") + } + presentEmojiPicker(for: itemID, + selectedEmoji: selectedEmoji, + timelineController: timelineController, + animated: animated) case (_, .presentMessageForwarding(let forwardingItem), .messageForwarding): presentMessageForwarding(with: forwardingItem) @@ -557,8 +563,8 @@ class RoomFlowCoordinator: FlowCoordinatorProtocol { stateMachine.tryEvent(.presentMediaUploadPreview(fileURL: url), userInfo: EventUserInfo(animated: animated, timelineController: timelineController)) case .presentEmojiPicker(let itemID, let selectedEmojis): - stateMachine.tryEvent(.presentEmojiPicker(itemID: itemID, - selectedEmojis: selectedEmojis)) + stateMachine.tryEvent(.presentEmojiPicker(itemID: itemID, selectedEmojis: selectedEmojis), + userInfo: EventUserInfo(animated: animated, timelineController: timelineController)) case .presentLocationPicker: stateMachine.tryEvent(.presentMapNavigator(interactionMode: .picker), userInfo: EventUserInfo(animated: animated, timelineController: timelineController)) @@ -656,8 +662,8 @@ class RoomFlowCoordinator: FlowCoordinatorProtocol { description: description)), userInfo: EventUserInfo(animated: animated, timelineController: timelineController)) case .presentEmojiPicker(let itemID, let selectedEmojis): - stateMachine.tryEvent(.presentEmojiPicker(itemID: itemID, - selectedEmojis: selectedEmojis)) + stateMachine.tryEvent(.presentEmojiPicker(itemID: itemID, selectedEmojis: selectedEmojis), + userInfo: EventUserInfo(animated: animated, timelineController: timelineController)) case .presentRoomMemberDetails(let userID): stateMachine.tryEvent(.presentRoomMemberDetails(userID: userID)) case .presentMessageForwarding(let forwardingItem): @@ -971,7 +977,10 @@ class RoomFlowCoordinator: FlowCoordinatorProtocol { } } - private func presentEmojiPicker(for itemID: TimelineItemIdentifier, selectedEmoji: Set) { + private func presentEmojiPicker(for itemID: TimelineItemIdentifier, + selectedEmoji: Set, + timelineController: TimelineControllerProtocol, + animated: Bool) { let params = EmojiPickerScreenCoordinatorParameters(emojiProvider: emojiProvider, itemID: itemID, selectedEmojis: selectedEmoji) let coordinator = EmojiPickerScreenCoordinator(parameters: params)