FamiliarFollowersViewModel.swift 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. //
  2. // FamiliarFollowersViewModel.swift
  3. // Mastodon
  4. //
  5. // Created by MainasuK on 2022-5-17.
  6. //
  7. import UIKit
  8. import Combine
  9. import MastodonCore
  10. import MastodonSDK
  11. import CoreDataStack
  12. final class FamiliarFollowersViewModel {
  13. var disposeBag = Set<AnyCancellable>()
  14. // input
  15. let context: AppContext
  16. let authContext: AuthContext
  17. let userFetchedResultsController: UserFetchedResultsController
  18. @Published var familiarFollowers: Mastodon.Entity.FamiliarFollowers?
  19. // output
  20. var diffableDataSource: UITableViewDiffableDataSource<UserSection, UserItem>?
  21. init(context: AppContext, authContext: AuthContext) {
  22. self.context = context
  23. self.authContext = authContext
  24. self.userFetchedResultsController = UserFetchedResultsController(
  25. managedObjectContext: context.managedObjectContext,
  26. domain: authContext.mastodonAuthenticationBox.domain,
  27. additionalPredicate: nil
  28. )
  29. // end init
  30. $familiarFollowers
  31. .map { familiarFollowers -> [MastodonUser.ID] in
  32. guard let familiarFollowers = familiarFollowers else { return [] }
  33. return familiarFollowers.accounts.map { $0.id }
  34. }
  35. .assign(to: \.userIDs, on: userFetchedResultsController)
  36. .store(in: &disposeBag)
  37. }
  38. }