feat(series-all-by-genre): 시리즈 전체보기 장르별 탭 - 장르, 시리즈 UI 추가

This commit is contained in:
Yu Sung
2025-11-15 06:03:54 +09:00
parent cb1b26c548
commit 54a5c99666
3 changed files with 107 additions and 5 deletions

View File

@@ -19,14 +19,16 @@ final class SeriesMainByGenreViewModel: ObservableObject {
@Published var genreList: [GetSeriesGenreListResponse] = []
@Published var seriesList: [SeriesListItem] = []
@Published var selectedGenre: GetSeriesGenreListResponse = GetSeriesGenreListResponse(id: 0, genre: "")
private var page = 1
private var isLast = false
private let pageSize = 20
func onTapGenre(genreId: Int) {
func onTapGenre() {
page = 1
isLast = false
getSeriesListByGenre(genreId: genreId)
getSeriesListByGenre()
}
func getGenreList() {
@@ -54,7 +56,8 @@ final class SeriesMainByGenreViewModel: ObservableObject {
if let data = decoded.data, decoded.success {
self.genreList = data
self.getSeriesListByGenre(genreId: genreList[0].id)
self.selectedGenre = data[0]
self.getSeriesListByGenre()
} else {
if let message = decoded.message {
self.errorMessage = message
@@ -72,11 +75,11 @@ final class SeriesMainByGenreViewModel: ObservableObject {
.store(in: &subscription)
}
func getSeriesListByGenre(genreId: Int) {
func getSeriesListByGenre() {
if !isLast && !isLoading {
isLoading = true
repository.getSeriesListByGenre(genreId: genreId, page: page, size: pageSize)
repository.getSeriesListByGenre(genreId: selectedGenre.id, page: page, size: pageSize)
.sink { result in
switch result {
case .finished: