Fix the emoji picker's title when setting a custom status. (#6039)

This commit is contained in:
Doug
2026-08-18 08:12:56 +01:00
committed by GitHub
parent 55a1a21f08
commit d3b068cbad
6 changed files with 22 additions and 6 deletions
@@ -1149,7 +1149,8 @@ class RoomFlowCoordinator: FlowCoordinatorProtocol {
private func presentEmojiPicker(selectedEmojis: Set<String>,
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)
@@ -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
@@ -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<String>
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)
}
@@ -9,14 +9,23 @@
import Foundation
typealias EmojiPickerScreenContinuation = AsyncStream<String>.Continuation
enum EmojiPickerScreenMode { case reaction, userStatus }
enum EmojiPickerScreenViewModelAction {
case dismiss
}
struct EmojiPickerScreenViewState: BindableState {
let mode: EmojiPickerScreenMode
var categories: [EmojiPickerEmojiCategoryViewData]
var selectedEmojis: Set<String>
var title: String {
switch mode {
case .reaction: L10n.commonReactions
case .userStatus: L10n.a11yCustomEmoji
}
}
}
enum EmojiPickerScreenViewAction {
@@ -20,8 +20,11 @@ class EmojiPickerScreenViewModel: EmojiPickerScreenViewModelType, EmojiPickerScr
actionsSubject.eraseToAnyPublisher()
}
init(selectedEmojis: Set<String>, emojiProvider: EmojiProviderProtocol, continuation: EmojiPickerScreenContinuation) {
let initialViewState = EmojiPickerScreenViewState(categories: [], selectedEmojis: selectedEmojis)
init(mode: EmojiPickerScreenMode = .reaction,
selectedEmojis: Set<String>,
emojiProvider: EmojiProviderProtocol,
continuation: EmojiPickerScreenContinuation) {
let initialViewState = EmojiPickerScreenViewState(mode: mode, categories: [], selectedEmojis: selectedEmojis)
self.emojiProvider = emojiProvider
self.continuation = continuation
super.init(initialViewState: initialViewState)
@@ -47,7 +47,7 @@ struct EmojiPickerScreen: View {
}
.padding(.horizontal, 6)
}
.navigationTitle(L10n.commonReactions)
.navigationTitle(context.viewState.title)
.navigationBarTitleDisplayMode(.inline)
.toolbar { toolbar }
.isSearching($isSearching)