diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index aac1411..3188925 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -123,6 +123,7 @@
+
diff --git a/app/src/main/java/kr/co/vividnext/sodalive/di/AppDI.kt b/app/src/main/java/kr/co/vividnext/sodalive/di/AppDI.kt
index 5294857..47579a6 100644
--- a/app/src/main/java/kr/co/vividnext/sodalive/di/AppDI.kt
+++ b/app/src/main/java/kr/co/vividnext/sodalive/di/AppDI.kt
@@ -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()) }
diff --git a/app/src/main/java/kr/co/vividnext/sodalive/settings/ContentSettingsActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/settings/ContentSettingsActivity.kt
new file mode 100644
index 0000000..19e72d5
--- /dev/null
+++ b/app/src/main/java/kr/co/vividnext/sodalive/settings/ContentSettingsActivity.kt
@@ -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::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()
+ }
+ }
+}
diff --git a/app/src/main/java/kr/co/vividnext/sodalive/settings/ContentSettingsViewModel.kt b/app/src/main/java/kr/co/vividnext/sodalive/settings/ContentSettingsViewModel.kt
new file mode 100644
index 0000000..79a2038
--- /dev/null
+++ b/app/src/main/java/kr/co/vividnext/sodalive/settings/ContentSettingsViewModel.kt
@@ -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
+ get() = _isAdultContentVisible
+
+ private var _adultContentPreference = MutableLiveData(
+ ContentType.values()[SharedPreferenceManager.contentPreference]
+ )
+ val adultContentPreference: LiveData
+ 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
+ }
+}
diff --git a/app/src/main/java/kr/co/vividnext/sodalive/settings/SettingsActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/settings/SettingsActivity.kt
index 184a417..1e25250 100644
--- a/app/src/main/java/kr/co/vividnext/sodalive/settings/SettingsActivity.kt
+++ b/app/src/main/java/kr/co/vividnext/sodalive/settings/SettingsActivity.kt
@@ -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(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(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(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() {
diff --git a/app/src/main/java/kr/co/vividnext/sodalive/settings/SettingsViewModel.kt b/app/src/main/java/kr/co/vividnext/sodalive/settings/SettingsViewModel.kt
index cdedf91..f98a3b6 100644
--- a/app/src/main/java/kr/co/vividnext/sodalive/settings/SettingsViewModel.kt
+++ b/app/src/main/java/kr/co/vividnext/sodalive/settings/SettingsViewModel.kt
@@ -18,20 +18,6 @@ class SettingsViewModel(private val userRepository: UserRepository) : BaseViewMo
val isLoading: LiveData
get() = _isLoading
- private var _isAdultContentVisible = MutableLiveData(
- SharedPreferenceManager.isAdultContentVisible
- )
- val isAdultContentVisible: LiveData
- get() = _isAdultContentVisible
-
- private var _adultContentPreference = MutableLiveData(
- ContentType.values()[SharedPreferenceManager.contentPreference]
- )
- val adultContentPreference: LiveData
- 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
- }
}
diff --git a/app/src/main/res/layout/activity_content_settings.xml b/app/src/main/res/layout/activity_content_settings.xml
new file mode 100644
index 0000000..4628512
--- /dev/null
+++ b/app/src/main/res/layout/activity_content_settings.xml
@@ -0,0 +1,113 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml
index 18cd24e..b4ba31d 100644
--- a/app/src/main/res/layout/activity_settings.xml
+++ b/app/src/main/res/layout/activity_settings.xml
@@ -1,6 +1,5 @@
+
+
+
+
+
+
+
@@ -223,117 +251,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-