feat(creator): 답글 상세 화면을 등록한다
This commit is contained in:
@@ -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)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user