Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/release/2.1.0' into main
Browse files Browse the repository at this point in the history
  • Loading branch information
KangTaeHoon committed Nov 17, 2023
2 parents 47e2fe9 + a4806b3 commit 4ff9779
Show file tree
Hide file tree
Showing 440 changed files with 54,236 additions and 2,001 deletions.
13 changes: 11 additions & 2 deletions Projects/App/Sources/Application/AppComponent+Songs.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import DataModule
import NetworkModule
import SearchFeature
import HomeFeature
import CommonFeature

public extension AppComponent {

Expand All @@ -29,6 +30,14 @@ public extension AppComponent {
var homeComponent: HomeComponent {
HomeComponent(parent: self)
}

var newSongsComponent: NewSongsComponent {
NewSongsComponent(parent: self)
}

var newSongsContentComponent: NewSongsContentComponent {
NewSongsContentComponent(parent: self)
}

var remoteSongsDataSource: any RemoteSongsDataSource {
shared {
Expand All @@ -53,9 +62,9 @@ public extension AppComponent {
}
}

var fetchNewSongUseCase: any FetchNewSongUseCase {
var fetchNewSongsUseCase: any FetchNewSongsUseCase {
shared {
FetchNewSongUseCaseImpl(songsRepository: songsRepository)
FetchNewSongsUseCaseImpl(songsRepository: songsRepository)
}
}
}
13 changes: 7 additions & 6 deletions Projects/App/Sources/Application/AppComponent.swift
Original file line number Diff line number Diff line change
Expand Up @@ -12,22 +12,18 @@ public final class AppComponent: BootstrapComponent {
public func makeRootView() -> IntroViewController {
rootComponent.makeView()
}

public var keychain: any Keychain {
shared {
KeychainImpl()
}
}

var rootComponent: RootComponent {
shared {
RootComponent(parent: self)
}
}

var permissionComponent: PermissionComponent {
shared {
PermissionComponent(parent: self)
}
}
}

// MARK: - Tabbar
Expand Down Expand Up @@ -61,7 +57,12 @@ public extension AppComponent {
var openSourceLicenseComponent: OpenSourceLicenseComponent {
OpenSourceLicenseComponent(parent: self)
}

var serviceInfoComponent: ServiceInfoComponent {
ServiceInfoComponent(parent: self)
}

var permissionComponent: PermissionComponent {
PermissionComponent(parent: self)
}
}
61 changes: 57 additions & 4 deletions Projects/App/Sources/Application/NeedleGenerated.swift
Original file line number Diff line number Diff line change
Expand Up @@ -550,15 +550,18 @@ private class HomeDependency443c4e1871277bd8432aProvider: HomeDependency {
var fetchChartRankingUseCase: any FetchChartRankingUseCase {
return appComponent.fetchChartRankingUseCase
}
var fetchNewSongUseCase: any FetchNewSongUseCase {
return appComponent.fetchNewSongUseCase
var fetchNewSongsUseCase: any FetchNewSongsUseCase {
return appComponent.fetchNewSongsUseCase
}
var fetchRecommendPlayListUseCase: any FetchRecommendPlayListUseCase {
return appComponent.fetchRecommendPlayListUseCase
}
var playListDetailComponent: PlayListDetailComponent {
return appComponent.playListDetailComponent
}
var newSongsComponent: NewSongsComponent {
return appComponent.newSongsComponent
}
private let appComponent: AppComponent
init(appComponent: AppComponent) {
self.appComponent = appComponent
Expand Down Expand Up @@ -684,6 +687,19 @@ private class MultiPurposePopDependency30141c7a9a9e67e148afProvider: MultiPurpos
private func factory972fcba2860fcb8ad7b8f47b58f8f304c97af4d5(_ component: NeedleFoundation.Scope) -> AnyObject {
return MultiPurposePopDependency30141c7a9a9e67e148afProvider(appComponent: parent1(component) as! AppComponent)
}
private class NewSongsDependencyee634cc0cae21fc2a9e3Provider: NewSongsDependency {
var newSongsContentComponent: NewSongsContentComponent {
return appComponent.newSongsContentComponent
}
private let appComponent: AppComponent
init(appComponent: AppComponent) {
self.appComponent = appComponent
}
}
/// ^->AppComponent->NewSongsComponent
private func factory379179b05dd24ff979edf47b58f8f304c97af4d5(_ component: NeedleFoundation.Scope) -> AnyObject {
return NewSongsDependencyee634cc0cae21fc2a9e3Provider(appComponent: parent1(component) as! AppComponent)
}
private class PlayListDetailDependencyb06fb5392859952b82a2Provider: PlayListDetailDependency {
var fetchPlayListDetailUseCase: any FetchPlayListDetailUseCase {
return appComponent.fetchPlayListDetailUseCase
Expand Down Expand Up @@ -747,6 +763,25 @@ private class ProfilePopDependency081172e20caa75abdb54Provider: ProfilePopDepend
private func factorybd14b11ccce6dac94a24f47b58f8f304c97af4d5(_ component: NeedleFoundation.Scope) -> AnyObject {
return ProfilePopDependency081172e20caa75abdb54Provider(appComponent: parent1(component) as! AppComponent)
}
private class NewSongsContentDependency93a05f20fa300c5bbec3Provider: NewSongsContentDependency {
var fetchNewSongsUseCase: any FetchNewSongsUseCase {
return appComponent.fetchNewSongsUseCase
}
var fetchChartUpdateTimeUseCase: any FetchChartUpdateTimeUseCase {
return appComponent.fetchChartUpdateTimeUseCase
}
var containSongsComponent: ContainSongsComponent {
return appComponent.containSongsComponent
}
private let appComponent: AppComponent
init(appComponent: AppComponent) {
self.appComponent = appComponent
}
}
/// ^->AppComponent->NewSongsContentComponent
private func factorye130e1fbfcbc622a4c38f47b58f8f304c97af4d5(_ component: NeedleFoundation.Scope) -> AnyObject {
return NewSongsContentDependency93a05f20fa300c5bbec3Provider(appComponent: parent1(component) as! AppComponent)
}

#else
extension AppComponent: Registration {
Expand All @@ -760,11 +795,13 @@ extension AppComponent: Registration {
localTable["afterSearchComponent-AfterSearchComponent"] = { self.afterSearchComponent as Any }
localTable["afterSearchContentComponent-AfterSearchContentComponent"] = { self.afterSearchContentComponent as Any }
localTable["homeComponent-HomeComponent"] = { self.homeComponent as Any }
localTable["newSongsComponent-NewSongsComponent"] = { self.newSongsComponent as Any }
localTable["newSongsContentComponent-NewSongsContentComponent"] = { self.newSongsContentComponent as Any }
localTable["remoteSongsDataSource-any RemoteSongsDataSource"] = { self.remoteSongsDataSource as Any }
localTable["songsRepository-any SongsRepository"] = { self.songsRepository as Any }
localTable["fetchSearchSongUseCase-any FetchSearchSongUseCase"] = { self.fetchSearchSongUseCase as Any }
localTable["fetchLyricsUseCase-any FetchLyricsUseCase"] = { self.fetchLyricsUseCase as Any }
localTable["fetchNewSongUseCase-any FetchNewSongUseCase"] = { self.fetchNewSongUseCase as Any }
localTable["fetchNewSongsUseCase-any FetchNewSongsUseCase"] = { self.fetchNewSongsUseCase as Any }
localTable["signInComponent-SignInComponent"] = { self.signInComponent as Any }
localTable["storageComponent-StorageComponent"] = { self.storageComponent as Any }
localTable["afterLoginComponent-AfterLoginComponent"] = { self.afterLoginComponent as Any }
Expand Down Expand Up @@ -823,6 +860,7 @@ extension AppComponent: Registration {
localTable["playlistComponent-PlaylistComponent"] = { self.playlistComponent as Any }
localTable["openSourceLicenseComponent-OpenSourceLicenseComponent"] = { self.openSourceLicenseComponent as Any }
localTable["serviceInfoComponent-ServiceInfoComponent"] = { self.serviceInfoComponent as Any }
localTable["permissionComponent-PermissionComponent"] = { self.permissionComponent as Any }
localTable["noticePopupComponent-NoticePopupComponent"] = { self.noticePopupComponent as Any }
localTable["noticeComponent-NoticeComponent"] = { self.noticeComponent as Any }
localTable["noticeDetailComponent-NoticeDetailComponent"] = { self.noticeDetailComponent as Any }
Expand Down Expand Up @@ -1051,9 +1089,10 @@ extension SignInComponent: Registration {
extension HomeComponent: Registration {
public func registerItems() {
keyPathToName[\HomeDependency.fetchChartRankingUseCase] = "fetchChartRankingUseCase-any FetchChartRankingUseCase"
keyPathToName[\HomeDependency.fetchNewSongUseCase] = "fetchNewSongUseCase-any FetchNewSongUseCase"
keyPathToName[\HomeDependency.fetchNewSongsUseCase] = "fetchNewSongsUseCase-any FetchNewSongsUseCase"
keyPathToName[\HomeDependency.fetchRecommendPlayListUseCase] = "fetchRecommendPlayListUseCase-any FetchRecommendPlayListUseCase"
keyPathToName[\HomeDependency.playListDetailComponent] = "playListDetailComponent-PlayListDetailComponent"
keyPathToName[\HomeDependency.newSongsComponent] = "newSongsComponent-NewSongsComponent"
}
}
extension AfterSearchComponent: Registration {
Expand Down Expand Up @@ -1100,6 +1139,11 @@ extension MultiPurposePopComponent: Registration {
keyPathToName[\MultiPurposePopDependency.editPlayListNameUseCase] = "editPlayListNameUseCase-any EditPlayListNameUseCase"
}
}
extension NewSongsComponent: Registration {
public func registerItems() {
keyPathToName[\NewSongsDependency.newSongsContentComponent] = "newSongsContentComponent-NewSongsContentComponent"
}
}
extension PlayListDetailComponent: Registration {
public func registerItems() {
keyPathToName[\PlayListDetailDependency.fetchPlayListDetailUseCase] = "fetchPlayListDetailUseCase-any FetchPlayListDetailUseCase"
Expand All @@ -1125,6 +1169,13 @@ extension ProfilePopComponent: Registration {
keyPathToName[\ProfilePopDependency.setProfileUseCase] = "setProfileUseCase-any SetProfileUseCase"
}
}
extension NewSongsContentComponent: Registration {
public func registerItems() {
keyPathToName[\NewSongsContentDependency.fetchNewSongsUseCase] = "fetchNewSongsUseCase-any FetchNewSongsUseCase"
keyPathToName[\NewSongsContentDependency.fetchChartUpdateTimeUseCase] = "fetchChartUpdateTimeUseCase-any FetchChartUpdateTimeUseCase"
keyPathToName[\NewSongsContentDependency.containSongsComponent] = "containSongsComponent-ContainSongsComponent"
}
}


#endif
Expand Down Expand Up @@ -1178,10 +1229,12 @@ private func registerProviderFactory(_ componentPath: String, _ factory: @escapi
registerProviderFactory("^->AppComponent->ContainSongsComponent", factory4d4f4455414271fee232f47b58f8f304c97af4d5)
registerProviderFactory("^->AppComponent->ServiceInfoComponent", factory3afd170b9974b0dbd863f47b58f8f304c97af4d5)
registerProviderFactory("^->AppComponent->MultiPurposePopComponent", factory972fcba2860fcb8ad7b8f47b58f8f304c97af4d5)
registerProviderFactory("^->AppComponent->NewSongsComponent", factory379179b05dd24ff979edf47b58f8f304c97af4d5)
registerProviderFactory("^->AppComponent->PlayListDetailComponent", factory9e077ee814ce180ea399f47b58f8f304c97af4d5)
registerProviderFactory("^->AppComponent->OpenSourceLicenseComponent", factoryd505894818021731340ae3b0c44298fc1c149afb)
registerProviderFactory("^->AppComponent->NoticePopupComponent", factorycd081aacb61d6a707ca7e3b0c44298fc1c149afb)
registerProviderFactory("^->AppComponent->ProfilePopComponent", factorybd14b11ccce6dac94a24f47b58f8f304c97af4d5)
registerProviderFactory("^->AppComponent->NewSongsContentComponent", factorye130e1fbfcbc622a4c38f47b58f8f304c97af4d5)
}
#endif

Expand Down
2 changes: 2 additions & 0 deletions Projects/App/Support/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,8 @@
<string>$(WMDOMAIN_QNA)</string>
<key>WMDOMAIN_SONGS</key>
<string>$(WMDOMAIN_SONGS)</string>
<key>WMDOMAIN_V2_SONGS</key>
<string>$(WMDOMAIN_V2_SONGS)</string>
<key>WMDOMAIN_SUGGEST</key>
<string>$(WMDOMAIN_SUGGEST)</string>
<key>WMDOMAIN_USER</key>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,14 @@ public final class ArtistViewController: BaseViewController, ViewControllerFromS

public override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
navigationController?.interactivePopGestureRecognizer?.delegate = self
}

public override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
navigationController?.interactivePopGestureRecognizer?.delegate = nil
}

public static func viewController(
viewModel: ArtistViewModel,
artistDetailComponent: ArtistDetailComponent
Expand Down Expand Up @@ -131,3 +136,9 @@ extension ArtistViewController {
}
}
}

extension ArtistViewController: UIGestureRecognizerDelegate {
public func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
return false
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -71,10 +71,15 @@ extension ChartContentViewController {
private func outputBind() {
output.dataSource
.skip(1)
.do(onNext: { [weak self] _ in
.do(onNext: { [weak self] (model) in
guard let `self` = self else { return }
self.activityIncidator.stopAnimating()
self.refreshControl.endRefreshing()
let space: CGFloat = APP_HEIGHT() - 40 - 102 - 56 - 56 - STATUS_BAR_HEGHIT() - SAFEAREA_BOTTOM_HEIGHT()
let height: CGFloat = space / 3 * 2
let warningView: WarningView = WarningView(frame: CGRect(x: 0, y: 0, width: APP_WIDTH(), height: height))
warningView.text = "차트 데이터가 없습니다."
self.tableView.tableFooterView = model.isEmpty ? warningView : UIView(frame: CGRect(x: 0, y: 0, width: APP_WIDTH(), height: PLAYER_HEIGHT()))
})
.bind(to: tableView.rx.items) { [weak self] (tableView, index, model) -> UITableViewCell in
guard let self else { return UITableViewCell() }
Expand Down Expand Up @@ -126,8 +131,8 @@ extension ChartContentViewController {
self.activityIncidator.type = .circleStrokeSpin
self.activityIncidator.color = DesignSystemAsset.PrimaryColor.point.color
self.activityIncidator.startAnimating()
self.tableView.tableFooterView = UIView(frame: CGRect(x: 0, y: 0, width: APP_WIDTH(), height: 56))
self.tableView.scrollIndicatorInsets = UIEdgeInsets(top: 0, left: 0, bottom: 56, right: 0)
self.tableView.tableFooterView = UIView(frame: CGRect(x: 0, y: 0, width: APP_WIDTH(), height: PLAYER_HEIGHT()))
self.tableView.scrollIndicatorInsets = UIEdgeInsets(top: 0, left: 0, bottom: PLAYER_HEIGHT(), right: 0)
self.tableView.refreshControl = refreshControl
}
}
Expand All @@ -136,6 +141,7 @@ extension ChartContentViewController: UITableViewDelegate {
public func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 60
}

public func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 102
}
Expand Down
Loading

0 comments on commit 4ff9779

Please sign in to comment.