123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- //
- // FollowingListViewModel.swift
- // Mastodon
- //
- // Created by Cirno MainasuK on 2021-11-2.
- //
- import Foundation
- import Combine
- import CoreData
- import CoreDataStack
- import GameplayKit
- import MastodonCore
- import MastodonSDK
- final class FollowingListViewModel {
-
- var disposeBag = Set<AnyCancellable>()
-
- // input
- let context: AppContext
- let authContext: AuthContext
- let userFetchedResultsController: UserFetchedResultsController
- let listBatchFetchViewModel = ListBatchFetchViewModel()
-
- @Published var domain: String?
- @Published var userID: String?
-
- // output
- var diffableDataSource: UITableViewDiffableDataSource<UserSection, UserItem>?
- 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,
- domain: String?,
- userID: String?
- ) {
- self.context = context
- self.authContext = authContext
- self.userFetchedResultsController = UserFetchedResultsController(
- managedObjectContext: context.managedObjectContext,
- domain: domain,
- additionalPredicate: nil
- )
- self.domain = domain
- self.userID = userID
- // super.init()
-
- }
- }
|