feat(recommendation): 추천 서브 배너와 연속 순환을 추가한다

This commit is contained in:
Yu Sung
2026-10-30 12:19:00 +09:00
parent 88f923072c
commit 5dcd0f0104
18 changed files with 1045 additions and 2 deletions
+18
View File
@@ -25,6 +25,12 @@
2A49520637FD59B21473C7C2 /* PostChannelDonationRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BBDC3ECBBE049EAA4057D3A /* PostChannelDonationRequest.swift */; };
2B35B93B2F7253CADBC12A82 /* DateParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 375C41DF9D62AF5B9C3C1FAC /* DateParser.swift */; };
2B65EEB59EE24059AC5DEADC /* BannerCarousel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 24266E32FC49D7C31610C2AD /* BannerCarousel.swift */; };
BA2910013010000000A5BBA3 /* SubBanner.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA2900013010000000A5BBA3 /* SubBanner.swift */; };
BA2910023010000000A5BBA3 /* SubBannerLinkOpener.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA2900023010000000A5BBA3 /* SubBannerLinkOpener.swift */; };
BA2910033010000000A5BBA3 /* SubBannerCarousel.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA2900033010000000A5BBA3 /* SubBannerCarousel.swift */; };
BA2920013010000000A5BBA3 /* SubBanner.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA2900013010000000A5BBA3 /* SubBanner.swift */; };
BA2920023010000000A5BBA3 /* SubBannerLinkOpener.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA2900023010000000A5BBA3 /* SubBannerLinkOpener.swift */; };
BA2920033010000000A5BBA3 /* SubBannerCarousel.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA2900033010000000A5BBA3 /* SubBannerCarousel.swift */; };
2BA6CE345486A0F75F7E75DA /* CreatorChannelFanTalkActionPopup.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3D241AC104728809A8E70C8 /* CreatorChannelFanTalkActionPopup.swift */; };
2D761BB45AB6A332BE4690A1 /* CreatorChannelFanTalkEmptyView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A08977117E94D72914BB3FA /* CreatorChannelFanTalkEmptyView.swift */; };
2DA2EA227CAA0E757E63A335 /* CreatorChannelFanTalkCountBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = EDB71B1A61924B10599005FE /* CreatorChannelFanTalkCountBar.swift */; };
@@ -2224,6 +2230,9 @@
1FDDF6BBD0192819B1F5B3FE /* PushNotificationRepository.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PushNotificationRepository.swift; sourceTree = "<group>"; };
214C32BF44DF384FD6925E0B /* UserProfileChannelDonationView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = UserProfileChannelDonationView.swift; sourceTree = "<group>"; };
24266E32FC49D7C31610C2AD /* BannerCarousel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BannerCarousel.swift; sourceTree = "<group>"; };
BA2900013010000000A5BBA3 /* SubBanner.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SubBanner.swift; sourceTree = "<group>"; };
BA2900023010000000A5BBA3 /* SubBannerLinkOpener.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SubBannerLinkOpener.swift; sourceTree = "<group>"; };
BA2900033010000000A5BBA3 /* SubBannerCarousel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SubBannerCarousel.swift; sourceTree = "<group>"; };
25C5D06E4F54C0ED7B7BD462 /* CreatorChannelFanTalkViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CreatorChannelFanTalkViewModel.swift; sourceTree = "<group>"; };
25C5D06F4F54C0ED7B7BD462 /* CreatorChannelFanTalkWriteViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CreatorChannelFanTalkWriteViewModel.swift; sourceTree = "<group>"; };
25C5D0704F54C0ED7B7BD462 /* CreatorChannelFanTalkWriteView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CreatorChannelFanTalkWriteView.swift; sourceTree = "<group>"; };
@@ -3388,6 +3397,9 @@
isa = PBXGroup;
children = (
24266E32FC49D7C31610C2AD /* BannerCarousel.swift */,
BA2900013010000000A5BBA3 /* SubBanner.swift */,
BA2900023010000000A5BBA3 /* SubBannerLinkOpener.swift */,
BA2900033010000000A5BBA3 /* SubBannerCarousel.swift */,
);
path = Banner;
sourceTree = "<group>";
@@ -7986,6 +7998,9 @@
7AB453CE38CA0B3D612E9467 /* AudioContentCard.swift in Sources */,
C0A704000000000000000001 /* AudioContentListRow.swift in Sources */,
2B65EEB59EE24059AC5DEADC /* BannerCarousel.swift in Sources */,
BA2910013010000000A5BBA3 /* SubBanner.swift in Sources */,
BA2910023010000000A5BBA3 /* SubBannerLinkOpener.swift in Sources */,
BA2910033010000000A5BBA3 /* SubBannerCarousel.swift in Sources */,
4572B5004B70CED10BDDB4C3 /* FollowAllButton.swift in Sources */,
BCA6CD9E57528C5F4203F1A5 /* CapsuleTabBar.swift in Sources */,
176AE05194A71107EA461B7B /* AiCharacterCard.swift in Sources */,
@@ -8928,6 +8943,9 @@
C9E67EC59CB2709A7A75A8B8 /* AudioContentCard.swift in Sources */,
C0A704000000000000000002 /* AudioContentListRow.swift in Sources */,
7389BAA35C414A1A0C1FE616 /* BannerCarousel.swift in Sources */,
BA2920013010000000A5BBA3 /* SubBanner.swift in Sources */,
BA2920023010000000A5BBA3 /* SubBannerLinkOpener.swift in Sources */,
BA2920033010000000A5BBA3 /* SubBannerCarousel.swift in Sources */,
9346B50E2D4531CE2CE373C8 /* FollowAllButton.swift in Sources */,
1690309E86928580115E94E2 /* CapsuleTabBar.swift in Sources */,
9B9CA62A8B2AED3A327FB06B /* AiCharacterCard.swift in Sources */,