//
//  StatusProvider.swift
//  Mastodon
//
//  Created by sxiaojian on 2021/2/5.
//

import UIKit
import Combine
import CoreData
import CoreDataStack

protocol StatusProvider: NeedsDependency & DisposeBagCollectable & UIViewController {
    // async
    func status() -> Future<Status?, Never>
    func status(for cell: UITableViewCell?, indexPath: IndexPath?) -> Future<Status?, Never>
    func status(for cell: UICollectionViewCell) -> Future<Status?, Never>
    
    // sync
    var managedObjectContext: NSManagedObjectContext { get }
    var tableViewDiffableDataSource: UITableViewDiffableDataSource<StatusSection, Item>? { get }
    func item(for cell: UITableViewCell?, indexPath: IndexPath?) -> Item?
    func items(indexPaths: [IndexPath]) -> [Item]
}