Remove all from ServerPicker (#690)

This commit is contained in:
Nathan Mattes 2022-12-28 13:50:59 +01:00
parent 0675bdb7db
commit f510cede33
4 changed files with 15 additions and 21 deletions

View File

@ -12,7 +12,6 @@ import MastodonLocalization
/// Note: update Equatable when change case
enum CategoryPickerItem {
case all
case language(language: String?)
case signupSpeed(manuallyReviewed: Bool?)
case category(category: Mastodon.Entity.Category)
@ -22,8 +21,6 @@ extension CategoryPickerItem {
var title: String {
switch self {
case .all:
return L10n.Scene.ServerPicker.Button.Category.all
case .language(let language):
if let language {
return language
@ -74,8 +71,6 @@ extension CategoryPickerItem {
var accessibilityDescription: String {
switch self {
case .all:
return L10n.Scene.ServerPicker.Button.Category.allAccessiblityDescription
case .language(let language):
if let language {
return language
@ -128,8 +123,6 @@ extension CategoryPickerItem {
extension CategoryPickerItem: Equatable {
static func == (lhs: CategoryPickerItem, rhs: CategoryPickerItem) -> Bool {
switch (lhs, rhs) {
case (.all, .all):
return true
case (.category(let categoryLeft), .category(let categoryRight)):
return categoryLeft.category.rawValue == categoryRight.category.rawValue
case (.language(let languageLeft), .language(let languageRight)):
@ -145,8 +138,6 @@ extension CategoryPickerItem: Equatable {
extension CategoryPickerItem: Hashable {
func hash(into hasher: inout Hasher) {
switch self {
case .all:
hasher.combine(String(describing: CategoryPickerItem.all.self))
case .language(let language):
if let language {
return hasher.combine(language)

View File

@ -14,6 +14,7 @@ import MastodonAsset
import MastodonCore
import MastodonLocalization
import MastodonUI
import MastodonSDK
final class MastodonPickServerViewController: UIViewController, NeedsDependency {
@ -390,14 +391,17 @@ extension MastodonPickServerViewController: UITableViewDelegate {
// MARK: - PickServerServerSectionTableHeaderViewDelegate
extension MastodonPickServerViewController: PickServerServerSectionTableHeaderViewDelegate {
func pickServerServerSectionTableHeaderView(_ headerView: PickServerServerSectionTableHeaderView, collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
guard let diffableDataSource = headerView.diffableDataSource else { return }
let item = diffableDataSource.itemIdentifier(for: indexPath)
guard let diffableDataSource = headerView.diffableDataSource,
let item = diffableDataSource.itemIdentifier(for: indexPath),
let cell = collectionView.cellForItem(at: indexPath) as? PickServerCategoryCollectionViewCell else { return }
if case let .language(_) = item {
// is handled by the button
viewModel.didPressMenuButton(in: cell)
} else if case let .signupSpeed(_) = item {
// gets also handled by button
viewModel.didPressMenuButton(in: cell)
} else {
viewModel.selectCategoryItem.value = item ?? .all
viewModel.selectCategoryItem.value = item
}
}
}

View File

@ -7,6 +7,7 @@
import UIKit
import Combine
import MastodonSDK
extension MastodonPickServerViewModel {
@ -27,8 +28,9 @@ extension MastodonPickServerViewModel {
serverSectionHeaderView.delegate = pickServerServerSectionTableHeaderViewDelegate
serverSectionHeaderView.diffableDataSource?.apply(sectionHeaderSnapshot, animatingDifferences: false) { [weak self] in
guard let self = self else { return }
guard let indexPath = self.serverSectionHeaderView.diffableDataSource?.indexPath(for: .all) else { return }
self.serverSectionHeaderView.collectionView.selectItem(at: indexPath, animated: false, scrollPosition: .centeredHorizontally)
guard let indexPath = self.serverSectionHeaderView.diffableDataSource?.indexPath(for: .category(category: .init(category: Mastodon.Entity.Category.Kind.general.rawValue, serversCount: 0))) else { return }
self.serverSectionHeaderView.collectionView.selectItem(at: indexPath, animated: false, scrollPosition: .right)
}
// set tableView

View File

@ -20,7 +20,7 @@ import MastodonLocalization
class MastodonPickServerViewModel: NSObject {
enum EmptyStateViewState {
case none
case none
case loading
case badNetwork
}
@ -35,11 +35,10 @@ class MastodonPickServerViewModel: NSObject {
var items: [CategoryPickerItem] = []
items.append(.language(language: nil))
items.append(.signupSpeed(manuallyReviewed: nil))
items.append(.all)
items.append(contentsOf: APIService.stubCategories().map { CategoryPickerItem.category(category: $0) })
return items
}()
let selectCategoryItem = CurrentValueSubject<CategoryPickerItem, Never>(.all)
let selectCategoryItem = CurrentValueSubject<CategoryPickerItem, Never>(.category(category: Mastodon.Entity.Category(category: Mastodon.Entity.Category.Kind.general.rawValue, serversCount: 0)))
let searchText = CurrentValueSubject<String, Never>("")
let selectedLanguage = CurrentValueSubject<String?, Never>(nil)
let manualApprovalRequired = CurrentValueSubject<Bool?, Never>(nil)
@ -174,8 +173,6 @@ extension MastodonPickServerViewModel {
// Filter the indexed servers by category or search text
switch selectCategoryItem {
case .all:
return MastodonPickServerViewModel.filterServers(servers: indexedServers, language: filters.selectedLanguage, manualApprovalRequired: filters.manualApprovalRequired, category: nil, searchText: searchText)
case .language(_), .signupSpeed(_):
return MastodonPickServerViewModel.filterServers(servers: indexedServers, language: filters.selectedLanguage, manualApprovalRequired: filters.manualApprovalRequired, category: nil, searchText: searchText)
case .category(let category):
@ -298,7 +295,7 @@ extension MastodonPickServerViewModel: PickServerCategoryCollectionViewCellDeleg
guard let item = cell.item else { return }
switch item {
case .all, .category(_):
case .category(_):
return
case .language(_):
guard allLanguages.value.isNotEmpty else { return }