2
2
mirror of https://github.com/mastodon/mastodon-ios synced 2025-04-11 22:58:02 +02:00

UX-improvements for server-picker (#690)

Sprinkle in some haptic feedback and show menu immediately
This commit is contained in:
Nathan Mattes 2023-01-06 16:39:36 +01:00
parent eda79e6beb
commit bd3c5ef58a
2 changed files with 9 additions and 0 deletions

View File

@ -36,11 +36,13 @@ extension CategoryPickerSection {
let allLanguagesAction = UIAction(title: L10n.Scene.ServerPicker.Language.all) { _ in
viewModel.selectedLanguage.value = nil
UISelectionFeedbackGenerator().selectionChanged()
cell.titleLabel.text = L10n.Scene.ServerPicker.Button.language
}
let languageActions = viewModel.allLanguages.value.compactMap { language in
UIAction(title: language.language ?? language.locale) { action in
UISelectionFeedbackGenerator().selectionChanged()
viewModel.selectedLanguage.value = language.locale
cell.titleLabel.text = language.language
}
@ -56,21 +58,25 @@ extension CategoryPickerSection {
cell.menuButton.isUserInteractionEnabled = true
cell.menuButton.isHidden = false
cell.menuButton.menu = languageMenu
cell.menuButton.showsMenuAsPrimaryAction = true
case .signupSpeed(_):
let doesntMatterAction = UIAction(title: L10n.Scene.ServerPicker.SignupSpeed.all) { _ in
viewModel.manualApprovalRequired.value = nil
cell.titleLabel.text = L10n.Scene.ServerPicker.Button.signupSpeed
UISelectionFeedbackGenerator().selectionChanged()
}
let manualApprovalAction = UIAction(title: L10n.Scene.ServerPicker.SignupSpeed.manuallyReviewed) { action in
viewModel.manualApprovalRequired.value = true
cell.titleLabel.text = action.title
UISelectionFeedbackGenerator().selectionChanged()
}
let instantSignupAction = UIAction(title: L10n.Scene.ServerPicker.SignupSpeed.instant) { action in
viewModel.manualApprovalRequired.value = false
cell.titleLabel.text = action.title
UISelectionFeedbackGenerator().selectionChanged()
}
let signupSpeedMenu = UIMenu(title: L10n.Scene.ServerPicker.Button.signupSpeed,
@ -80,6 +86,7 @@ extension CategoryPickerSection {
cell.menuButton.isUserInteractionEnabled = true
cell.menuButton.isHidden = false
cell.menuButton.menu = signupSpeedMenu
cell.menuButton.showsMenuAsPrimaryAction = true
}
cell.observe(\.isSelected, options: [.initial, .new]) { cell, _ in

View File

@ -98,6 +98,8 @@ extension PickServerServerSectionTableHeaderView {
extension PickServerServerSectionTableHeaderView: UICollectionViewDelegate {
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
UISelectionFeedbackGenerator().selectionChanged()
collectionView.selectItem(at: indexPath, animated: true, scrollPosition: .centeredHorizontally)
delegate?.pickServerServerSectionTableHeaderView(self, collectionView: collectionView, didSelectItemAt: indexPath)
}