mirror of
https://github.com/metabolist/metatext.git
synced 2025-03-08 06:41:03 +00:00
Fix collection view issues
This commit is contained in:
parent
4db6fd85b2
commit
5ff2d41d7c
2 changed files with 30 additions and 32 deletions
|
@ -14,25 +14,49 @@ final class ExploreDataSource: UICollectionViewDiffableDataSource<ExploreViewMod
|
||||||
init(collectionView: UICollectionView, viewModel: ExploreViewModel) {
|
init(collectionView: UICollectionView, viewModel: ExploreViewModel) {
|
||||||
self.collectionView = collectionView
|
self.collectionView = collectionView
|
||||||
|
|
||||||
|
let tagRegistration = UICollectionView.CellRegistration<TagCollectionViewCell, TagViewModel> {
|
||||||
|
$0.viewModel = $2
|
||||||
|
}
|
||||||
|
|
||||||
|
let instanceRegistration = UICollectionView.CellRegistration<InstanceCollectionViewCell, InstanceViewModel> {
|
||||||
|
$0.viewModel = $2
|
||||||
|
}
|
||||||
|
|
||||||
|
let itemRegistration = UICollectionView.CellRegistration
|
||||||
|
<SeparatorConfiguredCollectionViewListCell, ExploreViewModel.Item> {
|
||||||
|
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) {
|
super.init(collectionView: collectionView) {
|
||||||
switch $2 {
|
switch $2 {
|
||||||
case let .tag(tag):
|
case let .tag(tag):
|
||||||
return $0.dequeueConfiguredReusableCell(
|
return $0.dequeueConfiguredReusableCell(
|
||||||
using: Self.tagRegistration,
|
using: tagRegistration,
|
||||||
for: $1,
|
for: $1,
|
||||||
item: viewModel.viewModel(tag: tag))
|
item: viewModel.viewModel(tag: tag))
|
||||||
case .instance:
|
case .instance:
|
||||||
return $0.dequeueConfiguredReusableCell(
|
return $0.dequeueConfiguredReusableCell(
|
||||||
using: Self.instanceRegistration,
|
using: instanceRegistration,
|
||||||
for: $1,
|
for: $1,
|
||||||
item: viewModel.instanceViewModel)
|
item: viewModel.instanceViewModel)
|
||||||
default:
|
default:
|
||||||
return $0.dequeueConfiguredReusableCell(using: Self.itemRegistration, for: $1, item: $2)
|
return $0.dequeueConfiguredReusableCell(using: itemRegistration, for: $1, item: $2)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let headerRegistration = UICollectionView.SupplementaryRegistration
|
let headerRegistration = UICollectionView.SupplementaryRegistration
|
||||||
<ExploreSectionHeaderView>(elementKind: "Header") { [weak self] in
|
<ExploreSectionHeaderView>(elementKind: UICollectionView.elementKindSectionHeader) { [weak self] in
|
||||||
$0.label.text = self?.snapshot().sectionIdentifiers[$2.section].displayName
|
$0.label.text = self?.snapshot().sectionIdentifiers[$2.section].displayName
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -55,30 +79,6 @@ final class ExploreDataSource: UICollectionViewDiffableDataSource<ExploreViewMod
|
||||||
}
|
}
|
||||||
|
|
||||||
private extension ExploreDataSource {
|
private extension ExploreDataSource {
|
||||||
static let tagRegistration = UICollectionView.CellRegistration<TagCollectionViewCell, TagViewModel> {
|
|
||||||
$0.viewModel = $2
|
|
||||||
}
|
|
||||||
|
|
||||||
static let instanceRegistration = UICollectionView.CellRegistration<InstanceCollectionViewCell, InstanceViewModel> {
|
|
||||||
$0.viewModel = $2
|
|
||||||
}
|
|
||||||
|
|
||||||
static let itemRegistration = UICollectionView.CellRegistration
|
|
||||||
<SeparatorConfiguredCollectionViewListCell, ExploreViewModel.Item> {
|
|
||||||
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?) {
|
func update(tags: [Tag], instanceViewModel: InstanceViewModel?) {
|
||||||
var newsnapshot = NSDiffableDataSourceSnapshot<ExploreViewModel.Section, ExploreViewModel.Item>()
|
var newsnapshot = NSDiffableDataSourceSnapshot<ExploreViewModel.Section, ExploreViewModel.Item>()
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,7 @@ final class EmojiPickerViewController: UICollectionViewController {
|
||||||
}
|
}
|
||||||
|
|
||||||
let headerRegistration = UICollectionView.SupplementaryRegistration
|
let headerRegistration = UICollectionView.SupplementaryRegistration
|
||||||
<EmojiCategoryHeaderView>(elementKind: "Header") { [weak self] in
|
<EmojiCategoryHeaderView>(elementKind: UICollectionView.elementKindSectionHeader) { [weak self] in
|
||||||
$0.label.text = self?.dataSource.snapshot().sectionIdentifiers[$2.section].displayName
|
$0.label.text = self?.dataSource.snapshot().sectionIdentifiers[$2.section].displayName
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -184,8 +184,6 @@ final class EmojiPickerViewController: UICollectionViewController {
|
||||||
}
|
}
|
||||||
|
|
||||||
private extension EmojiPickerViewController {
|
private extension EmojiPickerViewController {
|
||||||
static let headerElementKind = "com.metabolist.metatext.emoji-picker.header"
|
|
||||||
|
|
||||||
static func layout() -> UICollectionViewLayout {
|
static func layout() -> UICollectionViewLayout {
|
||||||
let itemSize = NSCollectionLayoutSize(
|
let itemSize = NSCollectionLayoutSize(
|
||||||
widthDimension: .absolute(.minimumButtonDimension),
|
widthDimension: .absolute(.minimumButtonDimension),
|
||||||
|
@ -212,7 +210,7 @@ private extension EmojiPickerViewController {
|
||||||
heightDimension: .estimated(.defaultSpacing))
|
heightDimension: .estimated(.defaultSpacing))
|
||||||
let header = NSCollectionLayoutBoundarySupplementaryItem(
|
let header = NSCollectionLayoutBoundarySupplementaryItem(
|
||||||
layoutSize: headerSize,
|
layoutSize: headerSize,
|
||||||
elementKind: Self.headerElementKind,
|
elementKind: UICollectionView.elementKindSectionHeader,
|
||||||
alignment: .top)
|
alignment: .top)
|
||||||
|
|
||||||
section.boundarySupplementaryItems = [header]
|
section.boundarySupplementaryItems = [header]
|
||||||
|
|
Loading…
Reference in a new issue