mirror of
https://github.com/mastodon/mastodon-ios
synced 2025-04-11 22:58:02 +02:00
Remove all from ServerPicker (#690)
This commit is contained in:
parent
0675bdb7db
commit
f510cede33
@ -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)
|
||||
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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 }
|
||||
|
Loading…
x
Reference in New Issue
Block a user