feat(series-all): 오직 보이스온에서만(오리지널 시리즈) 전체보기 추가

This commit is contained in:
Yu Sung
2025-11-14 18:07:22 +09:00
parent ed48efd58d
commit be40fbc226
5 changed files with 25 additions and 8 deletions

View File

@@ -9,7 +9,7 @@ import Foundation
import Moya import Moya
enum SeriesApi { enum SeriesApi {
case getSeriesList(creatorId: Int, sortType: SeriesListAllViewModel.SeriesSortType, isAdultContentVisible: Bool, contentType: ContentType, page: Int, size: Int) case getSeriesList(creatorId: Int?, isOriginal: Bool, sortType: SeriesListAllViewModel.SeriesSortType, isAdultContentVisible: Bool, contentType: ContentType, page: Int, size: Int)
case getSeriesDetail(seriesId: Int, isAdultContentVisible: Bool) case getSeriesDetail(seriesId: Int, isAdultContentVisible: Bool)
case getSeriesContentList(seriesId: Int, isAdultContentVisible: Bool, page: Int, size: Int, sortType: SeriesListAllViewModel.SeriesSortType) case getSeriesContentList(seriesId: Int, isAdultContentVisible: Bool, page: Int, size: Int, sortType: SeriesListAllViewModel.SeriesSortType)
case getRecommendSeriesList(isAdultContentVisible: Bool, contentType: ContentType) case getRecommendSeriesList(isAdultContentVisible: Bool, contentType: ContentType)
@@ -45,16 +45,20 @@ extension SeriesApi: TargetType {
var task: Moya.Task { var task: Moya.Task {
switch self { switch self {
case .getSeriesList(let creatorId, let sortType, let isAdultContentVisible, let contentType, let page, let size): case .getSeriesList(let creatorId, let isOriginal, let sortType, let isAdultContentVisible, let contentType, let page, let size):
let parameters = [ var parameters = [
"creatorId": creatorId,
"sortType": sortType, "sortType": sortType,
"isAdultContentVisible": isAdultContentVisible, "isAdultContentVisible": isAdultContentVisible,
"contentType": contentType, "contentType": contentType,
"isOriginal": isOriginal,
"page": page - 1, "page": page - 1,
"size": size "size": size
] as [String : Any] ] as [String : Any]
if let creatorId = creatorId {
parameters["creatorId"] = creatorId
}
return .requestParameters(parameters: parameters, encoding: URLEncoding.queryString) return .requestParameters(parameters: parameters, encoding: URLEncoding.queryString)
case .getSeriesDetail(_, let isAdultContentVisible): case .getSeriesDetail(_, let isAdultContentVisible):

View File

@@ -64,7 +64,8 @@ struct SeriesListAllView: View {
} }
} }
.onAppear { .onAppear {
viewModel.creatorId = creatorId ?? 0 viewModel.creatorId = creatorId
viewModel.isOriginal = isOriginal
viewModel.getSeriesList() viewModel.getSeriesList()
} }
} }

View File

@@ -16,7 +16,8 @@ final class SeriesListAllViewModel: ObservableObject {
case NEWEST, OLDEST case NEWEST, OLDEST
} }
var creatorId: Int = 0 var creatorId: Int? = nil
var isOriginal: Bool = false
@Published var isLoading = false @Published var isLoading = false
@Published var errorMessage = "" @Published var errorMessage = ""
@@ -31,7 +32,7 @@ final class SeriesListAllViewModel: ObservableObject {
if !isLoading && !isLast { if !isLoading && !isLast {
isLoading = true isLoading = true
repository repository
.getSeriesList(creatorId: creatorId, sortType: .NEWEST, page: page, size: pageSize) .getSeriesList(creatorId: creatorId, isOriginal: isOriginal, sortType: .NEWEST, page: page, size: pageSize)
.sink { result in .sink { result in
switch result { switch result {
case .finished: case .finished:

View File

@@ -13,10 +13,11 @@ import Moya
class SeriesRepository { class SeriesRepository {
private let api = MoyaProvider<SeriesApi>() private let api = MoyaProvider<SeriesApi>()
func getSeriesList(creatorId: Int, sortType: SeriesListAllViewModel.SeriesSortType, page: Int, size: Int) -> AnyPublisher<Response, MoyaError> { func getSeriesList(creatorId: Int?, isOriginal: Bool, sortType: SeriesListAllViewModel.SeriesSortType, page: Int, size: Int) -> AnyPublisher<Response, MoyaError> {
return api.requestPublisher( return api.requestPublisher(
.getSeriesList( .getSeriesList(
creatorId: creatorId, creatorId: creatorId,
isOriginal: isOriginal,
sortType: sortType, sortType: sortType,
isAdultContentVisible: UserDefaults.isAdultContentVisible(), isAdultContentVisible: UserDefaults.isAdultContentVisible(),
contentType: ContentType(rawValue: UserDefaults.string(forKey: .contentPreference)) ?? ContentType.ALL, contentType: ContentType(rawValue: UserDefaults.string(forKey: .contentPreference)) ?? ContentType.ALL,

View File

@@ -201,6 +201,16 @@ struct HomeTabView: View {
Text(" 보이스온에서만") Text(" 보이스온에서만")
.font(.custom(Font.preBold.rawValue, size: 24)) .font(.custom(Font.preBold.rawValue, size: 24))
.foregroundColor(.white) .foregroundColor(.white)
Spacer()
Text("전체보기")
.font(.custom(Font.preRegular.rawValue, size: 14))
.foregroundColor(.init(hex: "78909C"))
.onTapGesture {
AppState.shared
.setAppStep(step: .seriesAll(isOriginal: true))
}
} }
.padding(.horizontal, 24) .padding(.horizontal, 24)