diff --git a/SodaLive/Sources/Content/Series/Main/Home/SeriesMainHomeView.swift b/SodaLive/Sources/Content/Series/Main/Home/SeriesMainHomeView.swift index 09e843f..c1c32eb 100644 --- a/SodaLive/Sources/Content/Series/Main/Home/SeriesMainHomeView.swift +++ b/SodaLive/Sources/Content/Series/Main/Home/SeriesMainHomeView.swift @@ -12,45 +12,98 @@ struct SeriesMainHomeView: View { @StateObject var viewModel = SeriesMainHomeViewModel() var body: some View { - ScrollView(.vertical, showsIndicators: false) { - VStack(spacing: 48) { - SeriesMainHomeBannerView(bannerList: viewModel.banners) - .padding(.top, 24) - - if !viewModel.completedSeriesList.isEmpty { - VStack(alignment: .leading, spacing: 16) { - HStack(spacing: 0) { - Text("완결 시리즈") - .font(.custom(Font.preBold.rawValue, size: 24)) - .foregroundColor(.white) + ZStack { + ScrollView(.vertical, showsIndicators: false) { + VStack(spacing: 48) { + if !viewModel.banners.isEmpty { + SeriesMainHomeBannerView(bannerList: viewModel.banners) + .padding(.top, 24) + } + + if !viewModel.completedSeriesList.isEmpty { + VStack(alignment: .leading, spacing: 16) { + HStack(spacing: 0) { + Text("완결 시리즈") + .font(.custom(Font.preBold.rawValue, size: 24)) + .foregroundColor(.white) + + Spacer() + + Text("전체보기") + .font(.custom(Font.preRegular.rawValue, size: 14)) + .foregroundColor(.init(hex: "78909C")) + } + .padding(.horizontal, 24) - Spacer() - - Text("전체보기") - .font(.custom(Font.preRegular.rawValue, size: 14)) - .foregroundColor(.init(hex: "78909C")) + ScrollView(.horizontal, showsIndicators: false) { + LazyHStack(spacing: 16) { + ForEach(0...self, from: responseData) + + if let data = decoded.data, decoded.success { + self.recommendSeriesList = data } else { if let message = decoded.message { self.errorMessage = message diff --git a/SodaLive/Sources/Content/Series/Main/SeriesMainApi.swift b/SodaLive/Sources/Content/Series/Main/SeriesMainApi.swift index d588b4f..bbb1c8e 100644 --- a/SodaLive/Sources/Content/Series/Main/SeriesMainApi.swift +++ b/SodaLive/Sources/Content/Series/Main/SeriesMainApi.swift @@ -10,6 +10,7 @@ import Moya enum SeriesMainApi { case fetchHome(isAdultContentVisible: Bool, contentType: ContentType) + case getRecommendSeriesList(isAdultContentVisible: Bool, contentType: ContentType) } extension SeriesMainApi: TargetType { @@ -18,6 +19,9 @@ extension SeriesMainApi: TargetType { switch self { case .fetchHome: return "/audio-content/series/main" + + case .getRecommendSeriesList: + return "/audio-content/series/main/recommend" } } @@ -29,6 +33,14 @@ extension SeriesMainApi: TargetType { "contentType": contentType, ] as [String : Any] + return .requestParameters(parameters: parameters, encoding: URLEncoding.queryString) + + case .getRecommendSeriesList(let isAdultContentVisible, let contentType): + let parameters = [ + "isAdultContentVisible": isAdultContentVisible, + "contentType": contentType, + ] as [String : Any] + return .requestParameters(parameters: parameters, encoding: URLEncoding.queryString) } } diff --git a/SodaLive/Sources/Content/Series/Main/SeriesMainRepository.swift b/SodaLive/Sources/Content/Series/Main/SeriesMainRepository.swift index 073a7da..84661ac 100644 --- a/SodaLive/Sources/Content/Series/Main/SeriesMainRepository.swift +++ b/SodaLive/Sources/Content/Series/Main/SeriesMainRepository.swift @@ -21,4 +21,13 @@ class SeriesMainRepository { ) ) } + + func getRecommendSeriesList() -> AnyPublisher { + return api.requestPublisher( + .getRecommendSeriesList( + isAdultContentVisible: UserDefaults.isAdultContentVisible(), + contentType: ContentType(rawValue: UserDefaults.string(forKey: .contentPreference)) ?? ContentType.ALL + ) + ) + } }