feat(content): 랭킹 탭을 추가한다

This commit is contained in:
Yu Sung
2026-07-06 20:19:27 +09:00
parent bae92eba4b
commit d129583d3b
15 changed files with 1322 additions and 1 deletions

View File

@@ -1700,6 +1700,36 @@
C0A706000000000000000001 /* AudioContentThumbnailCard.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0A706000000000000000000 /* AudioContentThumbnailCard.swift */; };
C0A706000000000000000002 /* AudioContentThumbnailCard.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0A706000000000000000000 /* AudioContentThumbnailCard.swift */; };
C0A706000000000000000003 /* AudioContentThumbnailCard.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0A706000000000000000000 /* AudioContentThumbnailCard.swift */; };
C0A721000000000000000001 /* AudioRankingResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0A720000000000000000001 /* AudioRankingResponse.swift */; };
C0A721000000000000000002 /* MainContentRankingApi.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0A720000000000000000002 /* MainContentRankingApi.swift */; };
C0A721000000000000000003 /* MainContentRankingRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0A720000000000000000003 /* MainContentRankingRepository.swift */; };
C0A721000000000000000004 /* MainContentRankingViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0A720000000000000000004 /* MainContentRankingViewModel.swift */; };
C0A721000000000000000005 /* MainContentRankingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0A720000000000000000005 /* MainContentRankingView.swift */; };
C0A721000000000000000006 /* MainContentRankChangeBadge.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0A720000000000000000006 /* MainContentRankChangeBadge.swift */; };
C0A721000000000000000007 /* MainContentAudioRankingTopCard.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0A720000000000000000007 /* MainContentAudioRankingTopCard.swift */; };
C0A721000000000000000008 /* MainContentAudioRankingRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0A720000000000000000008 /* MainContentAudioRankingRow.swift */; };
C0A721000000000000000009 /* MainContentAudioRankingEmptyStateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0A720000000000000000009 /* MainContentAudioRankingEmptyStateView.swift */; };
C0A72100000000000000000A /* MainContentAudioRankingThumbnailCard.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0A72000000000000000000A /* MainContentAudioRankingThumbnailCard.swift */; };
C0A722000000000000000001 /* AudioRankingResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0A720000000000000000001 /* AudioRankingResponse.swift */; };
C0A722000000000000000002 /* MainContentRankingApi.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0A720000000000000000002 /* MainContentRankingApi.swift */; };
C0A722000000000000000003 /* MainContentRankingRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0A720000000000000000003 /* MainContentRankingRepository.swift */; };
C0A722000000000000000004 /* MainContentRankingViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0A720000000000000000004 /* MainContentRankingViewModel.swift */; };
C0A722000000000000000005 /* MainContentRankingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0A720000000000000000005 /* MainContentRankingView.swift */; };
C0A722000000000000000006 /* MainContentRankChangeBadge.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0A720000000000000000006 /* MainContentRankChangeBadge.swift */; };
C0A722000000000000000007 /* MainContentAudioRankingTopCard.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0A720000000000000000007 /* MainContentAudioRankingTopCard.swift */; };
C0A722000000000000000008 /* MainContentAudioRankingRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0A720000000000000000008 /* MainContentAudioRankingRow.swift */; };
C0A722000000000000000009 /* MainContentAudioRankingEmptyStateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0A720000000000000000009 /* MainContentAudioRankingEmptyStateView.swift */; };
C0A72200000000000000000A /* MainContentAudioRankingThumbnailCard.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0A72000000000000000000A /* MainContentAudioRankingThumbnailCard.swift */; };
C0A723000000000000000001 /* AudioRankingResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0A720000000000000000001 /* AudioRankingResponse.swift */; };
C0A723000000000000000002 /* MainContentRankingApi.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0A720000000000000000002 /* MainContentRankingApi.swift */; };
C0A723000000000000000003 /* MainContentRankingRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0A720000000000000000003 /* MainContentRankingRepository.swift */; };
C0A723000000000000000004 /* MainContentRankingViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0A720000000000000000004 /* MainContentRankingViewModel.swift */; };
C0A723000000000000000005 /* MainContentRankingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0A720000000000000000005 /* MainContentRankingView.swift */; };
C0A723000000000000000006 /* MainContentRankChangeBadge.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0A720000000000000000006 /* MainContentRankChangeBadge.swift */; };
C0A723000000000000000007 /* MainContentAudioRankingTopCard.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0A720000000000000000007 /* MainContentAudioRankingTopCard.swift */; };
C0A723000000000000000008 /* MainContentAudioRankingRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0A720000000000000000008 /* MainContentAudioRankingRow.swift */; };
C0A723000000000000000009 /* MainContentAudioRankingEmptyStateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0A720000000000000000009 /* MainContentAudioRankingEmptyStateView.swift */; };
C0A72300000000000000000A /* MainContentAudioRankingThumbnailCard.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0A72000000000000000000A /* MainContentAudioRankingThumbnailCard.swift */; };
7B2EE8B4132668F0267B10CB /* UserProfileChannelDonationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 214C32BF44DF384FD6925E0B /* UserProfileChannelDonationView.swift */; };
7BED9B1CFDC729EC4AF42B35 /* Radius.swift in Sources */ = {isa = PBXBuildFile; fileRef = E31B21FA615404F2E9E7839F /* Radius.swift */; };
80209D5731C339163084890C /* LanguageSettingsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 716260E8214A329EE07CAAFA /* LanguageSettingsViewModel.swift */; };
@@ -2116,6 +2146,16 @@
C0A70000000000000000000C /* MainContentMostCommentedAudioSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainContentMostCommentedAudioSection.swift; sourceTree = "<group>"; };
C0A70000000000000000000D /* MainContentRecommendedAudioGridSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainContentRecommendedAudioGridSection.swift; sourceTree = "<group>"; };
C0A70000000000000000000F /* MainContentAudioEmptyStateView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainContentAudioEmptyStateView.swift; sourceTree = "<group>"; };
C0A720000000000000000001 /* AudioRankingResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AudioRankingResponse.swift; sourceTree = "<group>"; };
C0A720000000000000000002 /* MainContentRankingApi.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainContentRankingApi.swift; sourceTree = "<group>"; };
C0A720000000000000000003 /* MainContentRankingRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainContentRankingRepository.swift; sourceTree = "<group>"; };
C0A720000000000000000004 /* MainContentRankingViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainContentRankingViewModel.swift; sourceTree = "<group>"; };
C0A720000000000000000005 /* MainContentRankingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainContentRankingView.swift; sourceTree = "<group>"; };
C0A720000000000000000006 /* MainContentRankChangeBadge.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainContentRankChangeBadge.swift; sourceTree = "<group>"; };
C0A720000000000000000007 /* MainContentAudioRankingTopCard.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainContentAudioRankingTopCard.swift; sourceTree = "<group>"; };
C0A720000000000000000008 /* MainContentAudioRankingRow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainContentAudioRankingRow.swift; sourceTree = "<group>"; };
C0A720000000000000000009 /* MainContentAudioRankingEmptyStateView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainContentAudioRankingEmptyStateView.swift; sourceTree = "<group>"; };
C0A72000000000000000000A /* MainContentAudioRankingThumbnailCard.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainContentAudioRankingThumbnailCard.swift; sourceTree = "<group>"; };
401A3FC12FEEB00100A5BBA3 /* MainHomeLiveSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainHomeLiveSection.swift; sourceTree = "<group>"; };
401A3FC52FEEB00200A5BBA3 /* MainHomeBannerSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainHomeBannerSection.swift; sourceTree = "<group>"; };
401A3FCC2FEEB00300A5BBA3 /* MainHomeActiveCreatorSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainHomeActiveCreatorSection.swift; sourceTree = "<group>"; };
@@ -3220,6 +3260,7 @@
isa = PBXGroup;
children = (
C0A700000000000000000102 /* Recommendation */,
C0A720000000000000000100 /* Ranking */,
C0A710000000000000000100 /* All */,
C0A700000000000000000001 /* MainContentView.swift */,
C0A700000000000000000002 /* MainContentTab.swift */,
@@ -3270,6 +3311,47 @@
path = Components;
sourceTree = "<group>";
};
C0A720000000000000000100 /* Ranking */ = {
isa = PBXGroup;
children = (
C0A720000000000000000103 /* Components */,
C0A720000000000000000101 /* Models */,
C0A720000000000000000102 /* Repository */,
C0A720000000000000000004 /* MainContentRankingViewModel.swift */,
C0A720000000000000000005 /* MainContentRankingView.swift */,
);
path = Ranking;
sourceTree = "<group>";
};
C0A720000000000000000101 /* Models */ = {
isa = PBXGroup;
children = (
C0A720000000000000000001 /* AudioRankingResponse.swift */,
);
path = Models;
sourceTree = "<group>";
};
C0A720000000000000000102 /* Repository */ = {
isa = PBXGroup;
children = (
C0A720000000000000000002 /* MainContentRankingApi.swift */,
C0A720000000000000000003 /* MainContentRankingRepository.swift */,
);
path = Repository;
sourceTree = "<group>";
};
C0A720000000000000000103 /* Components */ = {
isa = PBXGroup;
children = (
C0A720000000000000000006 /* MainContentRankChangeBadge.swift */,
C0A720000000000000000007 /* MainContentAudioRankingTopCard.swift */,
C0A720000000000000000008 /* MainContentAudioRankingRow.swift */,
C0A72000000000000000000A /* MainContentAudioRankingThumbnailCard.swift */,
C0A720000000000000000009 /* MainContentAudioRankingEmptyStateView.swift */,
);
path = Components;
sourceTree = "<group>";
};
401A3F992FEEAFA000A5BBA3 /* Models */ = {
isa = PBXGroup;
children = (
@@ -6416,6 +6498,16 @@
C0A70100000000000000000C /* MainContentMostCommentedAudioSection.swift in Sources */,
C0A70100000000000000000D /* MainContentRecommendedAudioGridSection.swift in Sources */,
C0A70100000000000000000F /* MainContentAudioEmptyStateView.swift in Sources */,
C0A721000000000000000001 /* AudioRankingResponse.swift in Sources */,
C0A721000000000000000002 /* MainContentRankingApi.swift in Sources */,
C0A721000000000000000003 /* MainContentRankingRepository.swift in Sources */,
C0A721000000000000000004 /* MainContentRankingViewModel.swift in Sources */,
C0A721000000000000000005 /* MainContentRankingView.swift in Sources */,
C0A721000000000000000006 /* MainContentRankChangeBadge.swift in Sources */,
C0A721000000000000000007 /* MainContentAudioRankingTopCard.swift in Sources */,
C0A721000000000000000008 /* MainContentAudioRankingRow.swift in Sources */,
C0A72100000000000000000A /* MainContentAudioRankingThumbnailCard.swift in Sources */,
C0A721000000000000000009 /* MainContentAudioRankingEmptyStateView.swift in Sources */,
C0A706000000000000000003 /* AudioContentThumbnailCard.swift in Sources */,
401A3FAA2FEEAFA000A5BBA3 /* MainHomeRankingView.swift in Sources */,
401A3FAB2FEEAFA000A5BBA3 /* MainHomeFollowingView.swift in Sources */,
@@ -7278,6 +7370,16 @@
C0A70200000000000000000C /* MainContentMostCommentedAudioSection.swift in Sources */,
C0A70200000000000000000D /* MainContentRecommendedAudioGridSection.swift in Sources */,
C0A70200000000000000000F /* MainContentAudioEmptyStateView.swift in Sources */,
C0A722000000000000000001 /* AudioRankingResponse.swift in Sources */,
C0A722000000000000000002 /* MainContentRankingApi.swift in Sources */,
C0A722000000000000000003 /* MainContentRankingRepository.swift in Sources */,
C0A722000000000000000004 /* MainContentRankingViewModel.swift in Sources */,
C0A722000000000000000005 /* MainContentRankingView.swift in Sources */,
C0A722000000000000000006 /* MainContentRankChangeBadge.swift in Sources */,
C0A722000000000000000007 /* MainContentAudioRankingTopCard.swift in Sources */,
C0A722000000000000000008 /* MainContentAudioRankingRow.swift in Sources */,
C0A72200000000000000000A /* MainContentAudioRankingThumbnailCard.swift in Sources */,
C0A722000000000000000009 /* MainContentAudioRankingEmptyStateView.swift in Sources */,
C0A706000000000000000001 /* AudioContentThumbnailCard.swift in Sources */,
401A3FAE2FEEAFA000A5BBA3 /* MainHomeRankingView.swift in Sources */,
401A3FAF2FEEAFA000A5BBA3 /* MainHomeFollowingView.swift in Sources */,
@@ -8180,6 +8282,16 @@
C0A70300000000000000000C /* MainContentMostCommentedAudioSection.swift in Sources */,
C0A70300000000000000000D /* MainContentRecommendedAudioGridSection.swift in Sources */,
C0A70300000000000000000F /* MainContentAudioEmptyStateView.swift in Sources */,
C0A723000000000000000001 /* AudioRankingResponse.swift in Sources */,
C0A723000000000000000002 /* MainContentRankingApi.swift in Sources */,
C0A723000000000000000003 /* MainContentRankingRepository.swift in Sources */,
C0A723000000000000000004 /* MainContentRankingViewModel.swift in Sources */,
C0A723000000000000000005 /* MainContentRankingView.swift in Sources */,
C0A723000000000000000006 /* MainContentRankChangeBadge.swift in Sources */,
C0A723000000000000000007 /* MainContentAudioRankingTopCard.swift in Sources */,
C0A723000000000000000008 /* MainContentAudioRankingRow.swift in Sources */,
C0A72300000000000000000A /* MainContentAudioRankingThumbnailCard.swift in Sources */,
C0A723000000000000000009 /* MainContentAudioRankingEmptyStateView.swift in Sources */,
C0A706000000000000000002 /* AudioContentThumbnailCard.swift in Sources */,
401A3FB22FEEAFA000A5BBA3 /* MainHomeRankingView.swift in Sources */,
401A3FB32FEEAFA000A5BBA3 /* MainHomeFollowingView.swift in Sources */,