parent
174416952e
commit
bfd34329d7
|
@ -108,7 +108,7 @@ enum AppStep {
|
||||||
|
|
||||||
case orderListAll
|
case orderListAll
|
||||||
|
|
||||||
case newContentAll
|
case newContentAll(isFree: Bool)
|
||||||
|
|
||||||
case curationAll(title: String, curationId: Int)
|
case curationAll(title: String, curationId: Int)
|
||||||
|
|
||||||
|
|
|
@ -17,13 +17,15 @@ struct ContentNewAllView: View {
|
||||||
GridItem(.flexible(), alignment: .top)
|
GridItem(.flexible(), alignment: .top)
|
||||||
]
|
]
|
||||||
|
|
||||||
|
let isFree: Bool
|
||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
NavigationView {
|
NavigationView {
|
||||||
BaseView(isLoading: $viewModel.isLoading) {
|
BaseView(isLoading: $viewModel.isLoading) {
|
||||||
VStack(alignment: .leading, spacing: 13.3) {
|
VStack(alignment: .leading, spacing: 13.3) {
|
||||||
DetailNavigationBar(title: "새로운 단편")
|
DetailNavigationBar(title: isFree ? "새로운 무료 콘텐츠" : "새로운 단편")
|
||||||
|
|
||||||
Text("※ 최근 2주간 등록된 새로운 단편 입니다.")
|
Text("※ 최근 2주간 등록된 새로운 무료 콘텐츠 입니다.")
|
||||||
.font(.custom(Font.medium.rawValue, size: 14.7))
|
.font(.custom(Font.medium.rawValue, size: 14.7))
|
||||||
.foregroundColor(.graybb)
|
.foregroundColor(.graybb)
|
||||||
.padding(.horizontal, 13.3)
|
.padding(.horizontal, 13.3)
|
||||||
|
@ -72,16 +74,18 @@ struct ContentNewAllView: View {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.onAppear {
|
.onAppear {
|
||||||
|
viewModel.isFree = isFree
|
||||||
viewModel.getThemeList()
|
viewModel.getThemeList()
|
||||||
viewModel.getNewContentList()
|
viewModel.getNewContentList()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.navigationBarHidden(true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
struct ContentNewAllView_Previews: PreviewProvider {
|
struct ContentNewAllView_Previews: PreviewProvider {
|
||||||
static var previews: some View {
|
static var previews: some View {
|
||||||
ContentNewAllView()
|
ContentNewAllView(isFree: false)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,11 +33,14 @@ final class ContentNewAllViewModel: ObservableObject {
|
||||||
var isLast = false
|
var isLast = false
|
||||||
private let pageSize = 10
|
private let pageSize = 10
|
||||||
|
|
||||||
|
var isFree: Bool = false
|
||||||
|
|
||||||
func getNewContentList() {
|
func getNewContentList() {
|
||||||
if (!isLast && !isLoading) {
|
if (!isLast && !isLoading) {
|
||||||
isLoading = true
|
isLoading = true
|
||||||
|
|
||||||
repository.getNewContentAllOfTheme(
|
repository.getNewContentAllOfTheme(
|
||||||
|
isFree: isFree,
|
||||||
theme: selectedTheme == "전체" ? "" : selectedTheme,
|
theme: selectedTheme == "전체" ? "" : selectedTheme,
|
||||||
page: page,
|
page: page,
|
||||||
size: pageSize
|
size: pageSize
|
||||||
|
|
|
@ -30,7 +30,7 @@ enum ContentApi {
|
||||||
case donation(request: AudioContentDonationRequest)
|
case donation(request: AudioContentDonationRequest)
|
||||||
case modifyComment(request: ModifyCommentRequest)
|
case modifyComment(request: ModifyCommentRequest)
|
||||||
case getNewContentThemeList
|
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 getAudioContentListByCurationId(curationId: Int, isAdultContentVisible: Bool, contentType: ContentType, page: Int, size: Int, sort: ContentCurationViewModel.Sort)
|
||||||
case getContentRanking(page: Int, size: Int, sortType: String)
|
case getContentRanking(page: Int, size: Int, sortType: String)
|
||||||
case getContentRankingSortType
|
case getContentRankingSortType
|
||||||
|
@ -336,8 +336,9 @@ extension ContentApi: TargetType {
|
||||||
case .getNewContentThemeList:
|
case .getNewContentThemeList:
|
||||||
return .requestPlain
|
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 = [
|
let parameters = [
|
||||||
|
"isFree": isFree,
|
||||||
"theme": theme,
|
"theme": theme,
|
||||||
"isAdultContentVisible": isAdultContentVisible,
|
"isAdultContentVisible": isAdultContentVisible,
|
||||||
"contentType": contentType,
|
"contentType": contentType,
|
||||||
|
|
|
@ -112,9 +112,10 @@ final class ContentRepository {
|
||||||
return api.requestPublisher(.getNewContentThemeList)
|
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(
|
return api.requestPublisher(
|
||||||
.getNewContentAllOfTheme(
|
.getNewContentAllOfTheme(
|
||||||
|
isFree: isFree,
|
||||||
theme: theme,
|
theme: theme,
|
||||||
isAdultContentVisible: UserDefaults.isAdultContentVisible(),
|
isAdultContentVisible: UserDefaults.isAdultContentVisible(),
|
||||||
contentType: ContentType(rawValue: UserDefaults.string(forKey: .contentPreference)) ?? ContentType.ALL,
|
contentType: ContentType(rawValue: UserDefaults.string(forKey: .contentPreference)) ?? ContentType.ALL,
|
||||||
|
|
|
@ -24,7 +24,7 @@ struct ContentMainNewContentView: View {
|
||||||
.resizable()
|
.resizable()
|
||||||
.frame(width: 20, height: 20)
|
.frame(width: 20, height: 20)
|
||||||
.onTapGesture {
|
.onTapGesture {
|
||||||
AppState.shared.setAppStep(step: .newContentAll)
|
AppState.shared.setAppStep(step: .newContentAll(isFree: false))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,7 @@ struct ContentMainTabContentView: View {
|
||||||
title: "새로운 단편",
|
title: "새로운 단편",
|
||||||
onClickMore: {
|
onClickMore: {
|
||||||
AppState.shared
|
AppState.shared
|
||||||
.setAppStep(step: .newContentAll)
|
.setAppStep(step: .newContentAll(isFree: false))
|
||||||
},
|
},
|
||||||
themeList: viewModel.contentThemeList,
|
themeList: viewModel.contentThemeList,
|
||||||
contentList: viewModel.newContentList
|
contentList: viewModel.newContentList
|
||||||
|
|
|
@ -44,7 +44,10 @@ struct ContentMainTabFreeView: View {
|
||||||
if !viewModel.themeList.isEmpty {
|
if !viewModel.themeList.isEmpty {
|
||||||
ContentMainNewContentViewV2(
|
ContentMainNewContentViewV2(
|
||||||
title: "새로운 무료 콘텐츠",
|
title: "새로운 무료 콘텐츠",
|
||||||
onClickMore: {},
|
onClickMore: {
|
||||||
|
AppState.shared
|
||||||
|
.setAppStep(step: .newContentAll(isFree: true))
|
||||||
|
},
|
||||||
themeList: viewModel.themeList,
|
themeList: viewModel.themeList,
|
||||||
contentList: viewModel.newFreeContentList
|
contentList: viewModel.newFreeContentList
|
||||||
) {
|
) {
|
||||||
|
|
|
@ -161,8 +161,8 @@ struct ContentView: View {
|
||||||
case .userProfileFanTalkAll(let userId):
|
case .userProfileFanTalkAll(let userId):
|
||||||
UserProfileFanTalkAllView(userId: userId)
|
UserProfileFanTalkAllView(userId: userId)
|
||||||
|
|
||||||
case .newContentAll:
|
case .newContentAll(let isFree):
|
||||||
ContentNewAllView()
|
ContentNewAllView(isFree: isFree)
|
||||||
|
|
||||||
case .curationAll(let title, let curationId):
|
case .curationAll(let title, let curationId):
|
||||||
ContentCurationView(title: title, curationId: curationId)
|
ContentCurationView(title: title, curationId: curationId)
|
||||||
|
|
Loading…
Reference in New Issue