94 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Swift
		
	
	
	
	
	
			
		
		
	
	
			94 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Swift
		
	
	
	
	
	
//
 | 
						|
//  LiveNowAllView.swift
 | 
						|
//  SodaLive
 | 
						|
//
 | 
						|
//  Created by klaus on 2023/08/14.
 | 
						|
//
 | 
						|
 | 
						|
import SwiftUI
 | 
						|
import RefreshableScrollView
 | 
						|
 | 
						|
struct LiveNowAllView: View {
 | 
						|
    
 | 
						|
    @StateObject var viewModel = LiveViewModel()
 | 
						|
    @StateObject var liveAllViewModel = LiveAllViewModel()
 | 
						|
    
 | 
						|
    let columns = [
 | 
						|
        GridItem(.flexible(), alignment: .top),
 | 
						|
        GridItem(.flexible(), alignment: .top),
 | 
						|
        GridItem(.flexible(), alignment: .top)
 | 
						|
    ]
 | 
						|
    
 | 
						|
    let spacing: CGFloat = 13.3
 | 
						|
    
 | 
						|
    let onClickParticipant: (Int) -> Void
 | 
						|
    
 | 
						|
    var body: some View {
 | 
						|
        BaseView(isLoading: $viewModel.isLoading) {
 | 
						|
            GeometryReader { proxy in
 | 
						|
                VStack(spacing: 0) {
 | 
						|
                    DetailNavigationBar(title: "지금 라이브 중 전체보기")
 | 
						|
                    
 | 
						|
                    RefreshableScrollView(
 | 
						|
                        refreshing: $viewModel.isRefresh,
 | 
						|
                        action: {
 | 
						|
                            viewModel.page = 1
 | 
						|
                            viewModel.isLast = false
 | 
						|
                            viewModel.getLiveNowList()
 | 
						|
                        },
 | 
						|
                        content: {
 | 
						|
                            LazyVGrid(columns: columns, spacing: spacing) {
 | 
						|
                                ForEach(0..<viewModel.liveNowItems.count, id: \.self) { index in
 | 
						|
                                    let item = viewModel.liveNowItems[index]
 | 
						|
                                    
 | 
						|
                                    LiveNowAllItemView(item: item, itemWidth: (screenSize().width - (spacing * (CGFloat(columns.count + 1)))) / 3)
 | 
						|
                                        .contentShape(Rectangle())
 | 
						|
                                        .onTapGesture {
 | 
						|
                                            self.liveAllViewModel.selectedRoomId = item.roomId
 | 
						|
                                            withAnimation {
 | 
						|
                                                self.liveAllViewModel.isShowLiveDetail = true
 | 
						|
                                            }
 | 
						|
                                        }
 | 
						|
                                        .onAppear {
 | 
						|
                                            if index == viewModel.liveNowItems.count - 1 {
 | 
						|
                                                viewModel.getLiveNowList()
 | 
						|
                                            }
 | 
						|
                                        }
 | 
						|
                                }
 | 
						|
                            }
 | 
						|
                        }
 | 
						|
                    )
 | 
						|
                    
 | 
						|
                    if proxy.safeAreaInsets.bottom > 0 {
 | 
						|
                        Rectangle()
 | 
						|
                            .foregroundColor(Color.black.opacity(0))
 | 
						|
                            .frame(width: screenSize().width, height: 15.3)
 | 
						|
                    }
 | 
						|
                }
 | 
						|
                .edgesIgnoringSafeArea(.bottom)
 | 
						|
            }
 | 
						|
            
 | 
						|
            if liveAllViewModel.isShowLiveDetail {
 | 
						|
                LiveDetailView(
 | 
						|
                    roomId: liveAllViewModel.selectedRoomId,
 | 
						|
                    onClickParticipant: {
 | 
						|
                        AppState.shared.isShowPlayer = false
 | 
						|
                        onClickParticipant(liveAllViewModel.selectedRoomId)
 | 
						|
                    },
 | 
						|
                    onClickReservation: {},
 | 
						|
                    onClickStart: {},
 | 
						|
                    onClickCancel: {},
 | 
						|
                    onClickClose: {
 | 
						|
                        withAnimation {
 | 
						|
                            liveAllViewModel.isShowLiveDetail = false
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                )
 | 
						|
            }
 | 
						|
        }
 | 
						|
        .onAppear {
 | 
						|
            viewModel.getLiveNowList()
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |