parent
37aa6d13de
commit
fed781521d
|
@ -8,7 +8,7 @@
|
|||
import Foundation
|
||||
|
||||
enum LiveRoomChatType: String {
|
||||
case CHAT, DONATION, JOIN, ROULETTE_DONATION, HEART
|
||||
case CHAT, DONATION, JOIN, ROULETTE_DONATION
|
||||
}
|
||||
|
||||
protocol LiveRoomChat {
|
||||
|
@ -48,9 +48,3 @@ struct LiveRoomJoinChat: LiveRoomChat {
|
|||
|
||||
var type: LiveRoomChatType = .JOIN
|
||||
}
|
||||
|
||||
struct LiveRoomHeartDonationChat: LiveRoomChat {
|
||||
let nickname: String
|
||||
|
||||
var type: LiveRoomChatType = .HEART
|
||||
}
|
||||
|
|
|
@ -9,7 +9,7 @@ import SwiftUI
|
|||
|
||||
struct LiveRoomHeartDonationChatItemView: View {
|
||||
|
||||
let chatMessage: LiveRoomHeartDonationChat
|
||||
let nickname: String
|
||||
|
||||
var body: some View {
|
||||
HStack(spacing: 0) {
|
||||
|
@ -17,7 +17,7 @@ struct LiveRoomHeartDonationChatItemView: View {
|
|||
.font(.system(size: 12))
|
||||
.foregroundColor(Color.gray11)
|
||||
|
||||
Text(chatMessage.nickname)
|
||||
Text(nickname)
|
||||
.font(.system(size: 12, weight: .bold))
|
||||
.foregroundColor(Color(hex: "ec3aa6"))
|
||||
|
||||
|
@ -26,13 +26,12 @@ struct LiveRoomHeartDonationChatItemView: View {
|
|||
.foregroundColor(Color.gray11)
|
||||
}
|
||||
.padding(.vertical, 6.7)
|
||||
.frame(width: screenSize().width - 86)
|
||||
.frame(maxWidth: .infinity)
|
||||
.background(Color.white.opacity(0.7))
|
||||
.cornerRadius(4.7)
|
||||
.padding(.leading, 20)
|
||||
}
|
||||
}
|
||||
|
||||
#Preview {
|
||||
LiveRoomHeartDonationChatItemView(chatMessage: LiveRoomHeartDonationChat(nickname: "닉네임"))
|
||||
LiveRoomHeartDonationChatItemView(nickname: "닉네임")
|
||||
}
|
||||
|
|
|
@ -186,6 +186,15 @@ final class LiveRoomViewModel: NSObject, ObservableObject {
|
|||
}
|
||||
}
|
||||
|
||||
@Published var heartNickname: String? = nil {
|
||||
didSet {
|
||||
if heartNickname != nil {
|
||||
showNextHeartMessage()
|
||||
}
|
||||
}
|
||||
}
|
||||
@Published var heartNicknameList = [String]()
|
||||
|
||||
private var menuId = 0
|
||||
@Published var menu = ""
|
||||
@Published var menuList = [GetMenuPresetResponse]()
|
||||
|
@ -1881,7 +1890,7 @@ final class LiveRoomViewModel: NSObject, ObservableObject {
|
|||
completion: { [unowned self] errorCode in
|
||||
if errorCode == .errorOk {
|
||||
let (nickname, _) = self.getUserNicknameAndProfileUrl(accountId: UserDefaults.int(forKey: .userId))
|
||||
self.messages.append(LiveRoomHeartDonationChat(nickname: nickname))
|
||||
self.addHeartMessage(nickname: nickname)
|
||||
|
||||
totalHeartCount += 1
|
||||
addHeart()
|
||||
|
@ -1963,6 +1972,25 @@ final class LiveRoomViewModel: NSObject, ObservableObject {
|
|||
}
|
||||
}
|
||||
|
||||
private func addHeartMessage(nickname: String) {
|
||||
if heartNickname != nil {
|
||||
self.heartNicknameList.append(nickname)
|
||||
} else {
|
||||
self.heartNickname = nickname
|
||||
}
|
||||
}
|
||||
|
||||
private func showNextHeartMessage() {
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
|
||||
if let nextHeartNickname = self.heartNicknameList.first {
|
||||
self.heartNickname = nextHeartNickname
|
||||
self.heartNicknameList.removeFirst()
|
||||
} else {
|
||||
self.heartNickname = nil
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func startHeartTimer() {
|
||||
if heartTimer == nil {
|
||||
let timer = DispatchSource.makeTimerSource(queue: DispatchQueue.main)
|
||||
|
@ -2193,7 +2221,7 @@ extension LiveRoomViewModel: AgoraRtmChannelDelegate {
|
|||
} else if decoded.type == .EDIT_ROOM_INFO || decoded.type == .SET_MANAGER {
|
||||
self.getRoomInfo()
|
||||
} else if decoded.type == .HEART_DONATION {
|
||||
self.messages.append(LiveRoomHeartDonationChat(nickname: nickname))
|
||||
self.addHeartMessage(nickname: nickname)
|
||||
self.totalHeartCount += decoded.can
|
||||
self.addHeart()
|
||||
}
|
||||
|
|
|
@ -28,10 +28,6 @@ struct LiveRoomChatView: View {
|
|||
let chatMessage = messages[index] as! LiveRoomJoinChat
|
||||
LiveRoomJoinChatItemView(chatMessage: chatMessage)
|
||||
|
||||
case LiveRoomChatType.HEART:
|
||||
let chatMessage = messages[index] as! LiveRoomHeartDonationChat
|
||||
LiveRoomHeartDonationChatItemView(chatMessage: chatMessage)
|
||||
|
||||
default:
|
||||
let chatMessage = messages[index] as! LiveRoomNormalChat
|
||||
LiveRoomChatItemView(
|
||||
|
|
|
@ -289,6 +289,11 @@ struct LiveRoomViewV2: View {
|
|||
}
|
||||
}
|
||||
|
||||
if let heartNickname = viewModel.heartNickname {
|
||||
LiveRoomHeartDonationChatItemView(nickname: heartNickname)
|
||||
.padding(.top, 16)
|
||||
}
|
||||
|
||||
if viewModel.isShowNotice {
|
||||
VStack(alignment: .leading, spacing: 0) {
|
||||
Image("ic_notice_triangle")
|
||||
|
|
Loading…
Reference in New Issue