feat: 메인 라이브
- 라이브 다시 듣기 UI 추가
This commit is contained in:
		@@ -46,11 +46,11 @@ struct DayOfWeekSeriesView: View {
 | 
			
		||||
        VStack(alignment: .leading, spacing: 16) {
 | 
			
		||||
            HStack(spacing: 0) {
 | 
			
		||||
                Text("요일별")
 | 
			
		||||
                    .font(.custom(Font.preBold.rawValue, size: 26))
 | 
			
		||||
                    .font(.custom(Font.preBold.rawValue, size: 24))
 | 
			
		||||
                    .foregroundColor(.button)
 | 
			
		||||
                
 | 
			
		||||
                Text(" 시리즈")
 | 
			
		||||
                    .font(.custom(Font.preBold.rawValue, size: 26))
 | 
			
		||||
                    .font(.custom(Font.preBold.rawValue, size: 24))
 | 
			
		||||
                    .foregroundColor(.white)
 | 
			
		||||
            }
 | 
			
		||||
            .padding(.horizontal, 24)
 | 
			
		||||
 
 | 
			
		||||
@@ -24,11 +24,11 @@ struct HomeLatestContentView: View {
 | 
			
		||||
    var body: some View {
 | 
			
		||||
        HStack(spacing: 0) {
 | 
			
		||||
            Text("최신")
 | 
			
		||||
                .font(.custom(Font.preBold.rawValue, size: 26))
 | 
			
		||||
                .font(.custom(Font.preBold.rawValue, size: 24))
 | 
			
		||||
                .foregroundColor(.button)
 | 
			
		||||
            
 | 
			
		||||
            Text(" 콘텐츠")
 | 
			
		||||
                .font(.custom(Font.preBold.rawValue, size: 26))
 | 
			
		||||
                .font(.custom(Font.preBold.rawValue, size: 24))
 | 
			
		||||
                .foregroundColor(.white)
 | 
			
		||||
            
 | 
			
		||||
            Spacer()
 | 
			
		||||
 
 | 
			
		||||
@@ -23,11 +23,11 @@ struct HomeWeeklyChartView: View {
 | 
			
		||||
        VStack(spacing: 16) {
 | 
			
		||||
            HStack(spacing: 0) {
 | 
			
		||||
                Text("보온")
 | 
			
		||||
                    .font(.custom(Font.preBold.rawValue, size: 26))
 | 
			
		||||
                    .font(.custom(Font.preBold.rawValue, size: 24))
 | 
			
		||||
                    .foregroundColor(.button)
 | 
			
		||||
                
 | 
			
		||||
                Text(" 주간 차트")
 | 
			
		||||
                    .font(.custom(Font.preBold.rawValue, size: 26))
 | 
			
		||||
                    .font(.custom(Font.preBold.rawValue, size: 24))
 | 
			
		||||
                    .foregroundColor(.white)
 | 
			
		||||
                
 | 
			
		||||
                Spacer()
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										67
									
								
								SodaLive/Sources/Live/LiveReplayListView.swift
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								SodaLive/Sources/Live/LiveReplayListView.swift
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,67 @@
 | 
			
		||||
//
 | 
			
		||||
//  LiveReplayListView.swift
 | 
			
		||||
//  SodaLive
 | 
			
		||||
//
 | 
			
		||||
//  Created by klaus on 7/22/25.
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
import SwiftUI
 | 
			
		||||
 | 
			
		||||
struct LiveReplayListView: View {
 | 
			
		||||
    
 | 
			
		||||
    let contentList: [AudioContentMainItem]
 | 
			
		||||
    
 | 
			
		||||
    let rows = [
 | 
			
		||||
        GridItem(.flexible(), alignment: .leading),
 | 
			
		||||
        GridItem(.flexible(), alignment: .leading)
 | 
			
		||||
    ]
 | 
			
		||||
    
 | 
			
		||||
    var body: some View {
 | 
			
		||||
        VStack(spacing: 14) {
 | 
			
		||||
            HStack(spacing: 0) {
 | 
			
		||||
                Text("라이브")
 | 
			
		||||
                    .font(.custom(Font.preBold.rawValue, size: 24))
 | 
			
		||||
                    .foregroundColor(.button)
 | 
			
		||||
                
 | 
			
		||||
                Text(" 다시 듣기")
 | 
			
		||||
                    .font(.custom(Font.preBold.rawValue, size: 24))
 | 
			
		||||
                    .foregroundColor(.white)
 | 
			
		||||
                
 | 
			
		||||
                Spacer()
 | 
			
		||||
            }
 | 
			
		||||
            .padding(.horizontal, 24)
 | 
			
		||||
            
 | 
			
		||||
            ScrollView(.horizontal, showsIndicators: false) {
 | 
			
		||||
                LazyHGrid(rows: rows, spacing: 16) {
 | 
			
		||||
                    ForEach(0..<contentList.count, id: \.self) { index in
 | 
			
		||||
                        ContentItemView(item: contentList[index])
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
                .padding(.horizontal, 24)
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#Preview {
 | 
			
		||||
    LiveReplayListView(
 | 
			
		||||
        contentList: [
 | 
			
		||||
            AudioContentMainItem(
 | 
			
		||||
                contentId: 1,
 | 
			
		||||
                creatorId: 3,
 | 
			
		||||
                title: "ㅓ처랴햐햫햐햐",
 | 
			
		||||
                coverImageUrl: "https://test-cf.sodalive.net/profile/default-profile.png",
 | 
			
		||||
                creatorNickname: "유저1",
 | 
			
		||||
                isPointAvailable: true
 | 
			
		||||
            ),
 | 
			
		||||
            AudioContentMainItem(
 | 
			
		||||
                contentId: 2,
 | 
			
		||||
                creatorId: 8,
 | 
			
		||||
                title: "ㅓ처랴햐햫햐햐",
 | 
			
		||||
                coverImageUrl: "https://test-cf.sodalive.net/profile/default-profile.png",
 | 
			
		||||
                creatorNickname: "유저2",
 | 
			
		||||
                isPointAvailable: false
 | 
			
		||||
            )
 | 
			
		||||
        ]
 | 
			
		||||
    )
 | 
			
		||||
}
 | 
			
		||||
@@ -85,6 +85,10 @@ struct LiveView: View {
 | 
			
		||||
                                SectionRecommendLiveView(items: viewModel.recommendLiveItems)
 | 
			
		||||
                            }
 | 
			
		||||
                            
 | 
			
		||||
                            if viewModel.replayLiveItems.count > 0 {
 | 
			
		||||
                                LiveReplayListView(contentList: viewModel.replayLiveItems)
 | 
			
		||||
                            }
 | 
			
		||||
                            
 | 
			
		||||
                            SectionLiveReservationView(
 | 
			
		||||
                                items: viewModel.liveReservationItems,
 | 
			
		||||
                                onClickCancel: { viewModel.getLiveMain() },
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user