102 lines
3.5 KiB
Swift
102 lines
3.5 KiB
Swift
//
|
|
// 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)
|
|
}
|