오디션 지원 완료 다이얼로그 추가

This commit is contained in:
Yu Sung
2025-01-20 21:21:51 +09:00
parent 1d3350d498
commit 8228f4717a
6 changed files with 101 additions and 12 deletions

View File

@@ -11,6 +11,7 @@ import Kingfisher
struct AuditionRoleDetailView: View {
let roleId: Int
let auditionTitle: String
@StateObject var viewModel = AuditionRoleDetailViewModel()
@StateObject var keyboardHandler = KeyboardHandler()
@@ -22,6 +23,7 @@ struct AuditionRoleDetailView: View {
@State private var isShowNoticeAuthView = false
@State private var isShowApplyView = false
@State private var isShowNoticeReapply = false
@State private var isShowApplyCompleteView = false
var body: some View {
BaseView(isLoading: $viewModel.isLoading) {
@@ -253,6 +255,7 @@ struct AuditionRoleDetailView: View {
viewModel.applyAudition {
isShowApplyView = false
isShowRecordingView = false
isShowApplyCompleteView = true
}
}
)
@@ -285,17 +288,25 @@ struct AuditionRoleDetailView: View {
}
}
if viewModel.isShowSodaDialog {
if viewModel.isShowVoteCompleteView {
SodaDialog(
title: viewModel.dialogTitle,
desc: viewModel.dialogDesc,
confirmButtonTitle: "확인"
) {
viewModel.isShowSodaDialog = false
viewModel.isShowVoteCompleteView = false
viewModel.isShowNotifyVote = false
}
}
if isShowApplyCompleteView {
ApplyAuditionCompleteDialog(
auditionTitle: auditionTitle,
roleName: viewModel.name,
isShowing: $isShowApplyCompleteView
)
}
if soundManager.isLoading {
LoadingView()
}
@@ -334,5 +345,5 @@ struct AuditionRoleDetailView: View {
}
#Preview {
AuditionRoleDetailView(roleId: 1)
AuditionRoleDetailView(roleId: 1, auditionTitle: "스위치온")
}

View File

@@ -35,7 +35,7 @@ final class AuditionRoleDetailViewModel: ObservableObject {
@Published var phoneNumber = ""
@Published var isShowNotifyVote = true
@Published var isShowSodaDialog = false
@Published var isShowVoteCompleteView = false
@Published var isShowNoticeReapply = false
@Published var dialogTitle = ""
@Published var dialogDesc = ""
@@ -236,8 +236,6 @@ final class AuditionRoleDetailViewModel: ObservableObject {
let decoded = try jsonDecoder.decode(ApiResponseWithoutData.self, from: responseData)
if decoded.success {
self.errorMessage = "오디션 지원이 완료되었습니다."
self.isShowPopup = true
self.deleteAllRecordingFilesWithNamePrefix("voiceon_now_voice")
self.phoneNumber = ""
@@ -291,7 +289,7 @@ final class AuditionRoleDetailViewModel: ObservableObject {
if self.isShowNotifyVote {
self.dialogTitle = "[오디션 응원]"
self.dialogDesc = "오디션을 응원하셨습니다\n(무료응원 : 1계정당 1일 1회)\n1캔으로 추가 응원을 해보세요."
self.isShowSodaDialog = true
self.isShowVoteCompleteView = true
}
if let index = self.applicantList.firstIndex(where: { $0.applicantId == applicantId }) {
@@ -306,7 +304,7 @@ final class AuditionRoleDetailViewModel: ObservableObject {
if message.contains("오늘 응원은 여기까지") {
self.dialogTitle = "[오늘 응원 제한]"
self.dialogDesc = "오늘 응원은 여기까지!\n하루 최대 10회까지 이용이 가능합니다.\n내일 다시 이용해주세요."
self.isShowSodaDialog = true
self.isShowVoteCompleteView = true
} else {
self.errorMessage = message
self.isShowPopup = true