From 75aa99768e0feb416eb649447f69508bf9d2c401 Mon Sep 17 00:00:00 2001 From: Yu Sung Date: Tue, 7 Jul 2026 15:04:34 +0900 Subject: [PATCH] =?UTF-8?q?feat(creator):=20=ED=8C=ACTalk=20=EB=8B=B5?= =?UTF-8?q?=EA=B8=80=20=EC=83=81=EC=84=B8=EB=A5=BC=20=EC=97=B0=EA=B2=B0?= =?UTF-8?q?=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../V2/CreatorChannel/CreatorChannelView.swift | 16 +++++++++++++++- .../CreatorChannelFanTalkListItem.swift | 3 +++ .../FanTalk/CreatorChannelFanTalkTabView.swift | 6 ++++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/SodaLive/Sources/V2/CreatorChannel/CreatorChannelView.swift b/SodaLive/Sources/V2/CreatorChannel/CreatorChannelView.swift index 98ad86d4..7085b6df 100644 --- a/SodaLive/Sources/V2/CreatorChannel/CreatorChannelView.swift +++ b/SodaLive/Sources/V2/CreatorChannel/CreatorChannelView.swift @@ -292,7 +292,8 @@ struct CreatorChannelView: View { isOwnCreatorChannel: isOwnCreatorChannel, viewModel: fanTalkViewModel, onTapWrite: showFanTalkWriteView, - onTapEdit: showFanTalkModifyView + onTapEdit: showFanTalkModifyView, + onTapDetail: showFanTalkReplyDetail ) } else if viewModel.selectedTab == .community { CreatorChannelCommunityTabView( @@ -629,6 +630,19 @@ struct CreatorChannelView: View { ) ) } + + private func showFanTalkReplyDetail(_ fanTalk: CreatorChannelFanTalkItemResponse) { + guard isOwnCreatorChannel else { return } + + AppState.shared.setAppStep( + step: .creatorChannelReplyDetail( + context: .fanTalk(creatorId: creatorId, parentFanTalk: fanTalk), + onFanTalkRefresh: { + fanTalkViewModel.fetchFirstPage(creatorId: creatorId) + } + ) + ) + } } struct CreatorChannelView_Previews: PreviewProvider { diff --git a/SodaLive/Sources/V2/CreatorChannel/FanTalk/Components/CreatorChannelFanTalkListItem.swift b/SodaLive/Sources/V2/CreatorChannel/FanTalk/Components/CreatorChannelFanTalkListItem.swift index 8da86db8..6067043b 100644 --- a/SodaLive/Sources/V2/CreatorChannel/FanTalk/Components/CreatorChannelFanTalkListItem.swift +++ b/SodaLive/Sources/V2/CreatorChannel/FanTalk/Components/CreatorChannelFanTalkListItem.swift @@ -6,6 +6,7 @@ struct CreatorChannelFanTalkListItem: View { let isOwnCreatorChannel: Bool let onTapReport: () -> Void let onTapMore: () -> Void + let onTapDetail: () -> Void var body: some View { VStack(alignment: .leading, spacing: 0) { @@ -41,6 +42,8 @@ struct CreatorChannelFanTalkListItem: View { .frame(height: 1) } .background(Color.black) + .contentShape(Rectangle()) + .onTapGesture(perform: onTapDetail) } private var header: some View { diff --git a/SodaLive/Sources/V2/CreatorChannel/FanTalk/CreatorChannelFanTalkTabView.swift b/SodaLive/Sources/V2/CreatorChannel/FanTalk/CreatorChannelFanTalkTabView.swift index e8c575e0..43c7ee87 100644 --- a/SodaLive/Sources/V2/CreatorChannel/FanTalk/CreatorChannelFanTalkTabView.swift +++ b/SodaLive/Sources/V2/CreatorChannel/FanTalk/CreatorChannelFanTalkTabView.swift @@ -6,6 +6,7 @@ struct CreatorChannelFanTalkTabView: View { @ObservedObject var viewModel: CreatorChannelFanTalkViewModel let onTapWrite: () -> Void let onTapEdit: (CreatorChannelFanTalkItemResponse) -> Void + let onTapDetail: (CreatorChannelFanTalkItemResponse) -> Void @State private var actionPopupFanTalk: CreatorChannelFanTalkItemResponse? @State private var fanTalkItemFrames = [Int: CGRect]() @@ -76,6 +77,11 @@ struct CreatorChannelFanTalkTabView: View { }, onTapMore: { actionPopupFanTalk = actionPopupFanTalk?.fanTalkId == fanTalk.fanTalkId ? nil : fanTalk + }, + onTapDetail: { + guard isOwnCreatorChannel else { return } + actionPopupFanTalk = nil + onTapDetail(fanTalk) } ) .background {