diff --git a/Plugin/DependencyPlugin/ProjectDescriptionHelpers/ModulePaths.swift b/Plugin/DependencyPlugin/ProjectDescriptionHelpers/ModulePaths.swift index db6ba289..1112c1b0 100644 --- a/Plugin/DependencyPlugin/ProjectDescriptionHelpers/ModulePaths.swift +++ b/Plugin/DependencyPlugin/ProjectDescriptionHelpers/ModulePaths.swift @@ -106,3 +106,7 @@ public extension MicroTargetPathConvertable where Self: RawRepresentable { "\(self.rawValue)\(type.rawValue)" } } + +// MARK: - For DI +extension ModulePaths.Feature: CaseIterable {} +extension ModulePaths.Domain: CaseIterable {} diff --git a/Projects/App/Project.swift b/Projects/App/Project.swift index cd1deb31..f326650b 100644 --- a/Projects/App/Project.swift +++ b/Projects/App/Project.swift @@ -28,31 +28,16 @@ let targets: [Target] = [ resources: ["Resources/**"], entitlements: "Support/Dotori.entitlements", scripts: scripts, - dependencies: [ - .feature(target: .RootFeature), - .feature(target: .SplashFeature), - .feature(target: .SigninFeature), - .feature(target: .MainTabFeature), - .feature(target: .SignupFeature), - .feature(target: .RenewalPasswordFeature), - .feature(target: .ConfirmationDialogFeature), - .feature(target: .InputDialogFeature), - .feature(target: .FilterSelfStudyFeature), - .domain(target: .AuthDomain), - .domain(target: .UserDomain), - .domain(target: .SelfStudyDomain), - .domain(target: .MassageDomain), - .domain(target: .MealDomain), - .domain(target: .NoticeDomain), - .domain(target: .ViolationDomain), - .domain(target: .MusicDomain), - .core(target: .JwtStore), - .core(target: .KeyValueStore), - .core(target: .Networking), - .core(target: .Database), - .core(target: .Timer), - .target(name: "\(env.name)ShareExtension") - ], + dependencies: ModulePaths.Feature.allCases.map { TargetDependency.feature(target: $0) } + + ModulePaths.Domain.allCases.map { TargetDependency.domain(target: $0) } + + [ + .core(target: .JwtStore), + .core(target: .KeyValueStore), + .core(target: .Networking), + .core(target: .Database), + .core(target: .Timer), + .target(name: "\(env.name)ShareExtension") + ], settings: .settings( base: env.baseSetting ) diff --git a/Projects/Feature/ConfirmationDialogFeature/Sources/Factory/ConfirmationDialogFactory.swift b/Projects/Feature/ConfirmationDialogFeature/Interface/Factory/ConfirmationDialogFactory.swift similarity index 74% rename from Projects/Feature/ConfirmationDialogFeature/Sources/Factory/ConfirmationDialogFactory.swift rename to Projects/Feature/ConfirmationDialogFeature/Interface/Factory/ConfirmationDialogFactory.swift index da6219ef..a9ad41e9 100644 --- a/Projects/Feature/ConfirmationDialogFeature/Sources/Factory/ConfirmationDialogFactory.swift +++ b/Projects/Feature/ConfirmationDialogFeature/Interface/Factory/ConfirmationDialogFactory.swift @@ -1,4 +1,4 @@ -import BaseFeature +import BaseFeatureInterface import UIKit public protocol ConfirmationDialogFactory { @@ -6,5 +6,5 @@ public protocol ConfirmationDialogFactory { title: String, description: String, confirmAction: @escaping () async -> Void - ) -> any StoredViewControllable + ) -> any RoutedViewControllable } diff --git a/Projects/Feature/ConfirmationDialogFeature/Project.swift b/Projects/Feature/ConfirmationDialogFeature/Project.swift index 3fd0d19c..de1b7053 100644 --- a/Projects/Feature/ConfirmationDialogFeature/Project.swift +++ b/Projects/Feature/ConfirmationDialogFeature/Project.swift @@ -5,10 +5,14 @@ import ProjectDescriptionHelpers let project = Project.module( name: ModulePaths.Feature.ConfirmationDialogFeature.rawValue, targets: [ + .interface(module: .feature(.ConfirmationDialogFeature), dependencies: [ + .feature(target: .BaseFeature, type: .interface) + ]), .implements( module: .feature(.ConfirmationDialogFeature), dependencies: [ - .feature(target: .BaseFeature) + .feature(target: .BaseFeature), + .feature(target: .ConfirmationDialogFeature, type: .interface) ] ), .tests( diff --git a/Projects/Feature/ConfirmationDialogFeature/Sources/Assembly/ConfirmationDialogAssembly.swift b/Projects/Feature/ConfirmationDialogFeature/Sources/Assembly/ConfirmationDialogAssembly.swift index b26960b8..d5e4076a 100644 --- a/Projects/Feature/ConfirmationDialogFeature/Sources/Assembly/ConfirmationDialogAssembly.swift +++ b/Projects/Feature/ConfirmationDialogFeature/Sources/Assembly/ConfirmationDialogAssembly.swift @@ -1,3 +1,4 @@ +import ConfirmationDialogFeatureInterface import Swinject public final class ConfirmationDialogAssembly: Assembly { diff --git a/Projects/Feature/ConfirmationDialogFeature/Sources/Factory/ConfirmationDialogFactoryImpl.swift b/Projects/Feature/ConfirmationDialogFeature/Sources/Factory/ConfirmationDialogFactoryImpl.swift index 95d48fed..1f2b5376 100644 --- a/Projects/Feature/ConfirmationDialogFeature/Sources/Factory/ConfirmationDialogFactoryImpl.swift +++ b/Projects/Feature/ConfirmationDialogFeature/Sources/Factory/ConfirmationDialogFactoryImpl.swift @@ -1,4 +1,6 @@ import BaseFeature +import BaseFeatureInterface +import ConfirmationDialogFeatureInterface import UIKit final class ConfirmationDialogFactoryImpl: ConfirmationDialogFactory { @@ -6,7 +8,7 @@ final class ConfirmationDialogFactoryImpl: ConfirmationDialogFactory { title: String, description: String, confirmAction: @escaping () async -> Void - ) -> any StoredViewControllable { + ) -> any RoutedViewControllable { let store = ConfirmationDialogStore(confirmAction: confirmAction) return ConfirmationDialogViewController( title: title, diff --git a/Projects/Feature/DetailNoticeFeature/Interface/Factory/DetailNoticeFactory.swift b/Projects/Feature/DetailNoticeFeature/Interface/Factory/DetailNoticeFactory.swift new file mode 100644 index 00000000..1bdab875 --- /dev/null +++ b/Projects/Feature/DetailNoticeFeature/Interface/Factory/DetailNoticeFactory.swift @@ -0,0 +1,6 @@ +import BaseFeatureInterface +import UIKit + +public protocol DetailNoticeFactory { + func makeViewController(noticeID: Int) -> any RoutedViewControllable +} diff --git a/Projects/Feature/DetailNoticeFeature/Project.swift b/Projects/Feature/DetailNoticeFeature/Project.swift index 2e9261a7..3bdc2371 100644 --- a/Projects/Feature/DetailNoticeFeature/Project.swift +++ b/Projects/Feature/DetailNoticeFeature/Project.swift @@ -5,8 +5,12 @@ import ProjectDescriptionHelpers let project = Project.module( name: ModulePaths.Feature.DetailNoticeFeature.rawValue, targets: [ + .interface(module: .feature(.DetailNoticeFeature), dependencies: [ + .feature(target: .BaseFeature, type: .interface) + ]), .implements(module: .feature(.DetailNoticeFeature), dependencies: [ .feature(target: .BaseFeature), + .feature(target: .DetailNoticeFeature, type: .interface), .domain(target: .NoticeDomain, type: .interface), .domain(target: .UserDomain, type: .interface) ]), diff --git a/Projects/Feature/DetailNoticeFeature/Sources/Assembly/DetailNoticeAssembly.swift b/Projects/Feature/DetailNoticeFeature/Sources/Assembly/DetailNoticeAssembly.swift index 083b66ee..d13feb16 100644 --- a/Projects/Feature/DetailNoticeFeature/Sources/Assembly/DetailNoticeAssembly.swift +++ b/Projects/Feature/DetailNoticeFeature/Sources/Assembly/DetailNoticeAssembly.swift @@ -1,3 +1,4 @@ +import DetailNoticeFeatureInterface import NoticeDomainInterface import Swinject import UserDomainInterface diff --git a/Projects/Feature/DetailNoticeFeature/Sources/Factory/DetailNoticeFactory.swift b/Projects/Feature/DetailNoticeFeature/Sources/Factory/DetailNoticeFactory.swift deleted file mode 100644 index 02b16373..00000000 --- a/Projects/Feature/DetailNoticeFeature/Sources/Factory/DetailNoticeFactory.swift +++ /dev/null @@ -1,6 +0,0 @@ -import BaseFeature -import UIKit - -public protocol DetailNoticeFactory { - func makeViewController(noticeID: Int) -> any StoredViewControllable -} diff --git a/Projects/Feature/DetailNoticeFeature/Sources/Factory/DetailNoticeFactoryImpl.swift b/Projects/Feature/DetailNoticeFeature/Sources/Factory/DetailNoticeFactoryImpl.swift index 8f872d30..cb52720d 100644 --- a/Projects/Feature/DetailNoticeFeature/Sources/Factory/DetailNoticeFactoryImpl.swift +++ b/Projects/Feature/DetailNoticeFeature/Sources/Factory/DetailNoticeFactoryImpl.swift @@ -1,4 +1,6 @@ import BaseFeature +import BaseFeatureInterface +import DetailNoticeFeatureInterface import NoticeDomainInterface import UIKit import UserDomainInterface @@ -18,7 +20,7 @@ struct DetailNoticeFactoryImpl: DetailNoticeFactory { self.loadCurrentUserRoleUseCase = loadCurrentUserRoleUseCase } - func makeViewController(noticeID: Int) -> any StoredViewControllable { + func makeViewController(noticeID: Int) -> any RoutedViewControllable { let store = DetailNoticeStore( noticeID: noticeID, fetchNoticeUseCase: fetchNoticeUseCase, diff --git a/Projects/Feature/HomeFeature/Sources/Factory/HomeFactory.swift b/Projects/Feature/HomeFeature/Interface/Factory/HomeFactory.swift similarity index 79% rename from Projects/Feature/HomeFeature/Sources/Factory/HomeFactory.swift rename to Projects/Feature/HomeFeature/Interface/Factory/HomeFactory.swift index 23653e70..81eb20d3 100644 --- a/Projects/Feature/HomeFeature/Sources/Factory/HomeFactory.swift +++ b/Projects/Feature/HomeFeature/Interface/Factory/HomeFactory.swift @@ -1,3 +1,4 @@ +import BaseFeatureInterface import Moordinator import UIKit diff --git a/Projects/Feature/HomeFeature/Project.swift b/Projects/Feature/HomeFeature/Project.swift index 9e5bdd4f..44df35da 100644 --- a/Projects/Feature/HomeFeature/Project.swift +++ b/Projects/Feature/HomeFeature/Project.swift @@ -5,12 +5,16 @@ import ProjectDescriptionHelpers let project = Project.module( name: ModulePaths.Feature.HomeFeature.rawValue, targets: [ + .interface(module: .feature(.HomeFeature), dependencies: [ + .feature(target: .BaseFeature, type: .interface) + ]), .implements( module: .feature(.HomeFeature), dependencies: [ .feature(target: .BaseFeature), - .feature(target: .ConfirmationDialogFeature), - .feature(target: .MyViolationListFeature), + .feature(target: .HomeFeature, type: .interface), + .feature(target: .ConfirmationDialogFeature, type: .interface), + .feature(target: .MyViolationListFeature, type: .interface), .feature(target: .InputDialogFeature, type: .interface), .domain(target: .SelfStudyDomain, type: .interface), .domain(target: .MassageDomain, type: .interface), diff --git a/Projects/Feature/HomeFeature/Sources/Assembly/HomeAssembly.swift b/Projects/Feature/HomeFeature/Sources/Assembly/HomeAssembly.swift index 83dea5dd..78c676e6 100644 --- a/Projects/Feature/HomeFeature/Sources/Assembly/HomeAssembly.swift +++ b/Projects/Feature/HomeFeature/Sources/Assembly/HomeAssembly.swift @@ -1,9 +1,10 @@ -import ConfirmationDialogFeature +import ConfirmationDialogFeatureInterface +import HomeFeatureInterface import InputDialogFeatureInterface import MassageDomainInterface import MealDomainInterface import Moordinator -import MyViolationListFeature +import MyViolationListFeatureInterface import SelfStudyDomainInterface import Swinject import TimerInterface diff --git a/Projects/Feature/HomeFeature/Sources/Factory/HomeFactoryImpl.swift b/Projects/Feature/HomeFeature/Sources/Factory/HomeFactoryImpl.swift index be7f8970..ed08ee61 100644 --- a/Projects/Feature/HomeFeature/Sources/Factory/HomeFactoryImpl.swift +++ b/Projects/Feature/HomeFeature/Sources/Factory/HomeFactoryImpl.swift @@ -1,9 +1,10 @@ -import ConfirmationDialogFeature +import ConfirmationDialogFeatureInterface +import HomeFeatureInterface import InputDialogFeatureInterface import MassageDomainInterface import MealDomainInterface import Moordinator -import MyViolationListFeature +import MyViolationListFeatureInterface import SelfStudyDomainInterface import TimerInterface import UserDomainInterface diff --git a/Projects/Feature/HomeFeature/Sources/Moordinator/HomeMoordinator.swift b/Projects/Feature/HomeFeature/Sources/Moordinator/HomeMoordinator.swift index 7be14299..fa9fad98 100644 --- a/Projects/Feature/HomeFeature/Sources/Moordinator/HomeMoordinator.swift +++ b/Projects/Feature/HomeFeature/Sources/Moordinator/HomeMoordinator.swift @@ -1,11 +1,11 @@ import BaseFeature import BaseFeatureInterface -import ConfirmationDialogFeature +import ConfirmationDialogFeatureInterface import DWebKit import InputDialogFeatureInterface import Localization import Moordinator -import MyViolationListFeature +import MyViolationListFeatureInterface import TimerInterface import UIKit import UIKitUtil @@ -90,7 +90,7 @@ private extension HomeMoordinator { self.rootVC.topViewController?.modalPresent(viewController) return .one(.contribute( withNextPresentable: viewController, - withNextRouter: viewController.store + withNextRouter: viewController.router )) } @@ -108,7 +108,7 @@ private extension HomeMoordinator { return .one( .contribute( withNextPresentable: viewController, - withNextRouter: viewController.store + withNextRouter: viewController.router ) ) } diff --git a/Projects/Feature/MainTabFeature/Sources/Factory/MainFactory.swift b/Projects/Feature/MainTabFeature/Interface/Factory/MainFactory.swift similarity index 77% rename from Projects/Feature/MainTabFeature/Sources/Factory/MainFactory.swift rename to Projects/Feature/MainTabFeature/Interface/Factory/MainFactory.swift index d9dec62b..235bc680 100644 --- a/Projects/Feature/MainTabFeature/Sources/Factory/MainFactory.swift +++ b/Projects/Feature/MainTabFeature/Interface/Factory/MainFactory.swift @@ -1,3 +1,4 @@ +import BaseFeatureInterface import Moordinator public protocol MainFactory { diff --git a/Projects/Feature/MainTabFeature/Project.swift b/Projects/Feature/MainTabFeature/Project.swift index 4cfc42ae..8dcec60a 100644 --- a/Projects/Feature/MainTabFeature/Project.swift +++ b/Projects/Feature/MainTabFeature/Project.swift @@ -5,13 +5,17 @@ import ProjectDescriptionHelpers let project = Project.module( name: ModulePaths.Feature.MainTabFeature.rawValue, targets: [ + .interface(module: .feature(.MainTabFeature), dependencies: [ + .feature(target: .BaseFeature, type: .interface) + ]), .implements(module: .feature(.MainTabFeature), dependencies: [ .feature(target: .BaseFeature), - .feature(target: .HomeFeature), - .feature(target: .NoticeFeature), - .feature(target: .SelfStudyFeature), - .feature(target: .MassageFeature), - .feature(target: .MusicFeature) + .feature(target: .MainTabFeature, type: .interface), + .feature(target: .HomeFeature, type: .interface), + .feature(target: .NoticeFeature, type: .interface), + .feature(target: .SelfStudyFeature, type: .interface), + .feature(target: .MassageFeature, type: .interface), + .feature(target: .MusicFeature, type: .interface) ]), .tests(module: .feature(.MainTabFeature), dependencies: [ .feature(target: .MainTabFeature) diff --git a/Projects/Feature/MainTabFeature/Sources/Assembly/MainAssembly.swift b/Projects/Feature/MainTabFeature/Sources/Assembly/MainAssembly.swift index c7388af4..228b5034 100644 --- a/Projects/Feature/MainTabFeature/Sources/Assembly/MainAssembly.swift +++ b/Projects/Feature/MainTabFeature/Sources/Assembly/MainAssembly.swift @@ -1,8 +1,9 @@ -import HomeFeature -import MassageFeature -import MusicFeature -import NoticeFeature -import SelfStudyFeature +import HomeFeatureInterface +import MainTabFeatureInterface +import MassageFeatureInterface +import MusicFeatureInterface +import NoticeFeatureInterface +import SelfStudyFeatureInterface import Swinject public final class MainAssembly: Assembly { diff --git a/Projects/Feature/MainTabFeature/Sources/Factory/MainFactoryImpl.swift b/Projects/Feature/MainTabFeature/Sources/Factory/MainFactoryImpl.swift index 48acae96..db24ac4d 100644 --- a/Projects/Feature/MainTabFeature/Sources/Factory/MainFactoryImpl.swift +++ b/Projects/Feature/MainTabFeature/Sources/Factory/MainFactoryImpl.swift @@ -1,9 +1,10 @@ -import HomeFeature -import MassageFeature +import HomeFeatureInterface +import MainTabFeatureInterface +import MassageFeatureInterface import Moordinator -import MusicFeature -import NoticeFeature -import SelfStudyFeature +import MusicFeatureInterface +import NoticeFeatureInterface +import SelfStudyFeatureInterface struct MainFactoryImpl: MainFactory { private let homeFactory: any HomeFactory diff --git a/Projects/Feature/MainTabFeature/Sources/Moordinator/MainTabMoordinator.swift b/Projects/Feature/MainTabFeature/Sources/Moordinator/MainTabMoordinator.swift index d594ab73..8200c935 100644 --- a/Projects/Feature/MainTabFeature/Sources/Moordinator/MainTabMoordinator.swift +++ b/Projects/Feature/MainTabFeature/Sources/Moordinator/MainTabMoordinator.swift @@ -1,10 +1,10 @@ import BaseFeature -import HomeFeature -import MassageFeature +import HomeFeatureInterface +import MassageFeatureInterface import Moordinator -import MusicFeature -import NoticeFeature -import SelfStudyFeature +import MusicFeatureInterface +import NoticeFeatureInterface +import SelfStudyFeatureInterface import UIKit final class MainTabMoordinator: Moordinator { diff --git a/Projects/Feature/MassageFeature/Sources/Factory/MassageFactory.swift b/Projects/Feature/MassageFeature/Interface/Factory/MassageFactory.swift similarity index 77% rename from Projects/Feature/MassageFeature/Sources/Factory/MassageFactory.swift rename to Projects/Feature/MassageFeature/Interface/Factory/MassageFactory.swift index ec72d8e1..35d67546 100644 --- a/Projects/Feature/MassageFeature/Sources/Factory/MassageFactory.swift +++ b/Projects/Feature/MassageFeature/Interface/Factory/MassageFactory.swift @@ -1,3 +1,4 @@ +import BaseFeatureInterface import Moordinator public protocol MassageFactory { diff --git a/Projects/Feature/MassageFeature/Project.swift b/Projects/Feature/MassageFeature/Project.swift index 6473ff00..784bc525 100644 --- a/Projects/Feature/MassageFeature/Project.swift +++ b/Projects/Feature/MassageFeature/Project.swift @@ -5,8 +5,12 @@ import ProjectDescriptionHelpers let project = Project.module( name: ModulePaths.Feature.MassageFeature.rawValue, targets: [ + .interface(module: .feature(.MassageFeature), dependencies: [ + .feature(target: .BaseFeature, type: .interface) + ]), .implements(module: .feature(.MassageFeature), dependencies: [ .feature(target: .BaseFeature), + .feature(target: .MassageFeature, type: .interface), .domain(target: .MassageDomain, type: .interface), .domain(target: .UserDomain, type: .interface) ]), diff --git a/Projects/Feature/MassageFeature/Sources/Assembly/MassageAssembly.swift b/Projects/Feature/MassageFeature/Sources/Assembly/MassageAssembly.swift index 7fcc24da..f3d02c70 100644 --- a/Projects/Feature/MassageFeature/Sources/Assembly/MassageAssembly.swift +++ b/Projects/Feature/MassageFeature/Sources/Assembly/MassageAssembly.swift @@ -1,4 +1,5 @@ import MassageDomainInterface +import MassageFeatureInterface import Swinject import UserDomainInterface diff --git a/Projects/Feature/MassageFeature/Sources/Factory/MassageFactoryImpl.swift b/Projects/Feature/MassageFeature/Sources/Factory/MassageFactoryImpl.swift index 2e8488ef..98ebd1e8 100644 --- a/Projects/Feature/MassageFeature/Sources/Factory/MassageFactoryImpl.swift +++ b/Projects/Feature/MassageFeature/Sources/Factory/MassageFactoryImpl.swift @@ -1,4 +1,5 @@ import MassageDomainInterface +import MassageFeatureInterface import Moordinator import UserDomainInterface diff --git a/Projects/Feature/MusicFeature/Sources/Factory/MusicFactory.swift b/Projects/Feature/MusicFeature/Interface/Factory/MusicFactory.swift similarity index 77% rename from Projects/Feature/MusicFeature/Sources/Factory/MusicFactory.swift rename to Projects/Feature/MusicFeature/Interface/Factory/MusicFactory.swift index 55ed29a7..b1d61cf5 100644 --- a/Projects/Feature/MusicFeature/Sources/Factory/MusicFactory.swift +++ b/Projects/Feature/MusicFeature/Interface/Factory/MusicFactory.swift @@ -1,3 +1,4 @@ +import BaseFeatureInterface import Moordinator public protocol MusicFactory { diff --git a/Projects/Feature/MusicFeature/Project.swift b/Projects/Feature/MusicFeature/Project.swift index ca7b8084..d2724f12 100644 --- a/Projects/Feature/MusicFeature/Project.swift +++ b/Projects/Feature/MusicFeature/Project.swift @@ -5,9 +5,13 @@ import ProjectDescriptionHelpers let project = Project.module( name: ModulePaths.Feature.MusicFeature.rawValue, targets: [ + .interface(module: .feature(.MusicFeature), dependencies: [ + .feature(target: .BaseFeature, type: .interface) + ]), .implements(module: .feature(.MusicFeature), dependencies: [ .feature(target: .BaseFeature), - .feature(target: .ProposeMusicFeature), + .feature(target: .MusicFeature, type: .interface), + .feature(target: .ProposeMusicFeature, type: .interface), .domain(target: .MusicDomain, type: .interface), .domain(target: .UserDomain, type: .interface) ]), diff --git a/Projects/Feature/MusicFeature/Sources/Assembly/MusicAssembly.swift b/Projects/Feature/MusicFeature/Sources/Assembly/MusicAssembly.swift index 52c1a66d..7ac395bd 100644 --- a/Projects/Feature/MusicFeature/Sources/Assembly/MusicAssembly.swift +++ b/Projects/Feature/MusicFeature/Sources/Assembly/MusicAssembly.swift @@ -1,5 +1,6 @@ import MusicDomainInterface -import ProposeMusicFeature +import MusicFeatureInterface +import ProposeMusicFeatureInterface import Swinject import UserDomainInterface diff --git a/Projects/Feature/MusicFeature/Sources/Factory/MusicFactoryImpl.swift b/Projects/Feature/MusicFeature/Sources/Factory/MusicFactoryImpl.swift index 7b07959a..38c1a11e 100644 --- a/Projects/Feature/MusicFeature/Sources/Factory/MusicFactoryImpl.swift +++ b/Projects/Feature/MusicFeature/Sources/Factory/MusicFactoryImpl.swift @@ -1,6 +1,8 @@ import Moordinator import MusicDomainInterface +import MusicFeatureInterface import ProposeMusicFeature +import ProposeMusicFeatureInterface import UserDomainInterface struct MusicFactoryImpl: MusicFactory { diff --git a/Projects/Feature/MusicFeature/Sources/Moordinator/MusicMoordinator.swift b/Projects/Feature/MusicFeature/Sources/Moordinator/MusicMoordinator.swift index e24637e8..7bc600da 100644 --- a/Projects/Feature/MusicFeature/Sources/Moordinator/MusicMoordinator.swift +++ b/Projects/Feature/MusicFeature/Sources/Moordinator/MusicMoordinator.swift @@ -1,7 +1,7 @@ import BaseFeature import Localization import Moordinator -import ProposeMusicFeature +import ProposeMusicFeatureInterface import UIKit import UIKitUtil @@ -85,7 +85,7 @@ private extension MusicMoordinator { return .one( .contribute( withNextPresentable: viewController, - withNextRouter: viewController.store + withNextRouter: viewController.router ) ) } diff --git a/Projects/Feature/MyViolationListFeature/Interface/MyViolationListFactory.swift b/Projects/Feature/MyViolationListFeature/Interface/MyViolationListFactory.swift new file mode 100644 index 00000000..6e0629bf --- /dev/null +++ b/Projects/Feature/MyViolationListFeature/Interface/MyViolationListFactory.swift @@ -0,0 +1,5 @@ +import BaseFeatureInterface + +public protocol MyViolationListFactory { + func makeViewController() -> any RoutedViewControllable +} diff --git a/Projects/Feature/MyViolationListFeature/Project.swift b/Projects/Feature/MyViolationListFeature/Project.swift index acfb8dec..0e2f2087 100644 --- a/Projects/Feature/MyViolationListFeature/Project.swift +++ b/Projects/Feature/MyViolationListFeature/Project.swift @@ -5,8 +5,12 @@ import ProjectDescriptionHelpers let project = Project.module( name: ModulePaths.Feature.MyViolationListFeature.rawValue, targets: [ + .interface(module: .feature(.MyViolationListFeature), dependencies: [ + .feature(target: .BaseFeature, type: .interface) + ]), .implements(module: .feature(.MyViolationListFeature), dependencies: [ .feature(target: .BaseFeature), + .feature(target: .MyViolationListFeature, type: .interface), .domain(target: .ViolationDomain, type: .interface) ]), .tests(module: .feature(.MyViolationListFeature), dependencies: [ diff --git a/Projects/Feature/MyViolationListFeature/Sources/Assembly/MyViolationListAssembly.swift b/Projects/Feature/MyViolationListFeature/Sources/Assembly/MyViolationListAssembly.swift index 3b66c204..9a942c11 100644 --- a/Projects/Feature/MyViolationListFeature/Sources/Assembly/MyViolationListAssembly.swift +++ b/Projects/Feature/MyViolationListFeature/Sources/Assembly/MyViolationListAssembly.swift @@ -1,3 +1,4 @@ +import MyViolationListFeatureInterface import Swinject import ViolationDomainInterface diff --git a/Projects/Feature/MyViolationListFeature/Sources/Factory/MyViolationListFactory.swift b/Projects/Feature/MyViolationListFeature/Sources/Factory/MyViolationListFactory.swift deleted file mode 100644 index 6946e066..00000000 --- a/Projects/Feature/MyViolationListFeature/Sources/Factory/MyViolationListFactory.swift +++ /dev/null @@ -1,5 +0,0 @@ -import BaseFeature - -public protocol MyViolationListFactory { - func makeViewController() -> any StoredViewControllable -} diff --git a/Projects/Feature/MyViolationListFeature/Sources/Factory/MyViolationListFactoryImpl.swift b/Projects/Feature/MyViolationListFeature/Sources/Factory/MyViolationListFactoryImpl.swift index 3e131a0a..37d5f325 100644 --- a/Projects/Feature/MyViolationListFeature/Sources/Factory/MyViolationListFactoryImpl.swift +++ b/Projects/Feature/MyViolationListFeature/Sources/Factory/MyViolationListFactoryImpl.swift @@ -1,4 +1,6 @@ import BaseFeature +import BaseFeatureInterface +import MyViolationListFeatureInterface import ViolationDomainInterface struct MyViolationListFactoryImpl: MyViolationListFactory { @@ -8,7 +10,7 @@ struct MyViolationListFactoryImpl: MyViolationListFactory { self.fetchMyViolationListUseCase = fetchMyViolationListUseCase } - func makeViewController() -> any StoredViewControllable { + func makeViewController() -> any RoutedViewControllable { let store = MyViolationListStore( fetchMyViolationListUseCase: fetchMyViolationListUseCase ) diff --git a/Projects/Feature/NoticeFeature/Sources/Factory/NoticeFactory.swift b/Projects/Feature/NoticeFeature/Interface/Factory/NoticeFactory.swift similarity index 100% rename from Projects/Feature/NoticeFeature/Sources/Factory/NoticeFactory.swift rename to Projects/Feature/NoticeFeature/Interface/Factory/NoticeFactory.swift diff --git a/Projects/Feature/NoticeFeature/Project.swift b/Projects/Feature/NoticeFeature/Project.swift index 07543a76..535944bf 100644 --- a/Projects/Feature/NoticeFeature/Project.swift +++ b/Projects/Feature/NoticeFeature/Project.swift @@ -5,10 +5,14 @@ import ProjectDescriptionHelpers let project = Project.module( name: ModulePaths.Feature.NoticeFeature.rawValue, targets: [ + .interface(module: .feature(.NoticeFeature), dependencies: [ + .feature(target: .BaseFeature, type: .interface) + ]), .implements(module: .feature(.NoticeFeature), dependencies: [ .feature(target: .BaseFeature), - .feature(target: .DetailNoticeFeature), - .feature(target: .ConfirmationDialogFeature), + .feature(target: .NoticeFeature, type: .interface), + .feature(target: .DetailNoticeFeature, type: .interface), + .feature(target: .ConfirmationDialogFeature, type: .interface), .domain(target: .NoticeDomain, type: .interface), .domain(target: .UserDomain, type: .interface) ]), diff --git a/Projects/Feature/NoticeFeature/Sources/Assembly/NoticeAssembly.swift b/Projects/Feature/NoticeFeature/Sources/Assembly/NoticeAssembly.swift index cba6af81..93d7440e 100644 --- a/Projects/Feature/NoticeFeature/Sources/Assembly/NoticeAssembly.swift +++ b/Projects/Feature/NoticeFeature/Sources/Assembly/NoticeAssembly.swift @@ -1,6 +1,7 @@ -import ConfirmationDialogFeature -import DetailNoticeFeature +import ConfirmationDialogFeatureInterface +import DetailNoticeFeatureInterface import NoticeDomainInterface +import NoticeFeatureInterface import Swinject import UserDomainInterface diff --git a/Projects/Feature/NoticeFeature/Sources/Factory/NoticeFactoryImpl.swift b/Projects/Feature/NoticeFeature/Sources/Factory/NoticeFactoryImpl.swift index 0dfd7e41..464b71b4 100644 --- a/Projects/Feature/NoticeFeature/Sources/Factory/NoticeFactoryImpl.swift +++ b/Projects/Feature/NoticeFeature/Sources/Factory/NoticeFactoryImpl.swift @@ -1,7 +1,8 @@ -import ConfirmationDialogFeature -import DetailNoticeFeature +import ConfirmationDialogFeatureInterface +import DetailNoticeFeatureInterface import Moordinator import NoticeDomainInterface +import NoticeFeatureInterface import UserDomainInterface struct NoticeFactoryImpl: NoticeFactory { diff --git a/Projects/Feature/NoticeFeature/Sources/Moordinator/NoticeMoordinator.swift b/Projects/Feature/NoticeFeature/Sources/Moordinator/NoticeMoordinator.swift index 2f58a2e9..3ee1ee2f 100644 --- a/Projects/Feature/NoticeFeature/Sources/Moordinator/NoticeMoordinator.swift +++ b/Projects/Feature/NoticeFeature/Sources/Moordinator/NoticeMoordinator.swift @@ -1,6 +1,7 @@ import BaseFeature -import ConfirmationDialogFeature -import DetailNoticeFeature +import BaseFeatureInterface +import ConfirmationDialogFeatureInterface +import DetailNoticeFeatureInterface import DWebKit import Moordinator import UIKit @@ -66,7 +67,7 @@ private extension NoticeMoordinator { return .one( .contribute( withNextPresentable: viewController, - withNextRouter: viewController.store + withNextRouter: viewController.router ) ) } @@ -85,7 +86,7 @@ private extension NoticeMoordinator { return .one( .contribute( withNextPresentable: viewController, - withNextRouter: viewController.store + withNextRouter: viewController.router ) ) } diff --git a/Projects/Feature/ProposeMusicFeature/Interface/Factory/ProposeMusicFactory.swift b/Projects/Feature/ProposeMusicFeature/Interface/Factory/ProposeMusicFactory.swift new file mode 100644 index 00000000..606dea99 --- /dev/null +++ b/Projects/Feature/ProposeMusicFeature/Interface/Factory/ProposeMusicFactory.swift @@ -0,0 +1,6 @@ +import BaseFeatureInterface +import UIKit + +public protocol ProposeMusicFactory { + func makeViewController() -> any RoutedViewControllable +} diff --git a/Projects/Feature/ProposeMusicFeature/Project.swift b/Projects/Feature/ProposeMusicFeature/Project.swift index 26215c26..76c64bbf 100644 --- a/Projects/Feature/ProposeMusicFeature/Project.swift +++ b/Projects/Feature/ProposeMusicFeature/Project.swift @@ -5,8 +5,12 @@ import ProjectDescriptionHelpers let project = Project.module( name: ModulePaths.Feature.ProposeMusicFeature.rawValue, targets: [ + .interface(module: .feature(.ProposeMusicFeature), dependencies: [ + .feature(target: .BaseFeature, type: .interface) + ]), .implements(module: .feature(.ProposeMusicFeature), dependencies: [ .feature(target: .BaseFeature), + .feature(target: .ProposeMusicFeature, type: .interface), .domain(target: .MusicDomain, type: .interface) ]), .tests(module: .feature(.ProposeMusicFeature), dependencies: [ diff --git a/Projects/Feature/ProposeMusicFeature/Sources/Assembly/ProposeMusicAssembly.swift b/Projects/Feature/ProposeMusicFeature/Sources/Assembly/ProposeMusicAssembly.swift index e43bcf45..14ae6f5f 100644 --- a/Projects/Feature/ProposeMusicFeature/Sources/Assembly/ProposeMusicAssembly.swift +++ b/Projects/Feature/ProposeMusicFeature/Sources/Assembly/ProposeMusicAssembly.swift @@ -1,4 +1,5 @@ import MusicDomainInterface +import ProposeMusicFeatureInterface import Swinject public final class ProposeMusicAssembly: Assembly { diff --git a/Projects/Feature/ProposeMusicFeature/Sources/Factory/ProposeMusicFactory.swift b/Projects/Feature/ProposeMusicFeature/Sources/Factory/ProposeMusicFactory.swift deleted file mode 100644 index a8276fe0..00000000 --- a/Projects/Feature/ProposeMusicFeature/Sources/Factory/ProposeMusicFactory.swift +++ /dev/null @@ -1,6 +0,0 @@ -import BaseFeature -import UIKit - -public protocol ProposeMusicFactory { - func makeViewController() -> any StoredViewControllable -} diff --git a/Projects/Feature/ProposeMusicFeature/Sources/Factory/ProposeMusicFactoryImpl.swift b/Projects/Feature/ProposeMusicFeature/Sources/Factory/ProposeMusicFactoryImpl.swift index 8e185333..945c1e4a 100644 --- a/Projects/Feature/ProposeMusicFeature/Sources/Factory/ProposeMusicFactoryImpl.swift +++ b/Projects/Feature/ProposeMusicFeature/Sources/Factory/ProposeMusicFactoryImpl.swift @@ -1,5 +1,7 @@ import BaseFeature +import BaseFeatureInterface import MusicDomainInterface +import ProposeMusicFeatureInterface import UIKit struct ProposeMusicFactoryImpl: ProposeMusicFactory { @@ -9,7 +11,7 @@ struct ProposeMusicFactoryImpl: ProposeMusicFactory { self.proposeMusicUseCase = proposeMusicUseCase } - func makeViewController() -> any StoredViewControllable { + func makeViewController() -> any RoutedViewControllable { let store = ProposeMusicStore( proposeMusicUseCase: proposeMusicUseCase ) diff --git a/Projects/Feature/RenewalPasswordFeature/Sources/Factory/RenewalPasswordFactory.swift b/Projects/Feature/RenewalPasswordFeature/Interface/Factory/RenewalPasswordFactory.swift similarity index 89% rename from Projects/Feature/RenewalPasswordFeature/Sources/Factory/RenewalPasswordFactory.swift rename to Projects/Feature/RenewalPasswordFeature/Interface/Factory/RenewalPasswordFactory.swift index 3333cdfb..9e4a4065 100644 --- a/Projects/Feature/RenewalPasswordFeature/Sources/Factory/RenewalPasswordFactory.swift +++ b/Projects/Feature/RenewalPasswordFeature/Interface/Factory/RenewalPasswordFactory.swift @@ -1,4 +1,3 @@ -import BaseFeature import Moordinator import UIKit diff --git a/Projects/Feature/RenewalPasswordFeature/Project.swift b/Projects/Feature/RenewalPasswordFeature/Project.swift index 7ce56435..47c4d959 100644 --- a/Projects/Feature/RenewalPasswordFeature/Project.swift +++ b/Projects/Feature/RenewalPasswordFeature/Project.swift @@ -5,8 +5,12 @@ import ProjectDescriptionHelpers let project = Project.module( name: ModulePaths.Feature.RenewalPasswordFeature.rawValue, targets: [ + .interface(module: .feature(.RenewalPasswordFeature), dependencies: [ + .feature(target: .BaseFeature, type: .interface) + ]), .implements(module: .feature(.RenewalPasswordFeature), dependencies: [ .feature(target: .BaseFeature), + .feature(target: .RenewalPasswordFeature, type: .interface), .domain(target: .AuthDomain, type: .interface) ]), .tests(module: .feature(.RenewalPasswordFeature), dependencies: [ diff --git a/Projects/Feature/RenewalPasswordFeature/Sources/Assembly/RenewalPasswordAssembly.swift b/Projects/Feature/RenewalPasswordFeature/Sources/Assembly/RenewalPasswordAssembly.swift index 1cf74845..e67142e0 100644 --- a/Projects/Feature/RenewalPasswordFeature/Sources/Assembly/RenewalPasswordAssembly.swift +++ b/Projects/Feature/RenewalPasswordFeature/Sources/Assembly/RenewalPasswordAssembly.swift @@ -1,4 +1,5 @@ import AuthDomainInterface +import RenewalPasswordFeatureInterface import Swinject public final class RenewalPasswordAssembly: Assembly { diff --git a/Projects/Feature/RenewalPasswordFeature/Sources/Factory/RenewalPasswordFactoryImpl.swift b/Projects/Feature/RenewalPasswordFeature/Sources/Factory/RenewalPasswordFactoryImpl.swift index 77d00a43..be952d00 100644 --- a/Projects/Feature/RenewalPasswordFeature/Sources/Factory/RenewalPasswordFactoryImpl.swift +++ b/Projects/Feature/RenewalPasswordFeature/Sources/Factory/RenewalPasswordFactoryImpl.swift @@ -1,6 +1,7 @@ import AuthDomainInterface import DWebKit import Moordinator +import RenewalPasswordFeatureInterface import UIKit struct RenewalPasswordFactoryImpl: RenewalPasswordFactory { diff --git a/Projects/Feature/RootFeature/Sources/Assembly/RootAssembly.swift b/Projects/Feature/RootFeature/Sources/Assembly/RootAssembly.swift index 9074b208..f19aa56c 100644 --- a/Projects/Feature/RootFeature/Sources/Assembly/RootAssembly.swift +++ b/Projects/Feature/RootFeature/Sources/Assembly/RootAssembly.swift @@ -1,7 +1,6 @@ -import ConfirmationDialogFeature -import MainTabFeature -import SigninFeature -import SplashFeature +import MainTabFeatureInterface +import SigninFeatureInterface +import SplashFeatureInterface import Swinject public final class RootAssembly: Assembly { diff --git a/Projects/Feature/RootFeature/Sources/Moordinator/RootMoordinator.swift b/Projects/Feature/RootFeature/Sources/Moordinator/RootMoordinator.swift index 042bb781..a3f11b4b 100644 --- a/Projects/Feature/RootFeature/Sources/Moordinator/RootMoordinator.swift +++ b/Projects/Feature/RootFeature/Sources/Moordinator/RootMoordinator.swift @@ -1,9 +1,10 @@ import BaseFeature +import BaseFeatureInterface import Combine -import MainTabFeature +import MainTabFeatureInterface import Moordinator -import SigninFeature -import SplashFeature +import SigninFeatureInterface +import SplashFeatureInterface import UIKit import UIKitUtil @@ -44,7 +45,7 @@ public final class RootMoordinator: Moordinator { return .one( .contribute( withNextPresentable: splashViewController, - withNextRouter: splashViewController.store + withNextRouter: splashViewController.router ) ) diff --git a/Projects/Feature/SelfStudyFeature/Sources/Factory/SelfStudyFactory.swift b/Projects/Feature/SelfStudyFeature/Interface/Factory/SelfStudyFactory.swift similarity index 100% rename from Projects/Feature/SelfStudyFeature/Sources/Factory/SelfStudyFactory.swift rename to Projects/Feature/SelfStudyFeature/Interface/Factory/SelfStudyFactory.swift diff --git a/Projects/Feature/SelfStudyFeature/Project.swift b/Projects/Feature/SelfStudyFeature/Project.swift index 5d822f0f..d09ea03a 100644 --- a/Projects/Feature/SelfStudyFeature/Project.swift +++ b/Projects/Feature/SelfStudyFeature/Project.swift @@ -5,8 +5,12 @@ import ProjectDescriptionHelpers let project = Project.module( name: ModulePaths.Feature.SelfStudyFeature.rawValue, targets: [ + .interface(module: .feature(.SelfStudyFeature), dependencies: [ + .feature(target: .BaseFeature, type: .interface) + ]), .implements(module: .feature(.SelfStudyFeature), dependencies: [ .feature(target: .BaseFeature), + .feature(target: .SelfStudyFeature, type: .interface), .feature(target: .FilterSelfStudyFeature, type: .interface), .domain(target: .SelfStudyDomain, type: .interface), .domain(target: .UserDomain, type: .interface) diff --git a/Projects/Feature/SelfStudyFeature/Sources/Assembly/SelfStudyAssembly.swift b/Projects/Feature/SelfStudyFeature/Sources/Assembly/SelfStudyAssembly.swift index e0c074d5..8215e1f2 100644 --- a/Projects/Feature/SelfStudyFeature/Sources/Assembly/SelfStudyAssembly.swift +++ b/Projects/Feature/SelfStudyFeature/Sources/Assembly/SelfStudyAssembly.swift @@ -1,5 +1,6 @@ import FilterSelfStudyFeatureInterface import SelfStudyDomainInterface +import SelfStudyFeatureInterface import Swinject import UserDomainInterface diff --git a/Projects/Feature/SelfStudyFeature/Sources/Factory/SelfStudyFactoryImpl.swift b/Projects/Feature/SelfStudyFeature/Sources/Factory/SelfStudyFactoryImpl.swift index 216a3bbb..1133b2d9 100644 --- a/Projects/Feature/SelfStudyFeature/Sources/Factory/SelfStudyFactoryImpl.swift +++ b/Projects/Feature/SelfStudyFeature/Sources/Factory/SelfStudyFactoryImpl.swift @@ -1,6 +1,7 @@ import FilterSelfStudyFeatureInterface import Moordinator import SelfStudyDomainInterface +import SelfStudyFeatureInterface import UserDomainInterface struct SelfStudyFactoryImpl: SelfStudyFactory { diff --git a/Projects/Feature/SigninFeature/Sources/Factory/SigninFactory.swift b/Projects/Feature/SigninFeature/Interface/Factory/SigninFactory.swift similarity index 100% rename from Projects/Feature/SigninFeature/Sources/Factory/SigninFactory.swift rename to Projects/Feature/SigninFeature/Interface/Factory/SigninFactory.swift diff --git a/Projects/Feature/SigninFeature/Project.swift b/Projects/Feature/SigninFeature/Project.swift index 85ea70d8..8aad500f 100644 --- a/Projects/Feature/SigninFeature/Project.swift +++ b/Projects/Feature/SigninFeature/Project.swift @@ -5,10 +5,14 @@ import ProjectDescriptionHelpers let project = Project.module( name: ModulePaths.Feature.SigninFeature.rawValue, targets: [ + .interface(module: .feature(.SigninFeature), dependencies: [ + .feature(target: .BaseFeature, type: .interface) + ]), .implements(module: .feature(.SigninFeature), dependencies: [ .feature(target: .BaseFeature), - .feature(target: .SignupFeature), - .feature(target: .RenewalPasswordFeature), + .feature(target: .SigninFeature, type: .interface), + .feature(target: .SignupFeature, type: .interface), + .feature(target: .RenewalPasswordFeature, type: .interface), .domain(target: .AuthDomain, type: .interface) ]), .tests(module: .feature(.SigninFeature), dependencies: [ diff --git a/Projects/Feature/SigninFeature/Sources/Assembly/SigninAssembly.swift b/Projects/Feature/SigninFeature/Sources/Assembly/SigninAssembly.swift index 7855c47a..9471fd05 100644 --- a/Projects/Feature/SigninFeature/Sources/Assembly/SigninAssembly.swift +++ b/Projects/Feature/SigninFeature/Sources/Assembly/SigninAssembly.swift @@ -1,6 +1,7 @@ import AuthDomainInterface -import RenewalPasswordFeature -import SignupFeature +import RenewalPasswordFeatureInterface +import SigninFeatureInterface +import SignupFeatureInterface import Swinject public final class SigninAssembly: Assembly { diff --git a/Projects/Feature/SigninFeature/Sources/Factory/SigninFactoryImpl.swift b/Projects/Feature/SigninFeature/Sources/Factory/SigninFactoryImpl.swift index c2f2d666..90492290 100644 --- a/Projects/Feature/SigninFeature/Sources/Factory/SigninFactoryImpl.swift +++ b/Projects/Feature/SigninFeature/Sources/Factory/SigninFactoryImpl.swift @@ -1,7 +1,8 @@ import AuthDomainInterface import Moordinator -import RenewalPasswordFeature -import SignupFeature +import RenewalPasswordFeatureInterface +import SigninFeatureInterface +import SignupFeatureInterface struct SigninFactoryImpl: SigninFactory { private let signinUseCase: any SigninUseCase diff --git a/Projects/Feature/SigninFeature/Sources/Moordinator/SigninMoordinator.swift b/Projects/Feature/SigninFeature/Sources/Moordinator/SigninMoordinator.swift index 909f2d4d..e9b55a97 100644 --- a/Projects/Feature/SigninFeature/Sources/Moordinator/SigninMoordinator.swift +++ b/Projects/Feature/SigninFeature/Sources/Moordinator/SigninMoordinator.swift @@ -1,8 +1,8 @@ import BaseFeature import DesignSystem import Moordinator -import RenewalPasswordFeature -import SignupFeature +import RenewalPasswordFeatureInterface +import SignupFeatureInterface import UIKit final class SigninMoordinator: Moordinator { diff --git a/Projects/Feature/SignupFeature/Sources/Factory/SignupFactory.swift b/Projects/Feature/SignupFeature/Interface/Factory/SignupFactory.swift similarity index 88% rename from Projects/Feature/SignupFeature/Sources/Factory/SignupFactory.swift rename to Projects/Feature/SignupFeature/Interface/Factory/SignupFactory.swift index 63218cb3..940bd876 100644 --- a/Projects/Feature/SignupFeature/Sources/Factory/SignupFactory.swift +++ b/Projects/Feature/SignupFeature/Interface/Factory/SignupFactory.swift @@ -1,4 +1,3 @@ -import BaseFeature import Moordinator import UIKit diff --git a/Projects/Feature/SignupFeature/Project.swift b/Projects/Feature/SignupFeature/Project.swift index 821b8fd3..5879d893 100644 --- a/Projects/Feature/SignupFeature/Project.swift +++ b/Projects/Feature/SignupFeature/Project.swift @@ -5,8 +5,12 @@ import ProjectDescriptionHelpers let project = Project.module( name: ModulePaths.Feature.SignupFeature.rawValue, targets: [ + .interface(module: .feature(.SignupFeature), dependencies: [ + .feature(target: .BaseFeature, type: .interface) + ]), .implements(module: .feature(.SignupFeature), dependencies: [ .feature(target: .BaseFeature), + .feature(target: .SignupFeature, type: .interface), .domain(target: .AuthDomain, type: .interface) ]), .tests(module: .feature(.SignupFeature), dependencies: [ diff --git a/Projects/Feature/SignupFeature/Sources/Assembly/SignupAssembly.swift b/Projects/Feature/SignupFeature/Sources/Assembly/SignupAssembly.swift index e7244de7..80d965ad 100644 --- a/Projects/Feature/SignupFeature/Sources/Assembly/SignupAssembly.swift +++ b/Projects/Feature/SignupFeature/Sources/Assembly/SignupAssembly.swift @@ -1,4 +1,5 @@ import AuthDomainInterface +import SignupFeatureInterface import Swinject public final class SignupAssembly: Assembly { diff --git a/Projects/Feature/SignupFeature/Sources/Factory/SignupFactoryImpl.swift b/Projects/Feature/SignupFeature/Sources/Factory/SignupFactoryImpl.swift index 4be4798d..35ce1602 100644 --- a/Projects/Feature/SignupFeature/Sources/Factory/SignupFactoryImpl.swift +++ b/Projects/Feature/SignupFeature/Sources/Factory/SignupFactoryImpl.swift @@ -2,6 +2,7 @@ import AuthDomainInterface import BaseFeature import DesignSystem import DWebKit +import SignupFeatureInterface import UIKit struct SignupFactoryImpl: SignupFactory { diff --git a/Projects/Feature/SplashFeature/Interface/Factory/SplashFactory.swift b/Projects/Feature/SplashFeature/Interface/Factory/SplashFactory.swift new file mode 100644 index 00000000..0c1bdad9 --- /dev/null +++ b/Projects/Feature/SplashFeature/Interface/Factory/SplashFactory.swift @@ -0,0 +1,6 @@ +import BaseFeatureInterface +import UIKit + +public protocol SplashFactory { + func makeViewController() -> any RoutedViewControllable +} diff --git a/Projects/Feature/SplashFeature/Project.swift b/Projects/Feature/SplashFeature/Project.swift index 21e40dbd..c352848e 100644 --- a/Projects/Feature/SplashFeature/Project.swift +++ b/Projects/Feature/SplashFeature/Project.swift @@ -5,8 +5,12 @@ import ProjectDescriptionHelpers let project = Project.module( name: ModulePaths.Feature.SplashFeature.rawValue, targets: [ + .interface(module: .feature(.SplashFeature), dependencies: [ + .feature(target: .BaseFeature, type: .interface) + ]), .implements(module: .feature(.SplashFeature), dependencies: [ .feature(target: .BaseFeature), + .feature(target: .SplashFeature, type: .interface), .domain(target: .AuthDomain, type: .interface) ]), .tests(module: .feature(.SplashFeature), dependencies: [ diff --git a/Projects/Feature/SplashFeature/Sources/Assembly/SplashAssembly.swift b/Projects/Feature/SplashFeature/Sources/Assembly/SplashAssembly.swift index 2dd41976..cbe8cbab 100644 --- a/Projects/Feature/SplashFeature/Sources/Assembly/SplashAssembly.swift +++ b/Projects/Feature/SplashFeature/Sources/Assembly/SplashAssembly.swift @@ -1,4 +1,5 @@ import AuthDomainInterface +import SplashFeatureInterface import Swinject public final class SplashAssembly: Assembly { diff --git a/Projects/Feature/SplashFeature/Sources/Factory/SplashFactory.swift b/Projects/Feature/SplashFeature/Sources/Factory/SplashFactory.swift deleted file mode 100644 index e76adadb..00000000 --- a/Projects/Feature/SplashFeature/Sources/Factory/SplashFactory.swift +++ /dev/null @@ -1,6 +0,0 @@ -import BaseFeature -import UIKit - -public protocol SplashFactory { - func makeViewController() -> any StoredViewControllable -} diff --git a/Projects/Feature/SplashFeature/Sources/Factory/SplashFactoryImpl.swift b/Projects/Feature/SplashFeature/Sources/Factory/SplashFactoryImpl.swift index 5dc9a4a6..4066a0ff 100644 --- a/Projects/Feature/SplashFeature/Sources/Factory/SplashFactoryImpl.swift +++ b/Projects/Feature/SplashFeature/Sources/Factory/SplashFactoryImpl.swift @@ -1,5 +1,7 @@ import AuthDomainInterface import BaseFeature +import BaseFeatureInterface +import SplashFeatureInterface import UIKit final class SplashFactoryImpl: SplashFactory { @@ -9,7 +11,7 @@ final class SplashFactoryImpl: SplashFactory { self.checkIsLoggedInUseCase = checkIsLoggedInUseCase } - func makeViewController() -> any StoredViewControllable { + func makeViewController() -> any RoutedViewControllable { let store = SplashStore(checkIsLoggedInUseCase: checkIsLoggedInUseCase) return SplashViewController(store: store) } diff --git a/graph.png b/graph.png index 118a1efe..fce38e9a 100644 Binary files a/graph.png and b/graph.png differ