// Copyright © 2021 Metabolist. All rights reserved.

import UIKit
import ViewModels

extension CollectionSection {
    struct Identifier: Hashable {
        let index: Int
        let searchScope: SearchScope?
    }
}

extension Array where Element == CollectionSection {
    func snapshot() -> NSDiffableDataSourceSnapshot<CollectionSection.Identifier, CollectionItem> {
        var snapshot = NSDiffableDataSourceSnapshot<CollectionSection.Identifier, CollectionItem>()

        for (index, section) in enumerated() {
            let identifier = CollectionSection.Identifier(
                index: index,
                searchScope: section.searchScope)
            snapshot.appendSections([identifier])
            snapshot.appendItems(section.items, toSection: identifier)
        }

        return snapshot
    }
}