diff --git a/ElementX/Sources/FlowCoordinators/RoomFlowCoordinator.swift b/ElementX/Sources/FlowCoordinators/RoomFlowCoordinator.swift index 9fb2f49dc..877086a68 100644 --- a/ElementX/Sources/FlowCoordinators/RoomFlowCoordinator.swift +++ b/ElementX/Sources/FlowCoordinators/RoomFlowCoordinator.swift @@ -1149,7 +1149,8 @@ class RoomFlowCoordinator: FlowCoordinatorProtocol { private func presentEmojiPicker(selectedEmojis: Set, emojiPickerContinuation: EmojiPickerScreenContinuation, animated: Bool) { - let params = EmojiPickerScreenCoordinatorParameters(selectedEmojis: selectedEmojis, + let params = EmojiPickerScreenCoordinatorParameters(mode: .reaction, + selectedEmojis: selectedEmojis, emojiProvider: flowParameters.emojiProvider, continuation: emojiPickerContinuation) let coordinator = EmojiPickerScreenCoordinator(parameters: params) diff --git a/ElementX/Sources/FlowCoordinators/SettingsFlowCoordinator.swift b/ElementX/Sources/FlowCoordinators/SettingsFlowCoordinator.swift index b56c0fbcd..c8c1c6a64 100644 --- a/ElementX/Sources/FlowCoordinators/SettingsFlowCoordinator.swift +++ b/ElementX/Sources/FlowCoordinators/SettingsFlowCoordinator.swift @@ -162,7 +162,8 @@ class SettingsFlowCoordinator: FlowCoordinatorProtocol { } private func presentEmojiPicker(emojiPickerContinuation: EmojiPickerScreenContinuation) { - let coordinator = EmojiPickerScreenCoordinator(parameters: .init(selectedEmojis: [], + let coordinator = EmojiPickerScreenCoordinator(parameters: .init(mode: .userStatus, + selectedEmojis: [], emojiProvider: flowParameters.emojiProvider, continuation: emojiPickerContinuation)) coordinator.actions diff --git a/ElementX/Sources/Screens/EmojiPickerScreen/EmojiPickerScreenCoordinator.swift b/ElementX/Sources/Screens/EmojiPickerScreen/EmojiPickerScreenCoordinator.swift index e3f75e4e5..e55644604 100644 --- a/ElementX/Sources/Screens/EmojiPickerScreen/EmojiPickerScreenCoordinator.swift +++ b/ElementX/Sources/Screens/EmojiPickerScreen/EmojiPickerScreenCoordinator.swift @@ -10,6 +10,7 @@ import Combine import SwiftUI struct EmojiPickerScreenCoordinatorParameters { + let mode: EmojiPickerScreenMode /// Any emojis that should be displayed as already selected. let selectedEmojis: Set let emojiProvider: EmojiProviderProtocol @@ -32,7 +33,8 @@ final class EmojiPickerScreenCoordinator: CoordinatorProtocol { } init(parameters: EmojiPickerScreenCoordinatorParameters) { - viewModel = EmojiPickerScreenViewModel(selectedEmojis: parameters.selectedEmojis, + viewModel = EmojiPickerScreenViewModel(mode: parameters.mode, + selectedEmojis: parameters.selectedEmojis, emojiProvider: parameters.emojiProvider, continuation: parameters.continuation) } diff --git a/ElementX/Sources/Screens/EmojiPickerScreen/EmojiPickerScreenModels.swift b/ElementX/Sources/Screens/EmojiPickerScreen/EmojiPickerScreenModels.swift index df804c608..31a47ffad 100644 --- a/ElementX/Sources/Screens/EmojiPickerScreen/EmojiPickerScreenModels.swift +++ b/ElementX/Sources/Screens/EmojiPickerScreen/EmojiPickerScreenModels.swift @@ -9,14 +9,23 @@ import Foundation typealias EmojiPickerScreenContinuation = AsyncStream.Continuation +enum EmojiPickerScreenMode { case reaction, userStatus } enum EmojiPickerScreenViewModelAction { case dismiss } struct EmojiPickerScreenViewState: BindableState { + let mode: EmojiPickerScreenMode var categories: [EmojiPickerEmojiCategoryViewData] var selectedEmojis: Set + + var title: String { + switch mode { + case .reaction: L10n.commonReactions + case .userStatus: L10n.a11yCustomEmoji + } + } } enum EmojiPickerScreenViewAction { diff --git a/ElementX/Sources/Screens/EmojiPickerScreen/EmojiPickerScreenViewModel.swift b/ElementX/Sources/Screens/EmojiPickerScreen/EmojiPickerScreenViewModel.swift index 34be9ac6f..9dc0d3729 100644 --- a/ElementX/Sources/Screens/EmojiPickerScreen/EmojiPickerScreenViewModel.swift +++ b/ElementX/Sources/Screens/EmojiPickerScreen/EmojiPickerScreenViewModel.swift @@ -20,8 +20,11 @@ class EmojiPickerScreenViewModel: EmojiPickerScreenViewModelType, EmojiPickerScr actionsSubject.eraseToAnyPublisher() } - init(selectedEmojis: Set, emojiProvider: EmojiProviderProtocol, continuation: EmojiPickerScreenContinuation) { - let initialViewState = EmojiPickerScreenViewState(categories: [], selectedEmojis: selectedEmojis) + init(mode: EmojiPickerScreenMode = .reaction, + selectedEmojis: Set, + emojiProvider: EmojiProviderProtocol, + continuation: EmojiPickerScreenContinuation) { + let initialViewState = EmojiPickerScreenViewState(mode: mode, categories: [], selectedEmojis: selectedEmojis) self.emojiProvider = emojiProvider self.continuation = continuation super.init(initialViewState: initialViewState) diff --git a/ElementX/Sources/Screens/EmojiPickerScreen/View/EmojiPickerScreen.swift b/ElementX/Sources/Screens/EmojiPickerScreen/View/EmojiPickerScreen.swift index 4287b4c6d..b5fba7831 100644 --- a/ElementX/Sources/Screens/EmojiPickerScreen/View/EmojiPickerScreen.swift +++ b/ElementX/Sources/Screens/EmojiPickerScreen/View/EmojiPickerScreen.swift @@ -47,7 +47,7 @@ struct EmojiPickerScreen: View { } .padding(.horizontal, 6) } - .navigationTitle(L10n.commonReactions) + .navigationTitle(context.viewState.title) .navigationBarTitleDisplayMode(.inline) .toolbar { toolbar } .isSearching($isSearching)