콘텐츠 메인 무료 탭

- 새로운 무료 콘텐츠 전체보기
This commit is contained in:
Yu Sung 2025-02-22 10:45:09 +09:00
parent 174416952e
commit bfd34329d7
9 changed files with 24 additions and 12 deletions

View File

@ -108,7 +108,7 @@ enum AppStep {
case orderListAll
case newContentAll
case newContentAll(isFree: Bool)
case curationAll(title: String, curationId: Int)

View File

@ -17,13 +17,15 @@ struct ContentNewAllView: View {
GridItem(.flexible(), alignment: .top)
]
let isFree: Bool
var body: some View {
NavigationView {
BaseView(isLoading: $viewModel.isLoading) {
VStack(alignment: .leading, spacing: 13.3) {
DetailNavigationBar(title: "새로운 단편")
DetailNavigationBar(title: isFree ? "새로운 무료 콘텐츠" : "새로운 단편")
Text("※ 최근 2주간 등록된 새로운 단편 입니다.")
Text("※ 최근 2주간 등록된 새로운 무료 콘텐츠 입니다.")
.font(.custom(Font.medium.rawValue, size: 14.7))
.foregroundColor(.graybb)
.padding(.horizontal, 13.3)
@ -72,16 +74,18 @@ struct ContentNewAllView: View {
}
}
.onAppear {
viewModel.isFree = isFree
viewModel.getThemeList()
viewModel.getNewContentList()
}
}
.navigationBarHidden(true)
}
}
}
struct ContentNewAllView_Previews: PreviewProvider {
static var previews: some View {
ContentNewAllView()
ContentNewAllView(isFree: false)
}
}

View File

@ -33,11 +33,14 @@ final class ContentNewAllViewModel: ObservableObject {
var isLast = false
private let pageSize = 10
var isFree: Bool = false
func getNewContentList() {
if (!isLast && !isLoading) {
isLoading = true
repository.getNewContentAllOfTheme(
isFree: isFree,
theme: selectedTheme == "전체" ? "" : selectedTheme,
page: page,
size: pageSize

View File

@ -30,7 +30,7 @@ enum ContentApi {
case donation(request: AudioContentDonationRequest)
case modifyComment(request: ModifyCommentRequest)
case getNewContentThemeList
case getNewContentAllOfTheme(theme: String, isAdultContentVisible: Bool, contentType: ContentType, page: Int, size: Int)
case getNewContentAllOfTheme(isFree: Bool, theme: String, isAdultContentVisible: Bool, contentType: ContentType, page: Int, size: Int)
case getAudioContentListByCurationId(curationId: Int, isAdultContentVisible: Bool, contentType: ContentType, page: Int, size: Int, sort: ContentCurationViewModel.Sort)
case getContentRanking(page: Int, size: Int, sortType: String)
case getContentRankingSortType
@ -336,8 +336,9 @@ extension ContentApi: TargetType {
case .getNewContentThemeList:
return .requestPlain
case .getNewContentAllOfTheme(let theme, let isAdultContentVisible, let contentType, let page, let size):
case .getNewContentAllOfTheme(let isFree, let theme, let isAdultContentVisible, let contentType, let page, let size):
let parameters = [
"isFree": isFree,
"theme": theme,
"isAdultContentVisible": isAdultContentVisible,
"contentType": contentType,

View File

@ -112,9 +112,10 @@ final class ContentRepository {
return api.requestPublisher(.getNewContentThemeList)
}
func getNewContentAllOfTheme(theme: String, page: Int, size: Int) -> AnyPublisher<Response, MoyaError> {
func getNewContentAllOfTheme(isFree: Bool, theme: String, page: Int, size: Int) -> AnyPublisher<Response, MoyaError> {
return api.requestPublisher(
.getNewContentAllOfTheme(
isFree: isFree,
theme: theme,
isAdultContentVisible: UserDefaults.isAdultContentVisible(),
contentType: ContentType(rawValue: UserDefaults.string(forKey: .contentPreference)) ?? ContentType.ALL,

View File

@ -24,7 +24,7 @@ struct ContentMainNewContentView: View {
.resizable()
.frame(width: 20, height: 20)
.onTapGesture {
AppState.shared.setAppStep(step: .newContentAll)
AppState.shared.setAppStep(step: .newContentAll(isFree: false))
}
}

View File

@ -25,7 +25,7 @@ struct ContentMainTabContentView: View {
title: "새로운 단편",
onClickMore: {
AppState.shared
.setAppStep(step: .newContentAll)
.setAppStep(step: .newContentAll(isFree: false))
},
themeList: viewModel.contentThemeList,
contentList: viewModel.newContentList

View File

@ -44,7 +44,10 @@ struct ContentMainTabFreeView: View {
if !viewModel.themeList.isEmpty {
ContentMainNewContentViewV2(
title: "새로운 무료 콘텐츠",
onClickMore: {},
onClickMore: {
AppState.shared
.setAppStep(step: .newContentAll(isFree: true))
},
themeList: viewModel.themeList,
contentList: viewModel.newFreeContentList
) {

View File

@ -161,8 +161,8 @@ struct ContentView: View {
case .userProfileFanTalkAll(let userId):
UserProfileFanTalkAllView(userId: userId)
case .newContentAll:
ContentNewAllView()
case .newContentAll(let isFree):
ContentNewAllView(isFree: isFree)
case .curationAll(let title, let curationId):
ContentCurationView(title: title, curationId: curationId)