From 0584b17b7666ae020124ec35bb996ec646ccb1c6 Mon Sep 17 00:00:00 2001 From: Yu Sung Date: Sat, 24 Feb 2024 03:57:45 +0900 Subject: [PATCH] =?UTF-8?q?=EB=A3=B0=EB=A0=9B=20=ED=94=84=EB=A6=AC?= =?UTF-8?q?=EC=85=8B=20=EC=84=A4=EC=A0=95=20=EC=84=B1=EA=B3=B5=20=EB=A9=94?= =?UTF-8?q?=EC=8B=9C=EC=A7=80=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Sources/Live/Room/LiveRoomViewModel.swift | 4 +-- .../Config/RouletteSettingsView.swift | 6 ++-- .../Config/RouletteSettingsViewModel.swift | 32 +++++++++++++++---- .../Sources/Live/Room/V2/LiveRoomViewV2.swift | 7 ++-- 4 files changed, 35 insertions(+), 14 deletions(-) diff --git a/SodaLive/Sources/Live/Room/LiveRoomViewModel.swift b/SodaLive/Sources/Live/Room/LiveRoomViewModel.swift index 616ea28..a01320e 100644 --- a/SodaLive/Sources/Live/Room/LiveRoomViewModel.swift +++ b/SodaLive/Sources/Live/Room/LiveRoomViewModel.swift @@ -1341,8 +1341,8 @@ final class LiveRoomViewModel: NSObject, ObservableObject { } } - func setActiveRoulette(isActiveRoulette: Bool) { - self.popupContent = isActiveRoulette ? "룰렛을 활성화 했습니다." : "룰렛을 비활성화 했습니다." + func setActiveRoulette(isActiveRoulette: Bool, message: String) { + self.popupContent = message self.isShowPopup = true self.agora.sendRawMessageToGroup( rawMessage: LiveRoomChatRawMessage( diff --git a/SodaLive/Sources/Live/Room/Routlette/Config/RouletteSettingsView.swift b/SodaLive/Sources/Live/Room/Routlette/Config/RouletteSettingsView.swift index f785ccf..ac8f8d9 100644 --- a/SodaLive/Sources/Live/Room/Routlette/Config/RouletteSettingsView.swift +++ b/SodaLive/Sources/Live/Room/Routlette/Config/RouletteSettingsView.swift @@ -13,7 +13,7 @@ struct RouletteSettingsView: View { @StateObject var viewModel = RouletteSettingsViewModel() @Binding var isShowing: Bool - let onComplete: (Bool) -> Void + let onComplete: (Bool, String) -> Void var body: some View { GeometryReader { proxy in @@ -163,7 +163,7 @@ struct RouletteSettingsView: View { .cornerRadius(10) .onTapGesture { viewModel.createOrUpdateRoulette { - onComplete($0) + onComplete($0, $1) isShowing = false } } @@ -217,6 +217,6 @@ struct RouletteSettingsView: View { struct RouletteSettingsView_Previews: PreviewProvider { static var previews: some View { - RouletteSettingsView(isShowing: .constant(true)) { _ in } + RouletteSettingsView(isShowing: .constant(true)) { _, _ in } } } diff --git a/SodaLive/Sources/Live/Room/Routlette/Config/RouletteSettingsViewModel.swift b/SodaLive/Sources/Live/Room/Routlette/Config/RouletteSettingsViewModel.swift index 2cf63fb..277f661 100644 --- a/SodaLive/Sources/Live/Room/Routlette/Config/RouletteSettingsViewModel.swift +++ b/SodaLive/Sources/Live/Room/Routlette/Config/RouletteSettingsViewModel.swift @@ -148,7 +148,7 @@ final class RouletteSettingsViewModel: ObservableObject { isShowPreview = true } - func createOrUpdateRoulette(onSuccess: @escaping (Bool) -> Void) { + func createOrUpdateRoulette(onSuccess: @escaping (Bool, String) -> Void) { if !isLoading { isLoading = true @@ -160,7 +160,7 @@ final class RouletteSettingsViewModel: ObservableObject { } } - private func createRoulette(onSuccess: @escaping (Bool) -> Void) { + private func createRoulette(onSuccess: @escaping (Bool, String) -> Void) { var items = [RouletteItem]() for option in options { if option.title.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty { @@ -173,6 +173,26 @@ final class RouletteSettingsViewModel: ObservableObject { items.append(RouletteItem(title: option.title, weight: option.weight)) } + let selectedRouletteTitle: String + let successMessage: String + + switch (self.selectedRoulette) { + case .ROULETTE_2: + selectedRouletteTitle = "룰렛 2" + + case .ROULETTE_3: + selectedRouletteTitle = "룰렛 3" + + default: + selectedRouletteTitle = "룰렛 1" + } + + if isActive { + successMessage = "\(selectedRouletteTitle)을 활성화 했습니다." + } else { + successMessage = "\(selectedRouletteTitle)을 비활성화 했습니다." + } + let request = CreateRouletteRequest(can: can, isActive: isActive, items: items) repository.createRoulette(request: request) .sink { result in @@ -191,7 +211,7 @@ final class RouletteSettingsViewModel: ObservableObject { let decoded = try jsonDecoder.decode(ApiResponseWithoutData.self, from: responseData) if decoded.success { - onSuccess(isActive) + onSuccess(isActive, successMessage) } else { self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다." self.isShowErrorPopup = true @@ -204,7 +224,7 @@ final class RouletteSettingsViewModel: ObservableObject { .store(in: &subscription) } - private func updateRoulette(onSuccess: @escaping (Bool) -> Void) { + private func updateRoulette(onSuccess: @escaping (Bool, String) -> Void) { var items = [RouletteItem]() for option in options { if option.title.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty { @@ -263,9 +283,7 @@ final class RouletteSettingsViewModel: ObservableObject { let decoded = try jsonDecoder.decode(ApiResponseWithoutData.self, from: responseData) if decoded.success { - self.errorMessage = successMessage - self.isShowErrorPopup = true - onSuccess(isActive) + onSuccess(isActive, successMessage) } else { self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다." self.isShowErrorPopup = true diff --git a/SodaLive/Sources/Live/Room/V2/LiveRoomViewV2.swift b/SodaLive/Sources/Live/Room/V2/LiveRoomViewV2.swift index c796d31..b50c39b 100644 --- a/SodaLive/Sources/Live/Room/V2/LiveRoomViewV2.swift +++ b/SodaLive/Sources/Live/Room/V2/LiveRoomViewV2.swift @@ -548,8 +548,11 @@ struct LiveRoomViewV2: View { } if viewModel.isShowRouletteSettings { - RouletteSettingsView(isShowing: $viewModel.isShowRouletteSettings) { isActiveRoulette in - self.viewModel.setActiveRoulette(isActiveRoulette: isActiveRoulette) + RouletteSettingsView(isShowing: $viewModel.isShowRouletteSettings) { isActiveRoulette, message in + self.viewModel.setActiveRoulette( + isActiveRoulette: isActiveRoulette, + message: message + ) } }