feat(creator): 답글 상세 화면을 등록한다

This commit is contained in:
Yu Sung
2026-07-07 15:04:15 +09:00
parent e7a011c519
commit 9276d17c26
2 changed files with 204 additions and 48 deletions

View File

@@ -0,0 +1,68 @@
import SwiftUI
struct CreatorChannelReplyDetailView: View {
let context: CreatorChannelReplyDetailContext
let onFanTalkRefresh: (() -> Void)?
@StateObject private var viewModel = CreatorChannelReplyDetailViewModel()
var body: some View {
ZStack {
VStack(spacing: 0) {
CreatorChannelReplyDetailTitleBar {
AppState.shared.back()
}
if let parentItem = viewModel.parentItem {
CreatorChannelReplyDetailFeedView(
parentItem: parentItem,
replies: viewModel.replies,
selectedActionItem: viewModel.selectedActionItem,
canEdit: viewModel.canEdit,
canDelete: viewModel.canDelete,
onTapAction: viewModel.selectActionItem,
onTapEdit: viewModel.beginEditing,
onTapDelete: viewModel.presentDeleteDialog,
onReplyAppear: viewModel.fetchNextCommunityRepliesIfNeeded
)
.frame(maxWidth: .infinity, maxHeight: .infinity)
} else {
Spacer()
}
CreatorChannelReplyDetailInputBar(
text: $viewModel.replyText,
isSendEnabled: viewModel.isSendEnabled && viewModel.isLoading == false,
isEditing: viewModel.isEditing,
onTapSend: viewModel.send,
onTapCancelEditing: viewModel.cancelEditing
)
}
.background(Color.black.ignoresSafeArea())
if viewModel.isLoading {
LoadingView()
}
if viewModel.isShowDeleteDialog {
SodaDialog(
title: I18n.Common.commentDeleteTitle,
desc: I18n.Common.confirmDeleteQuestion,
confirmButtonTitle: I18n.Common.delete,
confirmButtonAction: viewModel.confirmDelete,
cancelButtonTitle: I18n.Common.cancel,
cancelButtonAction: {
viewModel.isShowDeleteDialog = false
viewModel.deletingItem = nil
},
textAlignment: .center
)
}
}
.navigationBarBackButtonHidden(true)
.onAppear {
viewModel.configure(context: context, onFanTalkRefresh: onFanTalkRefresh)
}
.sodaToast(isPresented: $viewModel.isShowPopup, message: viewModel.errorMessage, autohideIn: 1)
}
}