- 19금 콘텐츠 보기 설정 UI depth 추가
- 콘텐츠 보기 설정으로 제목 변경
This commit is contained in:
2024-10-10 15:37:12 +09:00
parent f3553c3c59
commit f2cca1e14b
8 changed files with 310 additions and 200 deletions

View File

@@ -104,6 +104,7 @@ import kr.co.vividnext.sodalive.mypage.service_center.ServiceCenterViewModel
import kr.co.vividnext.sodalive.network.TokenAuthenticator
import kr.co.vividnext.sodalive.report.ReportApi
import kr.co.vividnext.sodalive.report.ReportRepository
import kr.co.vividnext.sodalive.settings.ContentSettingsViewModel
import kr.co.vividnext.sodalive.settings.SettingsViewModel
import kr.co.vividnext.sodalive.settings.event.EventApi
import kr.co.vividnext.sodalive.settings.event.EventRepository
@@ -221,6 +222,7 @@ class AppDI(private val context: Context, isDebugMode: Boolean) {
viewModel { NoticeViewModel(get()) }
viewModel { EventViewModel(get()) }
viewModel { NotificationSettingsViewModel(get()) }
viewModel { ContentSettingsViewModel() }
viewModel { SettingsViewModel(get()) }
viewModel { SeriesDetailViewModel(get(), get()) }
viewModel { SeriesListAllViewModel(get()) }

View File

@@ -0,0 +1,111 @@
package kr.co.vividnext.sodalive.settings
import android.content.Intent
import android.os.Bundle
import android.view.View
import androidx.activity.OnBackPressedCallback
import kr.co.vividnext.sodalive.R
import kr.co.vividnext.sodalive.base.BaseActivity
import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.databinding.ActivityContentSettingsBinding
import kr.co.vividnext.sodalive.splash.SplashActivity
import org.koin.android.ext.android.inject
class ContentSettingsActivity : BaseActivity<ActivityContentSettingsBinding>(
ActivityContentSettingsBinding::inflate
) {
private val viewModel: ContentSettingsViewModel by inject()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
bindData()
onBackPressedDispatcher.addCallback(this, object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
handleFinish()
}
})
}
override fun setupView() {
binding.toolbar.tvBack.text = "콘텐츠 보기 설정"
binding.toolbar.tvBack.setOnClickListener { handleFinish() }
// 본인 인증 체크
if (SharedPreferenceManager.isAuth) {
binding.llAdultContentVisible.visibility = View.VISIBLE
// 19금 콘텐츠 보기 체크
if (SharedPreferenceManager.isAdultContentVisible) {
binding.llAdultContentPreference.visibility = View.VISIBLE
} else {
binding.llAdultContentPreference.visibility = View.GONE
}
// 19금 콘텐츠 보기 스위치 액션
binding.ivAdultContentVisible.setOnClickListener {
viewModel.toggleAdultContentVisible()
}
binding.tvContentAll.setOnClickListener {
viewModel.setAdultContentPreference(ContentType.ALL)
}
binding.tvContentMale.setOnClickListener {
viewModel.setAdultContentPreference(ContentType.MALE)
}
binding.tvContentFemale.setOnClickListener {
viewModel.setAdultContentPreference(ContentType.FEMALE)
}
} else {
binding.llAdultContentVisible.visibility = View.GONE
}
}
private fun bindData() {
viewModel.isAdultContentVisible.observe(this) {
if (it) {
binding.ivAdultContentVisible.setImageResource(R.drawable.btn_toggle_on_big)
binding.llAdultContentPreference.visibility = View.VISIBLE
} else {
binding.ivAdultContentVisible.setImageResource(R.drawable.btn_toggle_off_big)
binding.llAdultContentPreference.visibility = View.GONE
}
}
viewModel.adultContentPreference.observe(this) {
binding.tvContentAll.isSelected = false
binding.tvContentMale.isSelected = false
binding.tvContentFemale.isSelected = false
when (it) {
ContentType.ALL -> binding.tvContentAll.isSelected = true
ContentType.MALE -> binding.tvContentMale.isSelected = true
ContentType.FEMALE -> binding.tvContentFemale.isSelected = true
else -> {}
}
}
}
private fun handleFinish() {
if (viewModel.isChangedAdultContentVisible) {
startActivity(
Intent(
this@ContentSettingsActivity,
SplashActivity::class.java
).apply {
addFlags(
Intent.FLAG_ACTIVITY_CLEAR_TASK or
Intent.FLAG_ACTIVITY_NEW_TASK
)
}
)
finish()
} else {
finish()
}
}
}

View File

@@ -0,0 +1,39 @@
package kr.co.vividnext.sodalive.settings
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import kr.co.vividnext.sodalive.base.BaseViewModel
import kr.co.vividnext.sodalive.common.SharedPreferenceManager
class ContentSettingsViewModel : BaseViewModel() {
private var _isAdultContentVisible = MutableLiveData(
SharedPreferenceManager.isAdultContentVisible
)
val isAdultContentVisible: LiveData<Boolean>
get() = _isAdultContentVisible
private var _adultContentPreference = MutableLiveData(
ContentType.values()[SharedPreferenceManager.contentPreference]
)
val adultContentPreference: LiveData<ContentType>
get() = _adultContentPreference
var isChangedAdultContentVisible = false
fun toggleAdultContentVisible() {
val adultContentVisible = SharedPreferenceManager.isAdultContentVisible
_isAdultContentVisible.value = !adultContentVisible
SharedPreferenceManager.isAdultContentVisible = !adultContentVisible
isChangedAdultContentVisible = true
if (adultContentVisible) {
SharedPreferenceManager.contentPreference = ContentType.ALL.ordinal
}
}
fun setAdultContentPreference(adultContentPreference: ContentType) {
_adultContentPreference.value = adultContentPreference
SharedPreferenceManager.contentPreference = adultContentPreference.ordinal
isChangedAdultContentVisible = true
}
}

