diff --git a/dimensionhub/Views/Detail/DetailView.swift b/dimensionhub/Views/Detail/DetailView.swift index e012024..8eaf229 100644 --- a/dimensionhub/Views/Detail/DetailView.swift +++ b/dimensionhub/Views/Detail/DetailView.swift @@ -96,7 +96,7 @@ struct DetailView: View { if detailModel.selectedEpisodes.count >= 5 { HStack(alignment: .center) { - NavigationLink(destination: ListView(id: self.id)) { + NavigationLink(destination: ListView(id: self.id, selectedChannelIdx: detailModel.selectedChannelIdx)) { Rectangle() .frame(width: 200, height: 25) .foregroundColor(Color(hex: "#F2F2F2")) diff --git a/dimensionhub/Views/List/ListModel.swift b/dimensionhub/Views/List/ListModel.swift index 5b7a0f3..18a5334 100644 --- a/dimensionhub/Views/List/ListModel.swift +++ b/dimensionhub/Views/List/ListModel.swift @@ -45,7 +45,7 @@ final class ListModel { var selectedChannelIdx: Int = 0 var selectedEpisodes: [Episode] = [] - func loadData(userId: String, id: Int) async { + func loadData(userId: String, id: Int, selectedChannelIdx: Int) async { let response = await API.getDramaDetail(userId: userId, id: id, as: DramaDetailResponse.self) switch response { case .error(let code, let message): @@ -60,8 +60,13 @@ final class ListModel { self.thumb = detail.thumb self.channels = detail.channels - self.selectedChannelIdx = 0 - self.selectedEpisodes = detail.channels[0].episodes + if self.channels.count >= selectedChannelIdx { + self.selectedChannelIdx = selectedChannelIdx + self.selectedEpisodes = detail.channels[selectedChannelIdx].episodes + } else { + self.selectedChannelIdx = 0 + self.selectedEpisodes = detail.channels[0].episodes + } } } } diff --git a/dimensionhub/Views/List/ListView.swift b/dimensionhub/Views/List/ListView.swift index a39dc57..0e36900 100644 --- a/dimensionhub/Views/List/ListView.swift +++ b/dimensionhub/Views/List/ListView.swift @@ -11,6 +11,7 @@ struct ListView: View { @State var detailModel = ListModel() let id: Int + let selectedChannelIdx: Int var body: some View { VStack(alignment: .center, spacing: 20) { @@ -49,7 +50,7 @@ struct ListView: View { } .navigationTitle(detailModel.name) .task { - await detailModel.loadData(userId: self.userId, id: self.id) + await detailModel.loadData(userId: self.userId, id: self.id, selectedChannelIdx: self.selectedChannelIdx) } } @@ -88,5 +89,5 @@ extension ListView { #Preview { - ListView(id: 19625) + ListView(id: 19625, selectedChannelIdx: 0) }