parent
174416952e
commit
bfd34329d7
|
@ -108,7 +108,7 @@ enum AppStep {
|
|||
|
||||
case orderListAll
|
||||
|
||||
case newContentAll
|
||||
case newContentAll(isFree: Bool)
|
||||
|
||||
case curationAll(title: String, curationId: Int)
|
||||
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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))
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
) {
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue