diff --git a/Data Sources/ExploreDataSource.swift b/Data Sources/ExploreDataSource.swift index 2c36a4d..12245ac 100644 --- a/Data Sources/ExploreDataSource.swift +++ b/Data Sources/ExploreDataSource.swift @@ -14,25 +14,49 @@ final class ExploreDataSource: UICollectionViewDiffableDataSource { + $0.viewModel = $2 + } + + let instanceRegistration = UICollectionView.CellRegistration { + $0.viewModel = $2 + } + + let itemRegistration = UICollectionView.CellRegistration + { + var configuration = $0.defaultContentConfiguration() + + switch $2 { + case .profileDirectory: + configuration.text = NSLocalizedString("explore.profile-directory", comment: "") + configuration.image = UIImage(systemName: "person.crop.square.fill.and.at.rectangle") + default: + break + } + + $0.contentConfiguration = configuration + $0.accessories = [.disclosureIndicator()] + } + super.init(collectionView: collectionView) { switch $2 { case let .tag(tag): return $0.dequeueConfiguredReusableCell( - using: Self.tagRegistration, + using: tagRegistration, for: $1, item: viewModel.viewModel(tag: tag)) case .instance: return $0.dequeueConfiguredReusableCell( - using: Self.instanceRegistration, + using: instanceRegistration, for: $1, item: viewModel.instanceViewModel) default: - return $0.dequeueConfiguredReusableCell(using: Self.itemRegistration, for: $1, item: $2) + return $0.dequeueConfiguredReusableCell(using: itemRegistration, for: $1, item: $2) } } let headerRegistration = UICollectionView.SupplementaryRegistration - (elementKind: "Header") { [weak self] in + (elementKind: UICollectionView.elementKindSectionHeader) { [weak self] in $0.label.text = self?.snapshot().sectionIdentifiers[$2.section].displayName } @@ -55,30 +79,6 @@ final class ExploreDataSource: UICollectionViewDiffableDataSource { - $0.viewModel = $2 - } - - static let instanceRegistration = UICollectionView.CellRegistration { - $0.viewModel = $2 - } - - static let itemRegistration = UICollectionView.CellRegistration - { - var configuration = $0.defaultContentConfiguration() - - switch $2 { - case .profileDirectory: - configuration.text = NSLocalizedString("explore.profile-directory", comment: "") - configuration.image = UIImage(systemName: "person.crop.square.fill.and.at.rectangle") - default: - break - } - - $0.contentConfiguration = configuration - $0.accessories = [.disclosureIndicator()] - } - func update(tags: [Tag], instanceViewModel: InstanceViewModel?) { var newsnapshot = NSDiffableDataSourceSnapshot() diff --git a/View Controllers/EmojiPickerViewController.swift b/View Controllers/EmojiPickerViewController.swift index a6d5869..06a16d8 100644 --- a/View Controllers/EmojiPickerViewController.swift +++ b/View Controllers/EmojiPickerViewController.swift @@ -26,7 +26,7 @@ final class EmojiPickerViewController: UICollectionViewController { } let headerRegistration = UICollectionView.SupplementaryRegistration - (elementKind: "Header") { [weak self] in + (elementKind: UICollectionView.elementKindSectionHeader) { [weak self] in $0.label.text = self?.dataSource.snapshot().sectionIdentifiers[$2.section].displayName } @@ -184,8 +184,6 @@ final class EmojiPickerViewController: UICollectionViewController { } private extension EmojiPickerViewController { - static let headerElementKind = "com.metabolist.metatext.emoji-picker.header" - static func layout() -> UICollectionViewLayout { let itemSize = NSCollectionLayoutSize( widthDimension: .absolute(.minimumButtonDimension), @@ -212,7 +210,7 @@ private extension EmojiPickerViewController { heightDimension: .estimated(.defaultSpacing)) let header = NSCollectionLayoutBoundarySupplementaryItem( layoutSize: headerSize, - elementKind: Self.headerElementKind, + elementKind: UICollectionView.elementKindSectionHeader, alignment: .top) section.boundarySupplementaryItems = [header]