diff --git a/Frameworks/Feed/Bundle/Sources/Coordinators/FeedListCoordinator.swift b/Frameworks/Feed/Bundle/Sources/Coordinators/FeedListCoordinator.swift new file mode 100644 index 0000000..cf494ab --- /dev/null +++ b/Frameworks/Feed/Bundle/Sources/Coordinators/FeedListCoordinator.swift @@ -0,0 +1,45 @@ +// +// FeedListCoordinator.swift +// ReviewsFeed +// +// Created by Javier Cicchelli on 21/03/2024. +// Copyright © 2024 Röck+Cöde. All rights reserved. +// + +import Foundation +import ReviewsCoordinationKit + +public final class FeedListCoordinator: Coordinator { + + // MARK: Constants + public let router: any Router + + private let sessionConfiguration: URLSessionConfiguration + + // MARK: Properties + public var children: [any Coordinator] = [] + + // MARK: Initialisers + public init( + router: any Router, + sessionConfiguration: URLSessionConfiguration = .ephemeral + ) { + self.router = router + self.sessionConfiguration = sessionConfiguration + } + + // MARK: Functions + public func present( + animated: Bool, + onDismiss: Router.OnDismissClosure? = nil + ) { + router.present( + FeedListViewController(configuration: .init( + session: sessionConfiguration + )), + animated: animated, + onDismiss: onDismiss + ) + } + +} diff --git a/Reviews.xcodeproj/project.pbxproj b/Reviews.xcodeproj/project.pbxproj index f6bb822..a33fbb5 100644 --- a/Reviews.xcodeproj/project.pbxproj +++ b/Reviews.xcodeproj/project.pbxproj @@ -13,6 +13,7 @@ 02909E792BAB6B0200710E14 /* FilterOption.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02909E782BAB6B0200710E14 /* FilterOption.swift */; }; 02909E7B2BAB6D2E00710E14 /* Bundle+Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02909E7A2BAB6D2E00710E14 /* Bundle+Constants.swift */; }; 02909E7D2BAB7FFE00710E14 /* Review+DTOs.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02909E7C2BAB7FFE00710E14 /* Review+DTOs.swift */; }; + 02C1B1972BAC9BFE001781DE /* FeedListCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02C1B1962BAC9BFE001781DE /* FeedListCoordinator.swift */; }; 02DA924E2BAAE3FD00C47985 /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = 02DA924D2BAAE3FD00C47985 /* Localizable.xcstrings */; }; 02DC7F9F2BA51793000EEEBE /* ReviewsFeed.h in Headers */ = {isa = PBXBuildFile; fileRef = 02DC7F912BA51793000EEEBE /* ReviewsFeed.h */; settings = {ATTRIBUTES = (Public, ); }; }; 02DC7FA22BA51793000EEEBE /* ReviewsFeed.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 02DC7F8F2BA51793000EEEBE /* ReviewsFeed.framework */; }; @@ -63,6 +64,7 @@ 02909E782BAB6B0200710E14 /* FilterOption.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FilterOption.swift; sourceTree = ""; }; 02909E7A2BAB6D2E00710E14 /* Bundle+Constants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Bundle+Constants.swift"; sourceTree = ""; }; 02909E7C2BAB7FFE00710E14 /* Review+DTOs.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Review+DTOs.swift"; sourceTree = ""; }; + 02C1B1962BAC9BFE001781DE /* FeedListCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedListCoordinator.swift; sourceTree = ""; }; 02DA924D2BAAE3FD00C47985 /* Localizable.xcstrings */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; path = Localizable.xcstrings; sourceTree = ""; }; 02DC7F8F2BA51793000EEEBE /* ReviewsFeed.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ReviewsFeed.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 02DC7F912BA51793000EEEBE /* ReviewsFeed.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ReviewsFeed.h; sourceTree = ""; }; @@ -195,6 +197,14 @@ path = Test; sourceTree = ""; }; + 02C1B1952BAC9BE7001781DE /* Coordinators */ = { + isa = PBXGroup; + children = ( + 02C1B1962BAC9BFE001781DE /* FeedListCoordinator.swift */, + ); + path = Coordinators; + sourceTree = ""; + }; 02DA924B2BAAE3E500C47985 /* Resources */ = { isa = PBXGroup; children = ( @@ -273,6 +283,7 @@ 02DC7FB02BA51B4F000EEEBE /* Sources */ = { isa = PBXGroup; children = ( + 02C1B1952BAC9BE7001781DE /* Coordinators */, 02620B862BA89C0000DE7137 /* Logic */, 02620B852BA89BF900DE7137 /* UI */, ); @@ -447,6 +458,7 @@ 0220ADA32BA90646001E6A9F /* FeedItemView.swift in Sources */, 02EACF362BABB2F200FF8ECD /* TopWord+DTOs.swift in Sources */, 02DC7FAF2BA51B4C000EEEBE /* Review.swift in Sources */, + 02C1B1972BAC9BFE001781DE /* FeedListCoordinator.swift in Sources */, 02DC7FAE2BA51B4C000EEEBE /* FeedListViewController.swift in Sources */, 02EACF322BABB23A00FF8ECD /* TopWordsView.swift in Sources */, 02909E792BAB6B0200710E14 /* FilterOption.swift in Sources */,