mastodon-ios/Mastodon/Scene/Profile/Header/ProfileHeaderViewModel+Diff...

44 lines
1.6 KiB
Swift

//
// ProfileHeaderViewModel+Diffable.swift
// Mastodon
//
// Created by MainasuK Cirno on 2021-5-25.
//
import UIKit
extension ProfileHeaderViewModel {
func setupProfileFieldCollectionViewDiffableDataSource(
collectionView: UICollectionView,
profileFieldCollectionViewCellDelegate: ProfileFieldCollectionViewCellDelegate,
profileFieldAddEntryCollectionViewCellDelegate: ProfileFieldAddEntryCollectionViewCellDelegate
) {
let diffableDataSource = ProfileFieldSection.collectionViewDiffableDataSource(
for: collectionView,
profileFieldCollectionViewCellDelegate: profileFieldCollectionViewCellDelegate,
profileFieldAddEntryCollectionViewCellDelegate: profileFieldAddEntryCollectionViewCellDelegate
)
diffableDataSource.reorderingHandlers.canReorderItem = { item in
switch item {
case .field: return true
default: return false
}
}
diffableDataSource.reorderingHandlers.didReorder = { [weak self] transaction in
guard let self = self else { return }
let items = transaction.finalSnapshot.itemIdentifiers
var fieldValues: [ProfileFieldItem.FieldValue] = []
for item in items {
guard case let .field(field, _) = item else { continue }
fieldValues.append(field)
}
self.editProfileInfo.fields.value = fieldValues
}
fieldDiffableDataSource = diffableDataSource
}
}