// // LiveNowItemView.swift // SodaLive // // Created by klaus on 2023/08/14. // import SwiftUI import Kingfisher struct LiveNowItemView: View { let item: GetRoomListResponse var body: some View { ZStack(alignment: .top) { HStack(spacing: 0) { if item.isPrivateRoom { Image("ic_lock") .resizable() .frame(width: 20, height: 20) } Spacer() } VStack(spacing: 0) { ZStack(alignment: .bottom) { ZStack { KFImage(URL(string: item.creatorProfileImage)) .cancelOnDisappear(true) .resizable() .frame(width: 72, height: 72) .clipShape(Circle()) } .frame(width: 84, height: 84) .overlay { Circle() .strokeBorder(lineWidth: 3) .foregroundColor(.button) } Image("img_live") .resizable() .frame(width: 50, height: 18) } Spacer() Text(item.creatorNickname) .font(.custom(Font.preRegular.rawValue, size: 16)) .foregroundColor(.white) .padding(.horizontal, 2) Text(item.title) .font(.custom(Font.preRegular.rawValue, size: 12)) .foregroundColor(Color(hex: "#B0BEC5")) .lineLimit(1) .truncationMode(.tail) .padding(.top, 4) .padding(.horizontal, 2) Spacer() if item.price > 0 { HStack(spacing: 2) { Image("ic_can_circle") .resizable() .frame(width: 16, height: 16) Text("\(item.price)") .font(.custom(Font.preRegular.rawValue, size: 14)) .foregroundColor(.white) } .padding(.vertical, 4) .frame(maxWidth: .infinity) .background(Color(hex: "3b5ff1")) .cornerRadius(999) .padding(.horizontal, 2) .padding(.bottom, 2) } else { Text("무료") .font(.custom(Font.preRegular.rawValue, size: 14)) .foregroundColor(Color(hex: "#263238")) .padding(.vertical, 4) .frame(maxWidth: .infinity) .background(Color.white) .cornerRadius(999) .padding(.horizontal, 2) .padding(.bottom, 2) } } } .padding(10) .frame(width: 144, height: 204, alignment: .top) .background(Color(hex: "263238")) .cornerRadius(16) } } struct LiveNowItemView_Previews: PreviewProvider { static var previews: some View { LiveNowItemView( item: GetRoomListResponse( roomId: 99, title: "testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttest", content: "testtest", beginDateTime: "2022.05.23 Mon 03:00 PM", numberOfParticipate: 3, numberOfPeople: 5, coverImageUrl: "https://test-cf.sodalive.net/profile/default-profile.png", isAdult: true, price: 0, tags: ["팬미팅", "힐링"], channelName: nil, creatorProfileImage: "https://test-cf.sodalive.net/profile/default-profile.png", creatorNickname: "user8", creatorId: 19, isReservation: false, isPrivateRoom: false ) ) } }