콘텐츠

- 남성향, 여성향 콘텐츠 설정 적용
- 19금 콘텐츠 보기 여부 설정 적용
This commit is contained in:
klaus 2025-03-18 16:43:04 +09:00
parent b08eb896a7
commit e1950eba2b
11 changed files with 169 additions and 17 deletions

View File

@ -194,6 +194,8 @@ interface AudioContentApi {
@GET("/audio-content/main/theme")
fun getNewContentThemeList(
@Query("isAdultContentVisible") isAdultContentVisible: Boolean,
@Query("contentType") contentType: ContentType,
@Header("Authorization") authHeader: String
): Single<ApiResponse<List<String>>>
@ -249,22 +251,30 @@ interface AudioContentApi {
@GET("/v2/audio-content/main/home")
fun getContentMainHome(
@Query("isAdultContentVisible") isAdultContentVisible: Boolean,
@Query("contentType") contentType: ContentType,
@Header("Authorization") authHeader: String
): Single<ApiResponse<GetContentMainTabHomeResponse>>
@GET("/v2/audio-content/main/home/popular-content-by-creator")
fun getPopularContentByCreator(
@Query("creatorId") creatorId: Long,
@Query("isAdultContentVisible") isAdultContentVisible: Boolean,
@Query("contentType") contentType: ContentType,
@Header("Authorization") authHeader: String
): Single<ApiResponse<List<GetAudioContentRankingItem>>>
@GET("/v2/audio-content/main/series")
fun getContentMainSeries(
@Query("isAdultContentVisible") isAdultContentVisible: Boolean,
@Query("contentType") contentType: ContentType,
@Header("Authorization") authHeader: String
): Single<ApiResponse<GetContentMainTabSeriesResponse>>
@GET("/v2/audio-content/main/series/original")
fun getOriginalAudioDramaList(
@Query("isAdultContentVisible") isAdultContentVisible: Boolean,
@Query("contentType") contentType: ContentType,
@Query("page") page: Int,
@Query("size") size: Int,
@Header("Authorization") authHeader: String
@ -273,17 +283,23 @@ interface AudioContentApi {
@GET("/v2/audio-content/main/series/recommend-by-genre")
fun getRecommendSeriesListByGenre(
@Query("genreId") genreId: Long,
@Query("isAdultContentVisible") isAdultContentVisible: Boolean,
@Query("contentType") contentType: ContentType,
@Header("Authorization") authHeader: String
): Single<ApiResponse<List<GetSeriesListResponse.SeriesListItem>>>
@GET("/v2/audio-content/main/series/recommend-series-by-creator")
fun getRecommendSeriesByCreator(
@Query("creatorId") creatorId: Long,
@Query("isAdultContentVisible") isAdultContentVisible: Boolean,
@Query("contentType") contentType: ContentType,
@Header("Authorization") authHeader: String
): Single<ApiResponse<List<GetSeriesListResponse.SeriesListItem>>>
@GET("/v2/audio-content/main/series/completed-rank")
fun getCompletedSeries(
@Query("isAdultContentVisible") isAdultContentVisible: Boolean,
@Query("contentType") contentType: ContentType,
@Query("page") page: Int,
@Query("size") size: Int,
@Header("Authorization") authHeader: String
@ -291,6 +307,8 @@ interface AudioContentApi {
@GET("/v2/audio-content/main/content")
fun getContentMainContent(
@Query("isAdultContentVisible") isAdultContentVisible: Boolean,
@Query("contentType") contentType: ContentType,
@Header("Authorization") authHeader: String
): Single<ApiResponse<GetContentMainTabContentResponse>>
@ -305,23 +323,31 @@ interface AudioContentApi {
@GET("/v2/audio-content/main/content/ranking")
fun getDailyContentRanking(
@Query("sort-type") sortType: String,
@Query("isAdultContentVisible") isAdultContentVisible: Boolean,
@Query("contentType") contentType: ContentType,
@Header("Authorization") authHeader: String
): Single<ApiResponse<List<GetAudioContentRankingItem>>>
@GET("/v2/audio-content/main/content/popular-content-by-creator")
fun getContentMainContentPopularContentByCreator(
@Query("creatorId") creatorId: Long,
@Query("isAdultContentVisible") isAdultContentVisible: Boolean,
@Query("contentType") contentType: ContentType,
@Header("Authorization") authHeader: String
): Single<ApiResponse<List<GetAudioContentRankingItem>>>
@GET("/v2/audio-content/main/alarm")
fun getContentMainAlarm(
@Query("isAdultContentVisible") isAdultContentVisible: Boolean,
@Query("contentType") contentType: ContentType,
@Header("Authorization") authHeader: String
): Single<ApiResponse<GetContentMainTabAlarmResponse>>
@GET("/v2/audio-content/main/alarm/all")
fun getContentMainAlarmAll(
@Query("theme") theme: String,
@Query("isAdultContentVisible") isAdultContentVisible: Boolean,
@Query("contentType") contentType: ContentType,
@Query("page") page: Int,
@Query("size") size: Int,
@Header("Authorization") authHeader: String
@ -329,33 +355,45 @@ interface AudioContentApi {
@GET("/v2/audio-content/main/asmr")
fun getContentMainAsmr(
@Query("isAdultContentVisible") isAdultContentVisible: Boolean,
@Query("contentType") contentType: ContentType,
@Header("Authorization") authHeader: String
): Single<ApiResponse<GetContentMainTabAsmrResponse>>
@GET("/v2/audio-content/main/asmr/popular-content-by-creator")
fun getPopularAsmrContentByCreator(
@Query("creatorId") creatorId: Long,
@Query("isAdultContentVisible") isAdultContentVisible: Boolean,
@Query("contentType") contentType: ContentType,
@Header("Authorization") authHeader: String
): Single<ApiResponse<List<GetAudioContentRankingItem>>>
@GET("/v2/audio-content/main/replay")
fun getContentMainReplay(
@Query("isAdultContentVisible") isAdultContentVisible: Boolean,
@Query("contentType") contentType: ContentType,
@Header("Authorization") authHeader: String
): Single<ApiResponse<GetContentMainTabLiveReplayResponse>>
@GET("/v2/audio-content/main/replay/popular-content-by-creator")
fun getPopularReplayContentByCreator(
@Query("creatorId") creatorId: Long,
@Query("isAdultContentVisible") isAdultContentVisible: Boolean,
@Query("contentType") contentType: ContentType,
@Header("Authorization") authHeader: String
): Single<ApiResponse<List<GetAudioContentRankingItem>>>
@GET("/v2/audio-content/main/free")
fun getContentMainFree(
@Query("isAdultContentVisible") isAdultContentVisible: Boolean,
@Query("contentType") contentType: ContentType,
@Header("Authorization") authHeader: String
): Single<ApiResponse<GetContentMainTabLiveFreeResponse>>
@GET("/v2/audio-content/main/free/introduce-creator")
fun getIntroduceCreatorList(
@Query("isAdultContentVisible") isAdultContentVisible: Boolean,
@Query("contentType") contentType: ContentType,
@Query("page") page: Int,
@Query("size") size: Int,
@Header("Authorization") authHeader: String
@ -364,6 +402,8 @@ interface AudioContentApi {
@GET("/v2/audio-content/main/free/new-content-by-theme")
fun getNewFreeContentOfTheme(
@Query("theme") theme: String,
@Query("isAdultContentVisible") isAdultContentVisible: Boolean,
@Query("contentType") contentType: ContentType,
@Query("page") page: Int,
@Query("size") size: Int,
@Header("Authorization") authHeader: String
@ -372,12 +412,15 @@ interface AudioContentApi {
@GET("/v2/audio-content/main/free/popular-content-by-creator")
fun getPopularFreeContentByCreator(
@Query("creatorId") creatorId: Long,
@Query("isAdultContentVisible") isAdultContentVisible: Boolean,
@Query("contentType") contentType: ContentType,
@Header("Authorization") authHeader: String
): Single<ApiResponse<List<GetAudioContentRankingItem>>>
@GET("/v2/audio-content/main/content/recommend-content-by-tag")
fun getRecommendedContentByTag(
@Query("tag") tag: String,
@Query("contentType") contentType: ContentType,
@Header("Authorization") authHeader: String
): Single<ApiResponse<List<GetAudioContentMainItem>>>
}

View File

@ -162,7 +162,11 @@ class AudioContentRepository(
authHeader = token
)
fun getNewContentThemeList(token: String) = api.getNewContentThemeList(authHeader = token)
fun getNewContentThemeList(token: String) = api.getNewContentThemeList(
isAdultContentVisible = SharedPreferenceManager.isAdultContentVisible,
contentType = ContentType.values()[SharedPreferenceManager.contentPreference],
authHeader = token
)
fun donation(
contentId: Long,

View File

@ -1,9 +1,16 @@
package kr.co.vividnext.sodalive.audio_content.main.v2.alarm
import kr.co.vividnext.sodalive.audio_content.AudioContentApi
import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.settings.ContentType
class AudioContentMainTabAlarmRepository(private val api: AudioContentApi) {
fun getContentMainAlarm(token: String) = api.getContentMainAlarm(authHeader = token)
fun getContentMainAlarm(token: String) = api.getContentMainAlarm(
isAdultContentVisible = SharedPreferenceManager.isAdultContentVisible,
contentType = ContentType.values()[SharedPreferenceManager.contentPreference],
authHeader = token
)
fun getContentMainAlarmAll(
theme: String,
page: Int,
@ -11,6 +18,8 @@ class AudioContentMainTabAlarmRepository(private val api: AudioContentApi) {
token: String
) = api.getContentMainAlarmAll(
theme = theme,
isAdultContentVisible = SharedPreferenceManager.isAdultContentVisible,
contentType = ContentType.values()[SharedPreferenceManager.contentPreference],
page = page - 1,
size = size,
authHeader = token

View File

@ -1,11 +1,23 @@
package kr.co.vividnext.sodalive.audio_content.main.v2.asmr
import kr.co.vividnext.sodalive.audio_content.AudioContentApi
import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.settings.ContentType
class AudioContentMainTabAsmrRepository(private val api: AudioContentApi) {
fun getContentMainAsmr(token: String) = api.getContentMainAsmr(authHeader = token)
fun getContentMainAsmr(token: String) = api.getContentMainAsmr(
isAdultContentVisible = SharedPreferenceManager.isAdultContentVisible,
contentType = ContentType.values()[SharedPreferenceManager.contentPreference],
authHeader = token
)
fun getPopularContentByCreator(
creatorId: Long,
token: String
) = api.getPopularAsmrContentByCreator(creatorId, authHeader = token)
) = api.getPopularAsmrContentByCreator(
creatorId,
isAdultContentVisible = SharedPreferenceManager.isAdultContentVisible,
contentType = ContentType.values()[SharedPreferenceManager.contentPreference],
authHeader = token
)
}

View File

@ -34,6 +34,7 @@ import kr.co.vividnext.sodalive.base.BaseFragment
import kr.co.vividnext.sodalive.common.Constants
import kr.co.vividnext.sodalive.common.GridSpacingItemDecoration
import kr.co.vividnext.sodalive.common.LoadingDialog
import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.databinding.FragmentAudioContentMainTabContentBinding
import kr.co.vividnext.sodalive.explorer.profile.UserProfileActivity
import kr.co.vividnext.sodalive.extensions.dpToPx
@ -526,7 +527,11 @@ class AudioContentMainTabContentFragment : BaseFragment<FragmentAudioContentMain
viewModel.tagListLiveData.observe(viewLifecycleOwner) {
contentTagAdapter.addItems(it)
if (contentTagAdapter.itemCount <= 0) {
if (
contentTagAdapter.itemCount <= 0 ||
!SharedPreferenceManager.isAdultContentVisible ||
!SharedPreferenceManager.isAuth
) {
binding.llRecommendContentByTag.visibility = View.GONE
} else {
binding.llRecommendContentByTag.visibility = View.VISIBLE

View File

@ -5,7 +5,12 @@ import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.settings.ContentType
class AudioContentMainTabContentRepository(private val api: AudioContentApi) {
fun getContentMainContent(token: String) = api.getContentMainContent(authHeader = token)
fun getContentMainContent(token: String) = api.getContentMainContent(
isAdultContentVisible = SharedPreferenceManager.isAdultContentVisible,
contentType = ContentType.values()[SharedPreferenceManager.contentPreference],
authHeader = token
)
fun getNewContentOfTheme(theme: String, token: String) = api.getContentMainNewContentOfTheme(
theme = theme,
isAdultContentVisible = SharedPreferenceManager.isAdultContentVisible,
@ -18,16 +23,27 @@ class AudioContentMainTabContentRepository(private val api: AudioContentApi) {
token: String
) = api.getDailyContentRanking(
sortType = sortType,
isAdultContentVisible = SharedPreferenceManager.isAdultContentVisible,
contentType = ContentType.values()[SharedPreferenceManager.contentPreference],
authHeader = token
)
fun getPopularContentByCreator(
creatorId: Long,
token: String
) = api.getContentMainContentPopularContentByCreator(creatorId, authHeader = token)
) = api.getContentMainContentPopularContentByCreator(
creatorId,
isAdultContentVisible = SharedPreferenceManager.isAdultContentVisible,
contentType = ContentType.values()[SharedPreferenceManager.contentPreference],
authHeader = token
)
fun getRecommendedContentByTag(
tag: String,
token: String
) = api.getRecommendedContentByTag(tag = tag, authHeader = token)
) = api.getRecommendedContentByTag(
tag = tag,
contentType = ContentType.values()[SharedPreferenceManager.contentPreference],
authHeader = token
)
}

View File

@ -1,10 +1,19 @@
package kr.co.vividnext.sodalive.audio_content.main.v2.free
import kr.co.vividnext.sodalive.audio_content.AudioContentApi
import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.settings.ContentType
class AudioContentMainTabFreeRepository(private val api: AudioContentApi) {
fun getContentMainFree(token: String) = api.getContentMainFree(authHeader = token)
fun getContentMainFree(token: String) = api.getContentMainFree(
isAdultContentVisible = SharedPreferenceManager.isAdultContentVisible,
contentType = ContentType.values()[SharedPreferenceManager.contentPreference],
authHeader = token
)
fun getIntroduceCreatorList(page: Int, size: Int, token: String) = api.getIntroduceCreatorList(
isAdultContentVisible = SharedPreferenceManager.isAdultContentVisible,
contentType = ContentType.values()[SharedPreferenceManager.contentPreference],
page = page - 1,
size = size,
authHeader = token
@ -17,6 +26,8 @@ class AudioContentMainTabFreeRepository(private val api: AudioContentApi) {
token: String
) = api.getNewFreeContentOfTheme(
theme = theme,
isAdultContentVisible = SharedPreferenceManager.isAdultContentVisible,
contentType = ContentType.values()[SharedPreferenceManager.contentPreference],
page = page - 1,
size = size,
authHeader = token
@ -25,5 +36,10 @@ class AudioContentMainTabFreeRepository(private val api: AudioContentApi) {
fun getPopularContentByCreator(
creatorId: Long,
token: String
) = api.getPopularFreeContentByCreator(creatorId, authHeader = token)
) = api.getPopularFreeContentByCreator(
creatorId,
isAdultContentVisible = SharedPreferenceManager.isAdultContentVisible,
contentType = ContentType.values()[SharedPreferenceManager.contentPreference],
authHeader = token
)
}

View File

@ -1,11 +1,23 @@
package kr.co.vividnext.sodalive.audio_content.main.v2.home
import kr.co.vividnext.sodalive.audio_content.AudioContentApi
import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.settings.ContentType
class AudioContentMainTabHomeRepository(private val api: AudioContentApi) {
fun getContentMainHome(token: String) = api.getContentMainHome(authHeader = token)
fun getContentMainHome(token: String) = api.getContentMainHome(
isAdultContentVisible = SharedPreferenceManager.isAdultContentVisible,
contentType = ContentType.values()[SharedPreferenceManager.contentPreference],
authHeader = token
)
fun getPopularContentByCreator(
creatorId: Long,
token: String
) = api.getPopularContentByCreator(creatorId, authHeader = token)
) = api.getPopularContentByCreator(
creatorId,
isAdultContentVisible = SharedPreferenceManager.isAdultContentVisible,
contentType = ContentType.values()[SharedPreferenceManager.contentPreference],
authHeader = token
)
}

View File

@ -1,11 +1,23 @@
package kr.co.vividnext.sodalive.audio_content.main.v2.replay
import kr.co.vividnext.sodalive.audio_content.AudioContentApi
import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.settings.ContentType
class AudioContentMainTabReplayRepository(private val api: AudioContentApi) {
fun getContentMainReplay(token: String) = api.getContentMainReplay(authHeader = token)
fun getContentMainReplay(token: String) = api.getContentMainReplay(
isAdultContentVisible = SharedPreferenceManager.isAdultContentVisible,
contentType = ContentType.values()[SharedPreferenceManager.contentPreference],
authHeader = token
)
fun getPopularContentByCreator(
creatorId: Long,
token: String
) = api.getPopularReplayContentByCreator(creatorId, authHeader = token)
) = api.getPopularReplayContentByCreator(
creatorId,
isAdultContentVisible = SharedPreferenceManager.isAdultContentVisible,
contentType = ContentType.values()[SharedPreferenceManager.contentPreference],
authHeader = token
)
}

View File

@ -1,24 +1,43 @@
package kr.co.vividnext.sodalive.audio_content.main.v2.series
import kr.co.vividnext.sodalive.audio_content.AudioContentApi
import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.settings.ContentType
class AudioContentMainTabSeriesRepository(private val api: AudioContentApi) {
fun getContentMainSeries(token: String) = api.getContentMainSeries(authHeader = token)
fun getContentMainSeries(token: String) = api.getContentMainSeries(
isAdultContentVisible = SharedPreferenceManager.isAdultContentVisible,
contentType = ContentType.values()[SharedPreferenceManager.contentPreference],
authHeader = token
)
fun getRecommendSeriesListByGenre(
genreId: Long,
token: String
) = api.getRecommendSeriesListByGenre(genreId, authHeader = token)
) = api.getRecommendSeriesListByGenre(
genreId,
isAdultContentVisible = SharedPreferenceManager.isAdultContentVisible,
contentType = ContentType.values()[SharedPreferenceManager.contentPreference],
authHeader = token
)
fun getRecommendSeriesByCreator(
creatorId: Long,
token: String
) = api.getRecommendSeriesByCreator(creatorId, authHeader = token)
) = api.getRecommendSeriesByCreator(
creatorId,
isAdultContentVisible = SharedPreferenceManager.isAdultContentVisible,
contentType = ContentType.values()[SharedPreferenceManager.contentPreference],
authHeader = token
)
fun getCompletedSeries(
page: Int,
size: Int,
token: String
) = api.getCompletedSeries(
isAdultContentVisible = SharedPreferenceManager.isAdultContentVisible,
contentType = ContentType.values()[SharedPreferenceManager.contentPreference],
page = page - 1,
size = size,
authHeader = token

View File

@ -1,6 +1,8 @@
package kr.co.vividnext.sodalive.audio_content.main.v2.series.origianl_audio_drama
import kr.co.vividnext.sodalive.audio_content.AudioContentApi
import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.settings.ContentType
class OriginalAudioDramaContentAllRepository(private val api: AudioContentApi) {
fun getOriginalAudioDramaList(
@ -8,6 +10,8 @@ class OriginalAudioDramaContentAllRepository(private val api: AudioContentApi) {
size: Int,
token: String
) = api.getOriginalAudioDramaList(
isAdultContentVisible = SharedPreferenceManager.isAdultContentVisible,
contentType = ContentType.values()[SharedPreferenceManager.contentPreference],
page = page - 1,
size = size,
authHeader = token