diff --git a/Frameworks/Feed/Bundle/Sources/Coordinators/FeedItemCoordinator.swift b/Frameworks/Feed/Bundle/Sources/Coordinators/FeedItemCoordinator.swift new file mode 100644 index 0000000..765c916 --- /dev/null +++ b/Frameworks/Feed/Bundle/Sources/Coordinators/FeedItemCoordinator.swift @@ -0,0 +1,42 @@ +// +// FeedItemCoordinator.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 FeedItemCoordinator: Coordinator { + + // MARK: Constants + public let router: any Router + + private let item: Review + + // MARK: Properties + public var children: [any Coordinator] = [] + + public init( + item: Review, + router: any Router + ) { + self.item = item + self.router = router + } + + // MARK: Functions + public func present( + animated: Bool, + onDismiss: Router.OnDismissClosure? = nil + ) { + router.present( + FeedItemViewController(item), + animated: animated, + onDismiss: onDismiss + ) + } + +} diff --git a/Frameworks/Feed/Bundle/Sources/Logic/Models/Review.swift b/Frameworks/Feed/Bundle/Sources/Logic/Models/Review.swift index a315a88..4da44cf 100644 --- a/Frameworks/Feed/Bundle/Sources/Logic/Models/Review.swift +++ b/Frameworks/Feed/Bundle/Sources/Logic/Models/Review.swift @@ -8,7 +8,7 @@ import Foundation -struct Review { +public struct Review { // MARK: Constants let author: String diff --git a/Reviews.xcodeproj/project.pbxproj b/Reviews.xcodeproj/project.pbxproj index 8465ebc..d05c3f5 100644 --- a/Reviews.xcodeproj/project.pbxproj +++ b/Reviews.xcodeproj/project.pbxproj @@ -11,6 +11,8 @@ 023AC7FC2BAA3EC10027D064 /* Int+Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 023AC7FB2BAA3EC10027D064 /* Int+Constants.swift */; }; 02620B8C2BA89C9A00DE7137 /* FeedListViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02620B8B2BA89C9A00DE7137 /* FeedListViewModel.swift */; }; 028134712BACC8CC0074AB4B /* FeedListConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 028134702BACC8CC0074AB4B /* FeedListConfiguration.swift */; }; + 028134822BACCC780074AB4B /* FeedListCoordination.swift in Sources */ = {isa = PBXBuildFile; fileRef = 028134812BACCC770074AB4B /* FeedListCoordination.swift */; }; + 028134842BACD0B20074AB4B /* FeedItemCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 028134832BACD0B20074AB4B /* FeedItemCoordinator.swift */; }; 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 */; }; @@ -64,6 +66,8 @@ 023AC7FB2BAA3EC10027D064 /* Int+Constants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Int+Constants.swift"; sourceTree = ""; }; 02620B8B2BA89C9A00DE7137 /* FeedListViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedListViewModel.swift; sourceTree = ""; }; 028134702BACC8CC0074AB4B /* FeedListConfiguration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedListConfiguration.swift; sourceTree = ""; }; + 028134812BACCC770074AB4B /* FeedListCoordination.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedListCoordination.swift; sourceTree = ""; }; + 028134832BACD0B20074AB4B /* FeedItemCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedItemCoordinator.swift; sourceTree = ""; }; 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 = ""; }; @@ -185,6 +189,14 @@ path = Structs; sourceTree = ""; }; + 028134802BACCC630074AB4B /* Coordination */ = { + isa = PBXGroup; + children = ( + 028134812BACCC770074AB4B /* FeedListCoordination.swift */, + ); + path = Coordination; + sourceTree = ""; + }; 02909E772BAB6AD500710E14 /* Enumerations */ = { isa = PBXGroup; children = ( @@ -213,6 +225,8 @@ 02C1B1952BAC9BE7001781DE /* Coordinators */ = { isa = PBXGroup; children = ( + 028134802BACCC630074AB4B /* Coordination */, + 028134832BACD0B20074AB4B /* FeedItemCoordinator.swift */, 02C1B1962BAC9BFE001781DE /* FeedListCoordinator.swift */, ); path = Coordinators; @@ -484,6 +498,7 @@ 02DC7FAC2BA51B4C000EEEBE /* FeedItemViewController.swift in Sources */, 02909E7B2BAB6D2E00710E14 /* Bundle+Constants.swift in Sources */, 02EACF2E2BABA34600FF8ECD /* FeedItemCell.swift in Sources */, + 028134842BACD0B20074AB4B /* FeedItemCoordinator.swift in Sources */, 02909E7D2BAB7FFE00710E14 /* Review+DTOs.swift in Sources */, 0220ADA32BA90646001E6A9F /* FeedItemView.swift in Sources */, 02EACF362BABB2F200FF8ECD /* TopWord+DTOs.swift in Sources */, @@ -492,6 +507,7 @@ 02DC7FAE2BA51B4C000EEEBE /* FeedListViewController.swift in Sources */, 02EACF322BABB23A00FF8ECD /* TopWordsView.swift in Sources */, 028134712BACC8CC0074AB4B /* FeedListConfiguration.swift in Sources */, + 028134822BACCC780074AB4B /* FeedListCoordination.swift in Sources */, 02909E792BAB6B0200710E14 /* FilterOption.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0;