From 7aa040c4925cbd4bf0f52001113271bfe305b235 Mon Sep 17 00:00:00 2001 From: Yu Sung Date: Mon, 2 Jun 2025 15:21:24 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EC=BD=98=ED=85=90=EC=B8=A0=20=EC=97=85?= =?UTF-8?q?=EB=A1=9C=EB=93=9C=20-=20=ED=8F=AC=EC=9D=B8=ED=8A=B8=20?= =?UTF-8?q?=EC=82=AC=EC=9A=A9=20=EA=B0=80=EB=8A=A5=20=EC=97=AC=EB=B6=80=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Content/Create/ContentCreateView.swift | 22 +++++++++++++++++++ .../Create/ContentCreateViewModel.swift | 3 +++ .../Create/CreateAudioContentRequest.swift | 1 + 3 files changed, 26 insertions(+) diff --git a/SodaLive/Sources/Content/Create/ContentCreateView.swift b/SodaLive/Sources/Content/Create/ContentCreateView.swift index 60745a2..f007fc6 100644 --- a/SodaLive/Sources/Content/Create/ContentCreateView.swift +++ b/SodaLive/Sources/Content/Create/ContentCreateView.swift @@ -340,6 +340,28 @@ struct ContentCreateView: View { .padding(.top, 26.7) } + VStack(spacing: 13.3) { + Text("포인트 사용") + .font(.custom(Font.bold.rawValue, size: 16.7)) + .foregroundColor(Color.grayee) + .frame(maxWidth: .infinity, alignment: .leading) + + HStack(spacing: 13.3) { + SelectButtonView(title: "가능", isChecked: viewModel.isPointAvailable) { + if !viewModel.isPointAvailable { + viewModel.isPointAvailable = true + } + } + + SelectButtonView(title: "불가능", isChecked: !viewModel.isPointAvailable) { + if viewModel.isPointAvailable { + viewModel.isPointAvailable = false + } + } + } + } + .padding(.top, 26.7) + VStack(spacing: 13.3) { Text("미리듣기") .font(.custom(Font.bold.rawValue, size: 16.7)) diff --git a/SodaLive/Sources/Content/Create/ContentCreateViewModel.swift b/SodaLive/Sources/Content/Create/ContentCreateViewModel.swift index fdebf0f..cf200d5 100644 --- a/SodaLive/Sources/Content/Create/ContentCreateViewModel.swift +++ b/SodaLive/Sources/Content/Create/ContentCreateViewModel.swift @@ -57,6 +57,7 @@ final class ContentCreateViewModel: ObservableObject { priceString = "0" isLimited = false isGeneratePreview = true + isPointAvailable = false purchaseOption = PurchaseOption.BOTH } } @@ -70,6 +71,7 @@ final class ContentCreateViewModel: ObservableObject { } } @Published var isGeneratePreview = true + @Published var isPointAvailable = false @Published var isLimited = false { didSet { @@ -132,6 +134,7 @@ final class ContentCreateViewModel: ObservableObject { themeId: theme!.id, isAdult: isAdult, isGeneratePreview: isGeneratePreview, + isPointAvailable: isPointAvailable, isCommentAvailable: isAvailableComment, previewStartTime: isGeneratePreview && previewStartTime.trimmingCharacters(in: .whitespacesAndNewlines).count > 0 ? previewStartTime : nil, previewEndTime: isGeneratePreview && previewEndTime.trimmingCharacters(in: .whitespacesAndNewlines).count > 0 ? previewEndTime : nil diff --git a/SodaLive/Sources/Content/Create/CreateAudioContentRequest.swift b/SodaLive/Sources/Content/Create/CreateAudioContentRequest.swift index 596f8d8..94c4177 100644 --- a/SodaLive/Sources/Content/Create/CreateAudioContentRequest.swift +++ b/SodaLive/Sources/Content/Create/CreateAudioContentRequest.swift @@ -19,6 +19,7 @@ struct CreateAudioContentRequest: Encodable { let themeId: Int let isAdult: Bool let isGeneratePreview: Bool + let isPointAvailable: Bool let isCommentAvailable: Bool let previewStartTime: String? let previewEndTime: String?