From 86d4bc1c1edd6cd4b2dbcdfc7c8ba570d6797f40 Mon Sep 17 00:00:00 2001 From: Yu Sung Date: Fri, 8 Mar 2024 01:38:27 +0900 Subject: [PATCH] =?UTF-8?q?=ED=9B=84=EC=9B=90=20-=20=EC=8B=9C=EA=B7=B8?= =?UTF-8?q?=EB=8B=88=EC=B2=98=20=ED=9B=84=EC=9B=90=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Live/Room/Chat/LiveRoomChatRawMessage.swift | 1 + .../Sources/Live/Room/LiveRoomViewModel.swift | 15 ++++++++++++++- .../Sources/Live/Room/V2/LiveRoomViewV2.swift | 15 +++++++++++++++ 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/SodaLive/Sources/Live/Room/Chat/LiveRoomChatRawMessage.swift b/SodaLive/Sources/Live/Room/Chat/LiveRoomChatRawMessage.swift index f57b385..8232361 100644 --- a/SodaLive/Sources/Live/Room/Chat/LiveRoomChatRawMessage.swift +++ b/SodaLive/Sources/Live/Room/Chat/LiveRoomChatRawMessage.swift @@ -15,6 +15,7 @@ struct LiveRoomChatRawMessage: Codable { let type: LiveRoomChatRawMessageType let message: String let can: Int + var signatureImageUrl: String? = nil let donationMessage: String? var isActiveRoulette: Bool? = nil } diff --git a/SodaLive/Sources/Live/Room/LiveRoomViewModel.swift b/SodaLive/Sources/Live/Room/LiveRoomViewModel.swift index a01320e..d8c58df 100644 --- a/SodaLive/Sources/Live/Room/LiveRoomViewModel.swift +++ b/SodaLive/Sources/Live/Room/LiveRoomViewModel.swift @@ -143,6 +143,16 @@ final class LiveRoomViewModel: NSObject, ObservableObject { @Published var rouletteSelectedItem = "" var rouletteCan = 0 + @Published var signatureImageUrl = "" { + didSet { + if signatureImageUrl.trimmingCharacters(in: .whitespacesAndNewlines).count > 0 { + DispatchQueue.main.asyncAfter(deadline: .now() + 3.5) { + self.signatureImageUrl = "" + } + } + } + } + var timer: DispatchSourceTimer? func setOriginOffset(_ offset: CGFloat) { @@ -353,7 +363,7 @@ final class LiveRoomViewModel: NSObject, ObservableObject { do { let jsonDecoder = JSONDecoder() - let decoded = try jsonDecoder.decode(ApiResponseWithoutData.self, from: responseData) + let decoded = try jsonDecoder.decode(ApiResponse.self, from: responseData) self.isLoading = false @@ -363,6 +373,7 @@ final class LiveRoomViewModel: NSObject, ObservableObject { type: .DONATION, message: rawMessage, can: can, + signatureImageUrl: decoded.data, donationMessage: message ) @@ -384,6 +395,7 @@ final class LiveRoomViewModel: NSObject, ObservableObject { ) totalDonationCan += can + signatureImageUrl = decoded.data ?? "" self.messageChangeFlag.toggle() if self.messages.count > 100 { @@ -1708,6 +1720,7 @@ extension LiveRoomViewModel: AgoraRtmChannelDelegate { ) self.totalDonationCan += decoded.can + self.signatureImageUrl = decoded.signatureImageUrl ?? "" } else if decoded.type == .ROULETTE_DONATION { self.messages.append( LiveRoomRouletteDonationChat( diff --git a/SodaLive/Sources/Live/Room/V2/LiveRoomViewV2.swift b/SodaLive/Sources/Live/Room/V2/LiveRoomViewV2.swift index b50c39b..4df9b4c 100644 --- a/SodaLive/Sources/Live/Room/V2/LiveRoomViewV2.swift +++ b/SodaLive/Sources/Live/Room/V2/LiveRoomViewV2.swift @@ -7,6 +7,7 @@ import SwiftUI import Kingfisher +import SDWebImageSwiftUI struct LiveRoomViewV2: View { @@ -241,6 +242,20 @@ struct LiveRoomViewV2: View { proxy.scrollTo(viewModel.messages.count - 1, anchor: .center) }.padding(.bottom, 70) } + + if viewModel.signatureImageUrl.trimmingCharacters(in: .whitespacesAndNewlines).count > 0 { + VStack(spacing: 0) { + Spacer() + + AnimatedImage(url: URL(string: viewModel.signatureImageUrl)) + .resizable() + .aspectRatio(contentMode: .fit) + .frame(height: 300) + .frame(maxWidth: .infinity) + .padding(.horizontal, 20) + .padding(.bottom, 65) + } + } } }