123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- //
- // FavoriteViewModel.swift
- // Mastodon
- //
- // Created by MainasuK Cirno on 2021-4-6.
- //
- import UIKit
- import Combine
- import CoreData
- import CoreDataStack
- import GameplayKit
- import MastodonCore
- final class FavoriteViewModel {
-
- var disposeBag = Set<AnyCancellable>()
-
- // input
- let context: AppContext
- let authContext: AuthContext
- let statusFetchedResultsController: StatusFetchedResultsController
- let listBatchFetchViewModel = ListBatchFetchViewModel()
- // output
- var diffableDataSource: UITableViewDiffableDataSource<StatusSection, StatusItem>?
- private(set) lazy var stateMachine: GKStateMachine = {
- let stateMachine = GKStateMachine(states: [
- State.Initial(viewModel: self),
- State.Reloading(viewModel: self),
- State.Fail(viewModel: self),
- State.Idle(viewModel: self),
- State.Loading(viewModel: self),
- State.NoMore(viewModel: self),
- ])
- stateMachine.enter(State.Initial.self)
- return stateMachine
- }()
-
- init(context: AppContext, authContext: AuthContext) {
- self.context = context
- self.authContext = authContext
- self.statusFetchedResultsController = StatusFetchedResultsController(
- managedObjectContext: context.managedObjectContext,
- domain: authContext.mastodonAuthenticationBox.domain,
- additionalTweetPredicate: nil
- )
- }
-
- }
|