// // ContentBoxView.swift // SodaLive // // Created by klaus on 12/7/24. // import SwiftUI struct ContentBoxView: View { @StateObject var viewModel = ContentBoxViewModel() @State private var isShowDetailPlaylist = false @State private var isShowCreatePlaylist = false @State private var isReloadData = false @State private var selectedPlaylistId = 0 let initCurrentTab: ContentBoxViewModel.CurrentTab var body: some View { ZStack { NavigationView { VStack(spacing: 13.3) { DetailNavigationBar(title: "내 보관함") ScrollView(.horizontal, showsIndicators: false) { HStack(spacing: 12) { ContentBoxTabView( title: "구매목록", isSelected: viewModel.currentTab == .orderlist ) .onTapGesture { if viewModel.currentTab != .orderlist { viewModel.currentTab = .orderlist } } ContentBoxTabView( title: "재생목록", isSelected: viewModel.currentTab == .playlist ) .onTapGesture { if viewModel.currentTab != .playlist { viewModel.currentTab = .playlist } } } .padding(.horizontal, 13.3) } if viewModel.currentTab == .playlist { if isReloadData { Color.clear .onAppear { DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) { isReloadData = false } } } else { ContentPlaylistListView( onClickCreate: { isShowCreatePlaylist = true }, onClickItem: { playlistId in selectedPlaylistId = playlistId isShowDetailPlaylist = true } ) .padding(.bottom, 13.3) .padding(.horizontal, 13.3) } } else { OrderListAllInnerView() } } .onAppear { viewModel.currentTab = initCurrentTab } } if isShowCreatePlaylist { ContentPlaylistCreateView( isShowing: $isShowCreatePlaylist, reloadData: $isReloadData ) } if isShowDetailPlaylist { ContentPlaylistDetailView( playlistId: selectedPlaylistId, isShowing: $isShowDetailPlaylist, reloadData: $isReloadData ) } } } } #Preview { ContentBoxView(initCurrentTab: .orderlist) }