InfoManager.swift 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. //
  2. // InfoManager.swift
  3. // LoopFollow
  4. //
  5. // Created by Jonas Björkert on 2024-07-11.
  6. // Copyright © 2024 Jon Fawcett. All rights reserved.
  7. //
  8. import Foundation
  9. import UIKit
  10. class InfoManager {
  11. var tableData: [InfoData]
  12. weak var tableView: UITableView?
  13. init(tableView: UITableView) {
  14. self.tableData = InfoType.allCases.map { InfoData(name: $0.name) }
  15. self.tableView = tableView
  16. }
  17. func updateInfoData(type: InfoType, value: String) {
  18. tableData[type.rawValue].value = value
  19. tableView?.reloadData()
  20. }
  21. func clearInfoData(type: InfoType) {
  22. tableData[type.rawValue].value = ""
  23. tableView?.reloadData()
  24. }
  25. func clearInfoData(types: [InfoType]) {
  26. for type in types {
  27. tableData[type.rawValue].value = ""
  28. }
  29. tableView?.reloadData()
  30. }
  31. func numberOfRows() -> Int {
  32. return UserDefaultsRepository.infoSort.value.filter { UserDefaultsRepository.infoVisible.value[$0] }.count
  33. }
  34. func dataForIndexPath(_ indexPath: IndexPath) -> InfoData {
  35. let sortedAndVisibleIndexes = UserDefaultsRepository.infoSort.value.filter { UserDefaultsRepository.infoVisible.value[$0] }
  36. let infoIndex = sortedAndVisibleIndexes[indexPath.row]
  37. return tableData[infoIndex]
  38. }
  39. }