Added the "configuration" property constant to the FeedListCoordinator coordinator in the Feed framework to initialise the view model for the FeedListViewController view controller.
This commit is contained in:
parent
2cb6e95d17
commit
af6d4db807
@ -37,6 +37,7 @@ extension AppDelegate: UIApplicationDelegate {
|
|||||||
coordinator.present(animated: false)
|
coordinator.present(animated: false)
|
||||||
coordinator.present(
|
coordinator.present(
|
||||||
child: FeedListCoordinator(
|
child: FeedListCoordinator(
|
||||||
|
configuration: .init(session: .ephemeral),
|
||||||
router: StackRouter(coordinator.navigationController)
|
router: StackRouter(coordinator.navigationController)
|
||||||
),
|
),
|
||||||
animated: false
|
animated: false
|
||||||
|
@ -10,22 +10,22 @@ import Foundation
|
|||||||
import ReviewsCoordinationKit
|
import ReviewsCoordinationKit
|
||||||
|
|
||||||
public final class FeedListCoordinator: Coordinator {
|
public final class FeedListCoordinator: Coordinator {
|
||||||
|
|
||||||
// MARK: Constants
|
// MARK: Constants
|
||||||
public let router: any Router
|
public let router: any Router
|
||||||
|
|
||||||
private let sessionConfiguration: URLSessionConfiguration
|
private let configuration: FeedListConfiguration
|
||||||
|
|
||||||
// MARK: Properties
|
// MARK: Properties
|
||||||
public var children: [any Coordinator] = []
|
public var children: [any Coordinator] = []
|
||||||
|
|
||||||
// MARK: Initialisers
|
// MARK: Initialisers
|
||||||
public init(
|
public init(
|
||||||
router: any Router,
|
configuration: FeedListConfiguration,
|
||||||
sessionConfiguration: URLSessionConfiguration = .ephemeral
|
router: any Router
|
||||||
) {
|
) {
|
||||||
|
self.configuration = configuration
|
||||||
self.router = router
|
self.router = router
|
||||||
self.sessionConfiguration = sessionConfiguration
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: Functions
|
// MARK: Functions
|
||||||
@ -34,9 +34,7 @@ public final class FeedListCoordinator: Coordinator {
|
|||||||
onDismiss: Router.OnDismissClosure? = nil
|
onDismiss: Router.OnDismissClosure? = nil
|
||||||
) {
|
) {
|
||||||
router.present(
|
router.present(
|
||||||
FeedListViewController(configuration: .init(
|
FeedListViewController(.init(configuration: configuration)),
|
||||||
session: sessionConfiguration
|
|
||||||
)),
|
|
||||||
animated: animated,
|
animated: animated,
|
||||||
onDismiss: onDismiss
|
onDismiss: onDismiss
|
||||||
)
|
)
|
||||||
|
@ -13,11 +13,8 @@ import ReviewsiTunesKit
|
|||||||
extension FeedListViewController {
|
extension FeedListViewController {
|
||||||
final class ViewModel: ObservableObject {
|
final class ViewModel: ObservableObject {
|
||||||
|
|
||||||
// MARK: Type aliases
|
|
||||||
typealias Configuration = FeedListViewController.Configuration
|
|
||||||
|
|
||||||
// MARK: Constants
|
// MARK: Constants
|
||||||
private let configuration: Configuration
|
private let configuration: FeedListConfiguration
|
||||||
|
|
||||||
private let filterWords: FilterWordsUseCase = .init()
|
private let filterWords: FilterWordsUseCase = .init()
|
||||||
private let topWords: TopWordsUseCase = .init()
|
private let topWords: TopWordsUseCase = .init()
|
||||||
@ -40,7 +37,7 @@ extension FeedListViewController {
|
|||||||
}()
|
}()
|
||||||
|
|
||||||
// MARK: Initialisers
|
// MARK: Initialisers
|
||||||
init(configuration: Configuration = .init()) {
|
init(configuration: FeedListConfiguration = .init()) {
|
||||||
self.configuration = configuration
|
self.configuration = configuration
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@ import ReviewsUIKit
|
|||||||
import SwiftUI
|
import SwiftUI
|
||||||
import UIKit
|
import UIKit
|
||||||
|
|
||||||
public class FeedListViewController: UITableViewController {
|
class FeedListViewController: UITableViewController {
|
||||||
|
|
||||||
// MARK: Constants
|
// MARK: Constants
|
||||||
private let viewModel: ViewModel
|
private let viewModel: ViewModel
|
||||||
@ -79,8 +79,8 @@ public class FeedListViewController: UITableViewController {
|
|||||||
}()
|
}()
|
||||||
|
|
||||||
// MARK: Initialisers
|
// MARK: Initialisers
|
||||||
public init(configuration: Configuration = .init()) {
|
init(_ viewModel: ViewModel) {
|
||||||
self.viewModel = .init(configuration: configuration)
|
self.viewModel = viewModel
|
||||||
|
|
||||||
super.init(style: .plain)
|
super.init(style: .plain)
|
||||||
}
|
}
|
||||||
@ -95,7 +95,7 @@ public class FeedListViewController: UITableViewController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// MARK: UIViewController
|
// MARK: UIViewController
|
||||||
public override func viewDidLoad() {
|
override func viewDidLoad() {
|
||||||
super.viewDidLoad()
|
super.viewDidLoad()
|
||||||
|
|
||||||
setNavigationBar()
|
setNavigationBar()
|
||||||
@ -108,14 +108,14 @@ public class FeedListViewController: UITableViewController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// MARK: UITableViewDataSource
|
// MARK: UITableViewDataSource
|
||||||
public override func tableView(
|
override func tableView(
|
||||||
_ tableView: UITableView,
|
_ tableView: UITableView,
|
||||||
numberOfRowsInSection section: Int
|
numberOfRowsInSection section: Int
|
||||||
) -> Int {
|
) -> Int {
|
||||||
viewModel.itemsCount
|
viewModel.itemsCount
|
||||||
}
|
}
|
||||||
|
|
||||||
public override func tableView(
|
override func tableView(
|
||||||
_ tableView: UITableView,
|
_ tableView: UITableView,
|
||||||
cellForRowAt indexPath: IndexPath
|
cellForRowAt indexPath: IndexPath
|
||||||
) -> UITableViewCell {
|
) -> UITableViewCell {
|
||||||
@ -127,7 +127,7 @@ public class FeedListViewController: UITableViewController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// MARK: UITableViewDelegate
|
// MARK: UITableViewDelegate
|
||||||
public override func tableView(
|
override func tableView(
|
||||||
_ tableView: UITableView,
|
_ tableView: UITableView,
|
||||||
didSelectRowAt indexPath: IndexPath
|
didSelectRowAt indexPath: IndexPath
|
||||||
) {
|
) {
|
||||||
@ -340,9 +340,9 @@ import ReviewsiTunesKit
|
|||||||
#Preview("Feed List loading reviews") {
|
#Preview("Feed List loading reviews") {
|
||||||
MockURLProtocol.response = .init(statusCode: 200)
|
MockURLProtocol.response = .init(statusCode: 200)
|
||||||
|
|
||||||
return UINavigationController(
|
return UINavigationController(rootViewController: FeedListViewController(.init(
|
||||||
rootViewController: FeedListViewController(configuration: .init(session: .mock))
|
configuration: .init(session: .mock)
|
||||||
)
|
)))
|
||||||
}
|
}
|
||||||
|
|
||||||
@available(iOS 17.0, *)
|
@available(iOS 17.0, *)
|
||||||
@ -398,9 +398,9 @@ import ReviewsiTunesKit
|
|||||||
])
|
])
|
||||||
)
|
)
|
||||||
|
|
||||||
return UINavigationController(
|
return UINavigationController(rootViewController: FeedListViewController(.init(
|
||||||
rootViewController: FeedListViewController(configuration: .init(session: .mock))
|
configuration: .init(session: .mock)
|
||||||
)
|
)))
|
||||||
}
|
}
|
||||||
|
|
||||||
@available(iOS 17.0, *)
|
@available(iOS 17.0, *)
|
||||||
@ -410,13 +410,13 @@ import ReviewsiTunesKit
|
|||||||
object: Feed(entries: [])
|
object: Feed(entries: [])
|
||||||
)
|
)
|
||||||
|
|
||||||
return UINavigationController(
|
return UINavigationController(rootViewController: FeedListViewController(.init(
|
||||||
rootViewController: FeedListViewController(configuration: .init(session: .mock))
|
configuration: .init(session: .mock)
|
||||||
)
|
)))
|
||||||
}
|
}
|
||||||
|
|
||||||
@available(iOS 17.0, *)
|
@available(iOS 17.0, *)
|
||||||
#Preview("Feed List with live reviews") {
|
#Preview("Feed List with live reviews") {
|
||||||
UINavigationController(rootViewController: FeedListViewController())
|
return UINavigationController(rootViewController: FeedListViewController(.init()))
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user