sodalive-ios/SodaLive/Sources/Live/Room/V2/Component/View/LiveRoomChatView.swift

68 lines
2.4 KiB
Swift

//
// LiveRoomChatView.swift
// SodaLive
//
// Created by klaus on 2024/01/17.
//
import SwiftUI
struct LiveRoomChatView: View {
let messages: [LiveRoomChat]
let getUserProfile: (Int) -> Void
var body: some View {
LazyVStack(alignment: .leading, spacing: 18) {
ForEach(0..<messages.count, id: \.self) { index in
switch (messages[index].type) {
case LiveRoomChatType.ROULETTE_DONATION:
let chatMessage = messages[index] as! LiveRoomRouletteDonationChat
LiveRoomRouletteDonationChatItemView(chatMessage: chatMessage)
case LiveRoomChatType.DONATION:
let chatMessage = messages[index] as! LiveRoomDonationChat
LiveRoomDonationChatItemView(chatMessage: chatMessage)
case LiveRoomChatType.JOIN:
let chatMessage = messages[index] as! LiveRoomJoinChat
LiveRoomJoinChatItemView(chatMessage: chatMessage)
default:
let chatMessage = messages[index] as! LiveRoomNormalChat
LiveRoomChatItemView(
chatMessage: chatMessage,
onClickProfile: {
if chatMessage.userId != UserDefaults.int(forKey: .userId) {
getUserProfile(chatMessage.userId)
}
}
)
}
}
}
}
}
struct LiveRoomChatView_Previews: PreviewProvider {
static var previews: some View {
LiveRoomChatView(
messages: [
LiveRoomRouletteDonationChat(
profileUrl: "https://cf.sodalive.net/profile/26/26-profile-ddf78b4d-0300-4c50-9c84-5d8a95fd5fe2-4892-1705256364320",
nickname: "jkljkljkl",
rouletteResult: "sdfjkldfsjkl",
type: .ROULETTE_DONATION
),
LiveRoomRouletteDonationChat(
profileUrl: "https://cf.sodalive.net/profile/26/26-profile-ddf78b4d-0300-4c50-9c84-5d8a95fd5fe2-4892-1705256364320",
nickname: "jkljkljkl",
rouletteResult: "sdfjkldfsjkl",
type: .ROULETTE_DONATION
)
],
getUserProfile: { _ in }
)
}
}