/*
 * 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 UIKit
import IGListKit

final class LoadingCellModel {
    let identifier = "loading-cell"
}

// MARK: - ListDiffable Implementation

// Even simple models like this loading indicator need to conform to ListDiffable
// in order to be used with IGListKit
extension LoadingCellModel: ListDiffable {

    // The diffIdentifier uniquely identifies this object
    // For a singleton loading indicator, a static string ID is sufficient
    func diffIdentifier() -> any NSObjectProtocol {
        return self.identifier as NSObjectProtocol
    }

    // isEqual compares properties that affect the visual representation
    // For this simple case, comparing identifiers is enough
    func isEqual(toDiffableObject object: (any ListDiffable)?) -> Bool {
        guard let object = object as? LoadingCellModel else { return false }
        return self.identifier == object.identifier
    }
}
