/*
 * Copyright (c) Meta Platforms, Inc. and affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */

import IGListKit

// MARK: - LoadingSectionController

// A simpler section controller that manages the loading indicator
// Note that each type of content gets its own section controller
// This is a key concept in IGListKit - each model type gets a dedicated controller
final class LoadingSectionController: ListSectionController {

    override init() {
        super.init()
        self.inset = UIEdgeInsets(top: 5, left: 0, bottom: 5, right: 0)
    }

    // Set the size for the loading indicator cell
    override func sizeForItem(at index: Int) -> CGSize {
        let width = collectionContext?.containerSize.width ?? 0
        return CGSize(width: width, height: 60)
    }

    // Create and return the loading cell
    override func cellForItem(at index: Int) -> UICollectionViewCell {
        guard let cell = collectionContext?.dequeueReusableCell(of: LoadingCell.self, for: self, at: index) else {
            fatalError("Failed to dequeue LoadingCell")
        }
        return cell
    }

    // Nothing to update for this simple controller
    override func didUpdate(to object: Any) {
    }
}
