121 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			Swift
		
	
	
	
	
	
			
		
		
	
	
			121 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			Swift
		
	
	
	
	
	
//
 | 
						|
//  ContentDetailInfoLimitedEditionView.swift
 | 
						|
//  SodaLive
 | 
						|
//
 | 
						|
//  Created by klaus on 3/27/24.
 | 
						|
//
 | 
						|
 | 
						|
import SwiftUI
 | 
						|
import Kingfisher
 | 
						|
 | 
						|
struct ContentDetailInfoLimitedEditionView: View {
 | 
						|
    
 | 
						|
    let totalContentCount: Int
 | 
						|
    let remainingContentCount: Int
 | 
						|
    let orderSequence: Int?
 | 
						|
    let buyerList: [ContentBuyer]
 | 
						|
    
 | 
						|
    var body: some View {
 | 
						|
        VStack(alignment: .leading, spacing: 13.3) {
 | 
						|
            HStack(spacing: 0) {
 | 
						|
                Text("한정판")
 | 
						|
                    .font(.custom(Font.medium.rawValue, size: 13.3))
 | 
						|
                    .foregroundColor(Color.button)
 | 
						|
                
 | 
						|
                Spacer()
 | 
						|
                
 | 
						|
                if let orderSequence = orderSequence {
 | 
						|
                    Text("\(orderSequence)")
 | 
						|
                        .font(.custom(Font.bold.rawValue, size: 13.3))
 | 
						|
                        .foregroundColor(Color.button)
 | 
						|
                        .padding(.leading, 5.3)
 | 
						|
                    
 | 
						|
                    Text("/")
 | 
						|
                        .font(.custom(Font.bold.rawValue, size: 13.3))
 | 
						|
                        .foregroundColor(Color.grayd2)
 | 
						|
                        .padding(.leading, 2.3)
 | 
						|
                    
 | 
						|
                    Text("\(totalContentCount)")
 | 
						|
                        .font(.custom(Font.medium.rawValue, size: 13.3))
 | 
						|
                        .foregroundColor(Color.grayd2)
 | 
						|
                        .padding(.leading, 2.3)
 | 
						|
                } else if (remainingContentCount <= 0) {
 | 
						|
                    Text("Sold Out")
 | 
						|
                        .font(.custom(Font.medium.rawValue, size: 12))
 | 
						|
                        .foregroundColor(Color.grayd2)
 | 
						|
                        .padding(.horizontal, 5.3)
 | 
						|
                        .padding(.vertical, 3.3)
 | 
						|
                        .overlay(
 | 
						|
                            RoundedRectangle(cornerRadius: 2.6)
 | 
						|
                                .stroke(lineWidth: 1)
 | 
						|
                                .foregroundColor(Color.grayd2)
 | 
						|
                        )
 | 
						|
                } else {
 | 
						|
                    Text("잔여수량")
 | 
						|
                        .font(.custom(Font.medium.rawValue, size: 13.3))
 | 
						|
                        .foregroundColor(Color.grayd2)
 | 
						|
                    
 | 
						|
                    Text("\(remainingContentCount)")
 | 
						|
                        .font(.custom(Font.bold.rawValue, size: 13.3))
 | 
						|
                        .foregroundColor(Color.button)
 | 
						|
                        .padding(.leading, 5.3)
 | 
						|
                }
 | 
						|
                
 | 
						|
            }
 | 
						|
            .padding(.vertical, 8)
 | 
						|
            .padding(.horizontal, 10.3)
 | 
						|
            .background(Color(hex: "14262d"))
 | 
						|
            .cornerRadius(5.3)
 | 
						|
            .padding(.top, 13.3)
 | 
						|
            
 | 
						|
            if !buyerList.isEmpty {
 | 
						|
                Text("구매자")
 | 
						|
                    .font(.custom(Font.bold.rawValue, size: 18.3))
 | 
						|
                    .foregroundColor(Color.grayee)
 | 
						|
                
 | 
						|
                ScrollView(.horizontal, showsIndicators: false) {
 | 
						|
                    HStack(alignment: .top, spacing: 13.3) {
 | 
						|
                        ForEach(0..<buyerList.count, id: \.self) {
 | 
						|
                            let buyer = buyerList[$0]
 | 
						|
                            
 | 
						|
                            VStack(spacing: 6.7) {
 | 
						|
                                KFImage(URL(string: buyer.profileImageUrl))
 | 
						|
                                    .cancelOnDisappear(true)
 | 
						|
                                    .resizable()
 | 
						|
                                    .scaledToFill()
 | 
						|
                                    .frame(width: 46.7, height: 46.7, alignment: .top)
 | 
						|
                                    .clipShape(Circle())
 | 
						|
                                
 | 
						|
                                Text(buyer.nickname)
 | 
						|
                                    .font(.custom(Font.medium.rawValue, size: 12))
 | 
						|
                                    .foregroundColor(Color.graybb)
 | 
						|
                                    .lineLimit(1)
 | 
						|
                            }
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
#Preview {
 | 
						|
    ContentDetailInfoLimitedEditionView(
 | 
						|
        totalContentCount: 10,
 | 
						|
        remainingContentCount: 0,
 | 
						|
        orderSequence: nil,
 | 
						|
        buyerList: [
 | 
						|
            ContentBuyer(nickname: "user1", profileImageUrl: "https://test-cf.sodalive.net/profile/default-profile.png"),
 | 
						|
            ContentBuyer(nickname: "user2", profileImageUrl: "https://test-cf.sodalive.net/profile/default-profile.png"),
 | 
						|
            ContentBuyer(nickname: "user3", profileImageUrl: "https://test-cf.sodalive.net/profile/default-profile.png"),
 | 
						|
            ContentBuyer(nickname: "user4", profileImageUrl: "https://test-cf.sodalive.net/profile/default-profile.png"),
 | 
						|
            ContentBuyer(nickname: "user5", profileImageUrl: "https://test-cf.sodalive.net/profile/default-profile.png"),
 | 
						|
            ContentBuyer(nickname: "user6", profileImageUrl: "https://test-cf.sodalive.net/profile/default-profile.png"),
 | 
						|
            ContentBuyer(nickname: "user7", profileImageUrl: "https://test-cf.sodalive.net/profile/default-profile.png"),
 | 
						|
            ContentBuyer(nickname: "user8", profileImageUrl: "https://test-cf.sodalive.net/profile/default-profile.png"),
 | 
						|
            ContentBuyer(nickname: "user9", profileImageUrl: "https://test-cf.sodalive.net/profile/default-profile.png"),
 | 
						|
            ContentBuyer(nickname: "user10", profileImageUrl: "https://test-cf.sodalive.net/profile/default-profile.png"),
 | 
						|
        ]
 | 
						|
    )
 | 
						|
}
 |