From 0e2270978f2647451a0dcf3ce98d1090f9237454 Mon Sep 17 00:00:00 2001 From: baegteun Date: Tue, 23 Jul 2024 23:52:30 +0900 Subject: [PATCH 1/3] =?UTF-8?q?:seedling:=20::=20[#812]=20Credit=20Song=20?= =?UTF-8?q?List=20Feature=20=EB=AA=A8=EB=93=88=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ModulePaths.swift | 1 + .../Demo/Resources/LaunchScreen.storyboard | 25 +++++++++++++++++++ .../Demo/Sources/AppDelegate.swift | 19 ++++++++++++++ .../Interface/Interface.swift | 1 + .../CreditSongListFeature/Project.swift | 22 ++++++++++++++++ .../Sources/Sources.swift | 1 + .../Testing/Testing.swift | 1 + .../Tests/CreditSongListFeatureTest.swift | 11 ++++++++ 8 files changed, 81 insertions(+) create mode 100644 Projects/Features/CreditSongListFeature/Demo/Resources/LaunchScreen.storyboard create mode 100644 Projects/Features/CreditSongListFeature/Demo/Sources/AppDelegate.swift create mode 100644 Projects/Features/CreditSongListFeature/Interface/Interface.swift create mode 100644 Projects/Features/CreditSongListFeature/Project.swift create mode 100644 Projects/Features/CreditSongListFeature/Sources/Sources.swift create mode 100644 Projects/Features/CreditSongListFeature/Testing/Testing.swift create mode 100644 Projects/Features/CreditSongListFeature/Tests/CreditSongListFeatureTest.swift diff --git a/Plugin/DependencyPlugin/ProjectDescriptionHelpers/ModulePaths.swift b/Plugin/DependencyPlugin/ProjectDescriptionHelpers/ModulePaths.swift index 126e56ccf..3f16a2db8 100644 --- a/Plugin/DependencyPlugin/ProjectDescriptionHelpers/ModulePaths.swift +++ b/Plugin/DependencyPlugin/ProjectDescriptionHelpers/ModulePaths.swift @@ -30,6 +30,7 @@ extension ModulePaths: MicroTargetPathConvertable { public extension ModulePaths { enum Feature: String, MicroTargetPathConvertable { + case CreditSongListFeature case SongCreditFeature case TeamFeature case FruitDrawFeature diff --git a/Projects/Features/CreditSongListFeature/Demo/Resources/LaunchScreen.storyboard b/Projects/Features/CreditSongListFeature/Demo/Resources/LaunchScreen.storyboard new file mode 100644 index 000000000..865e9329f --- /dev/null +++ b/Projects/Features/CreditSongListFeature/Demo/Resources/LaunchScreen.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Projects/Features/CreditSongListFeature/Demo/Sources/AppDelegate.swift b/Projects/Features/CreditSongListFeature/Demo/Sources/AppDelegate.swift new file mode 100644 index 000000000..ef2bae045 --- /dev/null +++ b/Projects/Features/CreditSongListFeature/Demo/Sources/AppDelegate.swift @@ -0,0 +1,19 @@ +import UIKit + +@main +final class AppDelegate: UIResponder, UIApplicationDelegate { + var window: UIWindow? + + func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil + ) -> Bool { + window = UIWindow(frame: UIScreen.main.bounds) + let viewController = UIViewController() + viewController.view.backgroundColor = .yellow + window?.rootViewController = viewController + window?.makeKeyAndVisible() + + return true + } +} diff --git a/Projects/Features/CreditSongListFeature/Interface/Interface.swift b/Projects/Features/CreditSongListFeature/Interface/Interface.swift new file mode 100644 index 000000000..b1853ce60 --- /dev/null +++ b/Projects/Features/CreditSongListFeature/Interface/Interface.swift @@ -0,0 +1 @@ +// This is for Tuist diff --git a/Projects/Features/CreditSongListFeature/Project.swift b/Projects/Features/CreditSongListFeature/Project.swift new file mode 100644 index 000000000..728be68b3 --- /dev/null +++ b/Projects/Features/CreditSongListFeature/Project.swift @@ -0,0 +1,22 @@ +import DependencyPlugin +import ProjectDescription +import ProjectDescriptionHelpers + +let project = Project.module( + name: ModulePaths.Feature.CreditSongListFeature.rawValue, + targets: [ + .interface(module: .feature(.CreditSongListFeature)), + .implements(module: .feature(.CreditSongListFeature), dependencies: [ + .feature(target: .CreditSongListFeature, type: .interface) + ]), + .testing(module: .feature(.CreditSongListFeature), dependencies: [ + .feature(target: .CreditSongListFeature, type: .interface) + ]), + .tests(module: .feature(.CreditSongListFeature), dependencies: [ + .feature(target: .CreditSongListFeature) + ]), + .demo(module: .feature(.CreditSongListFeature), dependencies: [ + .feature(target: .CreditSongListFeature) + ]) + ] +) diff --git a/Projects/Features/CreditSongListFeature/Sources/Sources.swift b/Projects/Features/CreditSongListFeature/Sources/Sources.swift new file mode 100644 index 000000000..b1853ce60 --- /dev/null +++ b/Projects/Features/CreditSongListFeature/Sources/Sources.swift @@ -0,0 +1 @@ +// This is for Tuist diff --git a/Projects/Features/CreditSongListFeature/Testing/Testing.swift b/Projects/Features/CreditSongListFeature/Testing/Testing.swift new file mode 100644 index 000000000..b1853ce60 --- /dev/null +++ b/Projects/Features/CreditSongListFeature/Testing/Testing.swift @@ -0,0 +1 @@ +// This is for Tuist diff --git a/Projects/Features/CreditSongListFeature/Tests/CreditSongListFeatureTest.swift b/Projects/Features/CreditSongListFeature/Tests/CreditSongListFeatureTest.swift new file mode 100644 index 000000000..50478b0a7 --- /dev/null +++ b/Projects/Features/CreditSongListFeature/Tests/CreditSongListFeatureTest.swift @@ -0,0 +1,11 @@ +import XCTest + +final class CreditSongListFeatureTests: XCTestCase { + override func setUpWithError() throws {} + + override func tearDownWithError() throws {} + + func testExample() { + XCTAssertEqual(1, 1) + } +} From 87aaf8dfca3818d87b6d262b1899e925d139004f Mon Sep 17 00:00:00 2001 From: baegteun Date: Mon, 29 Jul 2024 21:46:43 +0900 Subject: [PATCH 2/3] =?UTF-8?q?:truck:=20Music=20Detail=20=ED=8F=B4?= =?UTF-8?q?=EB=8D=94=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Application/AppComponent+Credit.swift | 6 ++++++ .../Application/AppComponent+Songs.swift | 6 ++++++ .../Demo/Sources/AppDelegate.swift | 8 +++++++ .../Component/KaraokeComponent.swift | 0 .../KaraokeViewController.swift | 0 .../{ => Karaoke}/Model/KaraokeKind.swift | 0 .../Views/KaraokeContentView.swift | 0 .../{ => Karaoke}/Views/KaraokeInfoView.swift | 0 .../Component/MusicDetailComponent.swift | 3 +++ .../{ => MusicDetail}/Model/SongModel.swift | 0 .../MusicDetailReactor.swift | 0 .../{ => MusicDetail}/MusicDetailView.swift | 0 .../MusicDetailViewController.swift | 7 ++++++- .../MusicControlGradientPanelLayer.swift | 0 .../MusicControlView/MusicControlView.swift | 0 .../PlayMusicButtonGradientLayer.swift | 0 .../MusicHeartButton/MusicHeartButton.swift | 0 .../Views/MusicToolbarView.swift | 0 .../ThumbnailCell.swift | 0 .../ThumbnailCollectionView.swift | 0 .../Interface/Interface.swift | 1 - .../Interface/SongCreditFactory.swift | 5 +++++ .../Component/SongCreditComponent.swift | 21 +++++++++++++++++++ 23 files changed, 55 insertions(+), 2 deletions(-) rename Projects/Features/MusicDetailFeature/Sources/{ => Karaoke}/Component/KaraokeComponent.swift (100%) rename Projects/Features/MusicDetailFeature/Sources/{ViewControllers => Karaoke}/KaraokeViewController.swift (100%) rename Projects/Features/MusicDetailFeature/Sources/{ => Karaoke}/Model/KaraokeKind.swift (100%) rename Projects/Features/MusicDetailFeature/Sources/{ => Karaoke}/Views/KaraokeContentView.swift (100%) rename Projects/Features/MusicDetailFeature/Sources/{ => Karaoke}/Views/KaraokeInfoView.swift (100%) rename Projects/Features/MusicDetailFeature/Sources/{ => MusicDetail}/Component/MusicDetailComponent.swift (89%) rename Projects/Features/MusicDetailFeature/Sources/{ => MusicDetail}/Model/SongModel.swift (100%) rename Projects/Features/MusicDetailFeature/Sources/{ => MusicDetail}/MusicDetailReactor.swift (100%) rename Projects/Features/MusicDetailFeature/Sources/{ => MusicDetail}/MusicDetailView.swift (100%) rename Projects/Features/MusicDetailFeature/Sources/{ => MusicDetail}/MusicDetailViewController.swift (95%) rename Projects/Features/MusicDetailFeature/Sources/{ => MusicDetail}/Views/MusicControlView/MusicControlGradientPanelLayer.swift (100%) rename Projects/Features/MusicDetailFeature/Sources/{ => MusicDetail}/Views/MusicControlView/MusicControlView.swift (100%) rename Projects/Features/MusicDetailFeature/Sources/{ => MusicDetail}/Views/MusicControlView/PlayMusicButtonGradientLayer.swift (100%) rename Projects/Features/MusicDetailFeature/Sources/{ => MusicDetail}/Views/MusicHeartButton/MusicHeartButton.swift (100%) rename Projects/Features/MusicDetailFeature/Sources/{ => MusicDetail}/Views/MusicToolbarView.swift (100%) rename Projects/Features/MusicDetailFeature/Sources/{ => MusicDetail}/Views/ThumbnailCollectionView/ThumbnailCell.swift (100%) rename Projects/Features/MusicDetailFeature/Sources/{ => MusicDetail}/Views/ThumbnailCollectionView/ThumbnailCollectionView.swift (100%) delete mode 100644 Projects/Features/SongCreditFeature/Interface/Interface.swift create mode 100644 Projects/Features/SongCreditFeature/Interface/SongCreditFactory.swift create mode 100644 Projects/Features/SongCreditFeature/Sources/Component/SongCreditComponent.swift diff --git a/Projects/App/Sources/Application/AppComponent+Credit.swift b/Projects/App/Sources/Application/AppComponent+Credit.swift index 4f376762b..0ec2622ec 100644 --- a/Projects/App/Sources/Application/AppComponent+Credit.swift +++ b/Projects/App/Sources/Application/AppComponent+Credit.swift @@ -1,8 +1,14 @@ import CreditDomain import CreditDomainInterface +import SongCreditFeature +import SongCreditFeatureInterface public extension AppComponent { var fetchCreditSongListUseCase: any FetchCreditSongListUseCase { FetchCreditSongListUseCaseImpl() } + + var songCreditFactory: any SongCreditFactory { + SongCreditComponent(parent: self) + } } diff --git a/Projects/App/Sources/Application/AppComponent+Songs.swift b/Projects/App/Sources/Application/AppComponent+Songs.swift index 2787bb555..36d9b55a3 100644 --- a/Projects/App/Sources/Application/AppComponent+Songs.swift +++ b/Projects/App/Sources/Application/AppComponent+Songs.swift @@ -72,4 +72,10 @@ public extension AppComponent { FetchNewSongsUseCaseImpl(songsRepository: songsRepository) } } + + var fetchSongCreditsUseCase: any FetchSongCreditsUseCase { + shared { + FetchSongCreditsUseCaseImpl(songsRepository: songsRepository) + } + } } diff --git a/Projects/Features/MusicDetailFeature/Demo/Sources/AppDelegate.swift b/Projects/Features/MusicDetailFeature/Demo/Sources/AppDelegate.swift index 17ada2a2b..758531b72 100644 --- a/Projects/Features/MusicDetailFeature/Demo/Sources/AppDelegate.swift +++ b/Projects/Features/MusicDetailFeature/Demo/Sources/AppDelegate.swift @@ -4,6 +4,7 @@ import Inject import LyricHighlightingFeatureInterface @testable import MusicDetailFeature import RxSwift +import SongCreditFeatureInterface import SongsDomainTesting import UIKit import Utility @@ -48,6 +49,7 @@ final class AppDelegate: UIResponder, UIApplicationDelegate { rootViewController: MusicDetailViewController( reactor: reactor, lyricHighlightingFactory: DummyLyricHighlightingFactory(), + songCreditFactory: DummySongCreditFactory(), containSongsFactory: DummyContainSongsFactory(), playlistPresenterGlobalState: DummyPlaylistPresenterGlobalState() ) @@ -72,6 +74,12 @@ final class DummyContainSongsFactory: ContainSongsFactory { } } +final class DummySongCreditFactory: SongCreditFactory { + func makeViewController(songID: String) -> UIViewController { + return UIViewController() + } +} + final class DummyPlaylistPresenterGlobalState: PlayListPresenterGlobalStateProtocol { var presentPlayListObservable: RxSwift.Observable { .empty() } func presentPlayList() {} diff --git a/Projects/Features/MusicDetailFeature/Sources/Component/KaraokeComponent.swift b/Projects/Features/MusicDetailFeature/Sources/Karaoke/Component/KaraokeComponent.swift similarity index 100% rename from Projects/Features/MusicDetailFeature/Sources/Component/KaraokeComponent.swift rename to Projects/Features/MusicDetailFeature/Sources/Karaoke/Component/KaraokeComponent.swift diff --git a/Projects/Features/MusicDetailFeature/Sources/ViewControllers/KaraokeViewController.swift b/Projects/Features/MusicDetailFeature/Sources/Karaoke/KaraokeViewController.swift similarity index 100% rename from Projects/Features/MusicDetailFeature/Sources/ViewControllers/KaraokeViewController.swift rename to Projects/Features/MusicDetailFeature/Sources/Karaoke/KaraokeViewController.swift diff --git a/Projects/Features/MusicDetailFeature/Sources/Model/KaraokeKind.swift b/Projects/Features/MusicDetailFeature/Sources/Karaoke/Model/KaraokeKind.swift similarity index 100% rename from Projects/Features/MusicDetailFeature/Sources/Model/KaraokeKind.swift rename to Projects/Features/MusicDetailFeature/Sources/Karaoke/Model/KaraokeKind.swift diff --git a/Projects/Features/MusicDetailFeature/Sources/Views/KaraokeContentView.swift b/Projects/Features/MusicDetailFeature/Sources/Karaoke/Views/KaraokeContentView.swift similarity index 100% rename from Projects/Features/MusicDetailFeature/Sources/Views/KaraokeContentView.swift rename to Projects/Features/MusicDetailFeature/Sources/Karaoke/Views/KaraokeContentView.swift diff --git a/Projects/Features/MusicDetailFeature/Sources/Views/KaraokeInfoView.swift b/Projects/Features/MusicDetailFeature/Sources/Karaoke/Views/KaraokeInfoView.swift similarity index 100% rename from Projects/Features/MusicDetailFeature/Sources/Views/KaraokeInfoView.swift rename to Projects/Features/MusicDetailFeature/Sources/Karaoke/Views/KaraokeInfoView.swift diff --git a/Projects/Features/MusicDetailFeature/Sources/Component/MusicDetailComponent.swift b/Projects/Features/MusicDetailFeature/Sources/MusicDetail/Component/MusicDetailComponent.swift similarity index 89% rename from Projects/Features/MusicDetailFeature/Sources/Component/MusicDetailComponent.swift rename to Projects/Features/MusicDetailFeature/Sources/MusicDetail/Component/MusicDetailComponent.swift index 2def3e05c..f17108873 100644 --- a/Projects/Features/MusicDetailFeature/Sources/Component/MusicDetailComponent.swift +++ b/Projects/Features/MusicDetailFeature/Sources/MusicDetail/Component/MusicDetailComponent.swift @@ -3,12 +3,14 @@ import BaseFeatureInterface import LyricHighlightingFeatureInterface import MusicDetailFeatureInterface import NeedleFoundation +import SongCreditFeatureInterface import SongsDomainInterface import UIKit public protocol MusicDetailDependency: Dependency { var fetchSongUseCase: any FetchSongUseCase { get } var lyricHighlightingFactory: any LyricHighlightingFactory { get } + var songCreditFactory: any SongCreditFactory { get } var containSongsFactory: any ContainSongsFactory { get } var playlistPresenterGlobalState: any PlayListPresenterGlobalStateProtocol { get } } @@ -24,6 +26,7 @@ public final class MusicDetailComponent: Component, Music let viewController = MusicDetailViewController( reactor: reactor, lyricHighlightingFactory: dependency.lyricHighlightingFactory, + songCreditFactory: dependency.songCreditFactory, containSongsFactory: dependency.containSongsFactory, playlistPresenterGlobalState: dependency.playlistPresenterGlobalState ) diff --git a/Projects/Features/MusicDetailFeature/Sources/Model/SongModel.swift b/Projects/Features/MusicDetailFeature/Sources/MusicDetail/Model/SongModel.swift similarity index 100% rename from Projects/Features/MusicDetailFeature/Sources/Model/SongModel.swift rename to Projects/Features/MusicDetailFeature/Sources/MusicDetail/Model/SongModel.swift diff --git a/Projects/Features/MusicDetailFeature/Sources/MusicDetailReactor.swift b/Projects/Features/MusicDetailFeature/Sources/MusicDetail/MusicDetailReactor.swift similarity index 100% rename from Projects/Features/MusicDetailFeature/Sources/MusicDetailReactor.swift rename to Projects/Features/MusicDetailFeature/Sources/MusicDetail/MusicDetailReactor.swift diff --git a/Projects/Features/MusicDetailFeature/Sources/MusicDetailView.swift b/Projects/Features/MusicDetailFeature/Sources/MusicDetail/MusicDetailView.swift similarity index 100% rename from Projects/Features/MusicDetailFeature/Sources/MusicDetailView.swift rename to Projects/Features/MusicDetailFeature/Sources/MusicDetail/MusicDetailView.swift diff --git a/Projects/Features/MusicDetailFeature/Sources/MusicDetailViewController.swift b/Projects/Features/MusicDetailFeature/Sources/MusicDetail/MusicDetailViewController.swift similarity index 95% rename from Projects/Features/MusicDetailFeature/Sources/MusicDetailViewController.swift rename to Projects/Features/MusicDetailFeature/Sources/MusicDetail/MusicDetailViewController.swift index fab07dacb..9822754dd 100644 --- a/Projects/Features/MusicDetailFeature/Sources/MusicDetailViewController.swift +++ b/Projects/Features/MusicDetailFeature/Sources/MusicDetail/MusicDetailViewController.swift @@ -5,6 +5,7 @@ import LogManager import LyricHighlightingFeatureInterface import RxSwift import SnapKit +import SongCreditFeatureInterface import Then import UIKit import Utility @@ -12,16 +13,19 @@ import Utility final class MusicDetailViewController: BaseReactorViewController { private let musicDetailView = MusicDetailView() private let lyricHighlightingFactory: any LyricHighlightingFactory + private let songCreditFactory: any SongCreditFactory private let containSongsFactory: any ContainSongsFactory private let playlistPresenterGlobalState: any PlayListPresenterGlobalStateProtocol init( reactor: MusicDetailReactor, lyricHighlightingFactory: any LyricHighlightingFactory, + songCreditFactory: any SongCreditFactory, containSongsFactory: any ContainSongsFactory, playlistPresenterGlobalState: any PlayListPresenterGlobalStateProtocol ) { self.lyricHighlightingFactory = lyricHighlightingFactory + self.songCreditFactory = songCreditFactory self.containSongsFactory = containSongsFactory self.playlistPresenterGlobalState = playlistPresenterGlobalState super.init(reactor: reactor) @@ -178,7 +182,8 @@ private extension MusicDetailViewController { } func navigateCredits(id: String) { - LogManager.printDebug("Navigate Music Credit : id=\(id)") + let viewController = songCreditFactory.makeViewController(songID: id) + self.navigationController?.pushViewController(viewController, animated: true) } func navigateLyricsHighlighing(model: LyricHighlightingRequiredModel) { diff --git a/Projects/Features/MusicDetailFeature/Sources/Views/MusicControlView/MusicControlGradientPanelLayer.swift b/Projects/Features/MusicDetailFeature/Sources/MusicDetail/Views/MusicControlView/MusicControlGradientPanelLayer.swift similarity index 100% rename from Projects/Features/MusicDetailFeature/Sources/Views/MusicControlView/MusicControlGradientPanelLayer.swift rename to Projects/Features/MusicDetailFeature/Sources/MusicDetail/Views/MusicControlView/MusicControlGradientPanelLayer.swift diff --git a/Projects/Features/MusicDetailFeature/Sources/Views/MusicControlView/MusicControlView.swift b/Projects/Features/MusicDetailFeature/Sources/MusicDetail/Views/MusicControlView/MusicControlView.swift similarity index 100% rename from Projects/Features/MusicDetailFeature/Sources/Views/MusicControlView/MusicControlView.swift rename to Projects/Features/MusicDetailFeature/Sources/MusicDetail/Views/MusicControlView/MusicControlView.swift diff --git a/Projects/Features/MusicDetailFeature/Sources/Views/MusicControlView/PlayMusicButtonGradientLayer.swift b/Projects/Features/MusicDetailFeature/Sources/MusicDetail/Views/MusicControlView/PlayMusicButtonGradientLayer.swift similarity index 100% rename from Projects/Features/MusicDetailFeature/Sources/Views/MusicControlView/PlayMusicButtonGradientLayer.swift rename to Projects/Features/MusicDetailFeature/Sources/MusicDetail/Views/MusicControlView/PlayMusicButtonGradientLayer.swift diff --git a/Projects/Features/MusicDetailFeature/Sources/Views/MusicHeartButton/MusicHeartButton.swift b/Projects/Features/MusicDetailFeature/Sources/MusicDetail/Views/MusicHeartButton/MusicHeartButton.swift similarity index 100% rename from Projects/Features/MusicDetailFeature/Sources/Views/MusicHeartButton/MusicHeartButton.swift rename to Projects/Features/MusicDetailFeature/Sources/MusicDetail/Views/MusicHeartButton/MusicHeartButton.swift diff --git a/Projects/Features/MusicDetailFeature/Sources/Views/MusicToolbarView.swift b/Projects/Features/MusicDetailFeature/Sources/MusicDetail/Views/MusicToolbarView.swift similarity index 100% rename from Projects/Features/MusicDetailFeature/Sources/Views/MusicToolbarView.swift rename to Projects/Features/MusicDetailFeature/Sources/MusicDetail/Views/MusicToolbarView.swift diff --git a/Projects/Features/MusicDetailFeature/Sources/Views/ThumbnailCollectionView/ThumbnailCell.swift b/Projects/Features/MusicDetailFeature/Sources/MusicDetail/Views/ThumbnailCollectionView/ThumbnailCell.swift similarity index 100% rename from Projects/Features/MusicDetailFeature/Sources/Views/ThumbnailCollectionView/ThumbnailCell.swift rename to Projects/Features/MusicDetailFeature/Sources/MusicDetail/Views/ThumbnailCollectionView/ThumbnailCell.swift diff --git a/Projects/Features/MusicDetailFeature/Sources/Views/ThumbnailCollectionView/ThumbnailCollectionView.swift b/Projects/Features/MusicDetailFeature/Sources/MusicDetail/Views/ThumbnailCollectionView/ThumbnailCollectionView.swift similarity index 100% rename from Projects/Features/MusicDetailFeature/Sources/Views/ThumbnailCollectionView/ThumbnailCollectionView.swift rename to Projects/Features/MusicDetailFeature/Sources/MusicDetail/Views/ThumbnailCollectionView/ThumbnailCollectionView.swift diff --git a/Projects/Features/SongCreditFeature/Interface/Interface.swift b/Projects/Features/SongCreditFeature/Interface/Interface.swift deleted file mode 100644 index b1853ce60..000000000 --- a/Projects/Features/SongCreditFeature/Interface/Interface.swift +++ /dev/null @@ -1 +0,0 @@ -// This is for Tuist diff --git a/Projects/Features/SongCreditFeature/Interface/SongCreditFactory.swift b/Projects/Features/SongCreditFeature/Interface/SongCreditFactory.swift new file mode 100644 index 000000000..456c542ff --- /dev/null +++ b/Projects/Features/SongCreditFeature/Interface/SongCreditFactory.swift @@ -0,0 +1,5 @@ +import UIKit + +public protocol SongCreditFactory { + func makeViewController(songID: String) -> UIViewController +} diff --git a/Projects/Features/SongCreditFeature/Sources/Component/SongCreditComponent.swift b/Projects/Features/SongCreditFeature/Sources/Component/SongCreditComponent.swift new file mode 100644 index 000000000..13c4bbef1 --- /dev/null +++ b/Projects/Features/SongCreditFeature/Sources/Component/SongCreditComponent.swift @@ -0,0 +1,21 @@ +import NeedleFoundation +import SongCreditFeatureInterface +import SongsDomainInterface +import UIKit + +public protocol SongCreditDependency: Dependency { + var fetchSongCreditsUseCase: any FetchSongCreditsUseCase { get } +} + +public final class SongCreditComponent: Component, SongCreditFactory { + public func makeViewController(songID: String) -> UIViewController { + let reactor = SongCreditReactor( + songID: songID, + fetchSongCreditsUseCase: dependency.fetchSongCreditsUseCase + ) + let viewController = SongCreditViewController( + reactor: reactor + ) + return viewController + } +} From 425e32e94ac2e4716199066ded54b07edb0b3796 Mon Sep 17 00:00:00 2001 From: baegteun Date: Tue, 30 Jul 2024 02:16:41 +0900 Subject: [PATCH 3/3] =?UTF-8?q?=F0=9F=8E=A8=20::=20=EC=BD=94=EB=93=9C=20Fo?= =?UTF-8?q?rmatting=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ViewControllers/MyPlaylistDetailViewController.swift | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Projects/Features/PlaylistFeature/Sources/ViewControllers/MyPlaylistDetailViewController.swift b/Projects/Features/PlaylistFeature/Sources/ViewControllers/MyPlaylistDetailViewController.swift index 68b734bbc..342a585e7 100644 --- a/Projects/Features/PlaylistFeature/Sources/ViewControllers/MyPlaylistDetailViewController.swift +++ b/Projects/Features/PlaylistFeature/Sources/ViewControllers/MyPlaylistDetailViewController.swift @@ -266,10 +266,10 @@ final class MyPlaylistDetailViewController: BaseReactorViewController