View File

@@ -9,7 +9,6 @@ import android.widget.Toast
import androidx.activity.viewModels
import com.google.android.gms.oss.licenses.OssLicensesMenuActivity
import kr.co.vividnext.sodalive.BuildConfig
import kr.co.vividnext.sodalive.R
import kr.co.vividnext.sodalive.audio_content.AudioContentPlayService
import kr.co.vividnext.sodalive.base.BaseActivity
import kr.co.vividnext.sodalive.base.SodaDialog
@@ -97,6 +96,20 @@ class SettingsActivity : BaseActivity<ActivitySettingsBinding>(ActivitySettingsB
)
}
if (SharedPreferenceManager.isAuth) {
binding.rlContentSettings.visibility = View.VISIBLE
binding.rlContentSettings.setOnClickListener {
startActivity(
Intent(
applicationContext,
ContentSettingsActivity::class.java
)
)
}
} else {
binding.rlContentSettings.visibility = View.GONE
}
binding.rlTerms.setOnClickListener {
val intent = Intent(applicationContext, TermsActivity::class.java)
intent.putExtra(Constants.EXTRA_TERMS, Constants.EXTRA_TERMS)
@@ -128,42 +141,6 @@ class SettingsActivity : BaseActivity<ActivitySettingsBinding>(ActivitySettingsB
binding.tvSignOut.setOnClickListener {
startActivity(Intent(applicationContext, SignOutActivity::class.java))
}
setupAdultContentVisibleView()
}
private fun setupAdultContentVisibleView() {
// 본인 인증 체크
if (SharedPreferenceManager.isAuth) {
binding.llAdultContentVisible.visibility = View.VISIBLE
// 19금 콘텐츠 보기 체크
if (SharedPreferenceManager.isAdultContentVisible) {
binding.llAdultContentPreference.visibility = View.VISIBLE
} else {
binding.llAdultContentPreference.visibility = View.GONE
}
// 19금 콘텐츠 보기 스위치 액션
binding.ivAdultContentVisible.setOnClickListener {
viewModel.toggleAdultContentVisible()
}
binding.tvContentAll.setOnClickListener {
viewModel.setAdultContentPreference(ContentType.ALL)
}
binding.tvContentMale.setOnClickListener {
viewModel.setAdultContentPreference(ContentType.MALE)
}
binding.tvContentFemale.setOnClickListener {
viewModel.setAdultContentPreference(ContentType.FEMALE)
}
} else {
binding.llAdultContentVisible.visibility = View.GONE
}
}
private fun bindData() {
@@ -178,29 +155,6 @@ class SettingsActivity : BaseActivity<ActivitySettingsBinding>(ActivitySettingsB
viewModel.toastLiveData.observe(this) {
it?.let { Toast.makeText(applicationContext, it, Toast.LENGTH_LONG).show() }
}
viewModel.isAdultContentVisible.observe(this) {
if (it) {
binding.ivAdultContentVisible.setImageResource(R.drawable.btn_toggle_on_big)
binding.llAdultContentPreference.visibility = View.VISIBLE
} else {
binding.ivAdultContentVisible.setImageResource(R.drawable.btn_toggle_off_big)
binding.llAdultContentPreference.visibility = View.GONE
}
}
viewModel.adultContentPreference.observe(this) {
binding.tvContentAll.isSelected = false
binding.tvContentMale.isSelected = false
binding.tvContentFemale.isSelected = false
when (it) {
ContentType.ALL -> binding.tvContentAll.isSelected = true
ContentType.MALE -> binding.tvContentMale.isSelected = true
ContentType.FEMALE -> binding.tvContentFemale.isSelected = true
else -> {}
}
}
}
private fun logout() {

View File

@@ -18,20 +18,6 @@ class SettingsViewModel(private val userRepository: UserRepository) : BaseViewMo
val isLoading: LiveData<Boolean>
get() = _isLoading
private var _isAdultContentVisible = MutableLiveData(
SharedPreferenceManager.isAdultContentVisible
)
val isAdultContentVisible: LiveData<Boolean>
get() = _isAdultContentVisible
private var _adultContentPreference = MutableLiveData(
ContentType.values()[SharedPreferenceManager.contentPreference]
)
val adultContentPreference: LiveData<ContentType>
get() = _adultContentPreference
var isChangedAdultContentVisible = false
fun logout(onSuccess: () -> Unit) {
compositeDisposable.add(
userRepository.logout(token = "Bearer ${SharedPreferenceManager.token}")
@@ -85,17 +71,4 @@ class SettingsViewModel(private val userRepository: UserRepository) : BaseViewMo
)
)
}
fun toggleAdultContentVisible() {
val adultContentVisible = SharedPreferenceManager.isAdultContentVisible
_isAdultContentVisible.value = !adultContentVisible
SharedPreferenceManager.isAdultContentVisible = !adultContentVisible
isChangedAdultContentVisible = true
}
fun setAdultContentPreference(adultContentPreference: ContentType) {
_adultContentPreference.value = adultContentPreference
SharedPreferenceManager.contentPreference = adultContentPreference.ordinal
isChangedAdultContentVisible = true
}
}