diff --git a/app/src/main/java/com/into/websoso/data/repository/UserRepository.kt b/app/src/main/java/com/into/websoso/data/repository/UserRepository.kt index e7ea0fac9..fec22e6f1 100644 --- a/app/src/main/java/com/into/websoso/data/repository/UserRepository.kt +++ b/app/src/main/java/com/into/websoso/data/repository/UserRepository.kt @@ -197,6 +197,12 @@ class UserRepository } } + suspend fun removeTermsAgreementChecked() { + userStorage.edit { preferences -> + preferences.remove(TERMS_AGREEMENT_CHECKED_KEY) + } + } + companion object { val NOVEL_DETAIL_FIRST_LAUNCHED_KEY = booleanPreferencesKey("NOVEL_DETAIL_FIRST_LAUNCHED") val TERMS_AGREEMENT_CHECKED_KEY = booleanPreferencesKey("terms_agreement_checked") diff --git a/app/src/main/java/com/into/websoso/ui/main/home/HomeFragment.kt b/app/src/main/java/com/into/websoso/ui/main/home/HomeFragment.kt index 8f601c7fb..9c084c1b3 100644 --- a/app/src/main/java/com/into/websoso/ui/main/home/HomeFragment.kt +++ b/app/src/main/java/com/into/websoso/ui/main/home/HomeFragment.kt @@ -174,10 +174,17 @@ class HomeFragment : BaseFragment(R.layout.fragment_home) { updateFCMToken(isFirstLaunch = false) } - homeViewModel.showTermsAgreementDialog.collectWithLifecycle(viewLifecycleOwner) { shouldShow -> - if (shouldShow) { - showTermsAgreementDialog() - } + homeViewModel.showTermsAgreementDialog.collectWithLifecycle(viewLifecycleOwner) { isShown -> + if (!isShown) return@collectWithLifecycle + + val existingDialog = + parentFragmentManager.findFragmentByTag(TermsAgreementDialogFragment.TERMS_AGREEMENT_TAG) + val existingBottomSheet = + parentFragmentManager.findFragmentByTag(TermsAgreementDialogFragment.TERMS_AGREEMENT_BOTTOM_SHEET_TAG) + + if (existingDialog != null || existingBottomSheet != null) return@collectWithLifecycle + + showTermsAgreementDialog() } } diff --git a/app/src/main/java/com/into/websoso/ui/main/home/dialog/TermsAgreementDialogFragment.kt b/app/src/main/java/com/into/websoso/ui/main/home/dialog/TermsAgreementDialogFragment.kt index 35893d6bd..704a22edb 100644 --- a/app/src/main/java/com/into/websoso/ui/main/home/dialog/TermsAgreementDialogFragment.kt +++ b/app/src/main/java/com/into/websoso/ui/main/home/dialog/TermsAgreementDialogFragment.kt @@ -26,13 +26,20 @@ class TermsAgreementDialogFragment : } private fun showTermsAgreementBottomSheet() { - TermsAgreementDialogBottomSheet - .newInstance(isFromHome = true) - .show(parentFragmentManager, "TermsAgreementDialogBottomSheet") + val isBottomSheetShown = + parentFragmentManager.findFragmentByTag(TERMS_AGREEMENT_BOTTOM_SHEET_TAG) + + if (isBottomSheetShown == null) { + TermsAgreementDialogBottomSheet + .newInstance(isFromHome = true) + .show(parentFragmentManager, TERMS_AGREEMENT_BOTTOM_SHEET_TAG) + } + dismiss() } companion object { const val TERMS_AGREEMENT_TAG = "TermsAgreementDialog" + const val TERMS_AGREEMENT_BOTTOM_SHEET_TAG = "TermsAgreementDialogBottomSheet" fun newInstance(): TermsAgreementDialogFragment = TermsAgreementDialogFragment() } diff --git a/app/src/main/java/com/into/websoso/ui/termsAgreement/TermsAgreementDialogBottomSheet.kt b/app/src/main/java/com/into/websoso/ui/termsAgreement/TermsAgreementDialogBottomSheet.kt index 675dba6cd..be28e407a 100644 --- a/app/src/main/java/com/into/websoso/ui/termsAgreement/TermsAgreementDialogBottomSheet.kt +++ b/app/src/main/java/com/into/websoso/ui/termsAgreement/TermsAgreementDialogBottomSheet.kt @@ -1,5 +1,6 @@ package com.into.websoso.ui.termsAgreement +import android.content.DialogInterface import android.content.Intent import android.net.Uri import android.os.Bundle @@ -24,6 +25,7 @@ import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint class TermsAgreementDialogBottomSheet : BaseBottomSheetDialog(R.layout.dialog_terms_agreement) { private val termsAgreementViewModel: TermsAgreementViewModel by viewModels() + private var onDismissListener: (() -> Unit)? = null override fun onViewCreated( view: View, @@ -69,7 +71,7 @@ class TermsAgreementDialogBottomSheet : BaseBottomSheetDialog = MutableLiveData("") val withdrawReason: LiveData get() = _withdrawReason @@ -77,6 +79,7 @@ class WithdrawSecondViewModel @Inject constructor( authRepository.withdraw(withdrawReason) }.onSuccess { _isWithDrawSuccess.value = true + userRepository.removeTermsAgreementChecked() authRepository.updateIsAutoLogin(false) }.onFailure { _isWithDrawSuccess.value = false @@ -87,4 +90,4 @@ class WithdrawSecondViewModel @Inject constructor( companion object { private const val ETC_INPUT_REASON = "직접입력" } -} \ No newline at end of file +} diff --git a/app/src/main/res/layout/dialog_terms_agreement.xml b/app/src/main/res/layout/dialog_terms_agreement.xml index 62495d70c..a824c89dc 100644 --- a/app/src/main/res/layout/dialog_terms_agreement.xml +++ b/app/src/main/res/layout/dialog_terms_agreement.xml @@ -40,7 +40,6 @@ android:background="@drawable/btn_feed_novel_info" android:orientation="horizontal" android:gravity="center_vertical" - android:padding="16dp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/tv_terms_agreement_sub_title"> @@ -50,6 +49,8 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" + android:paddingHorizontal="16dp" + android:paddingVertical="8dp" android:text="@string/string_terms_agreement_all" android:textAppearance="@style/title2" android:textColor="@color/primary_100_6A5DFD" /> @@ -58,6 +59,8 @@ android:id="@+id/iv_terms_agreement_All" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:paddingHorizontal="16dp" + android:paddingVertical="16dp" android:src="@drawable/ic_terms_agreement_unselected" /> diff --git a/app/src/main/res/values/deepLinks.xml b/app/src/main/res/values/deepLinks.xml index 81b542356..6fbb91f18 100644 --- a/app/src/main/res/values/deepLinks.xml +++ b/app/src/main/res/values/deepLinks.xml @@ -6,6 +6,6 @@ https://websoso.notion.site/143600bd746880668556fb005fcef491?pvs=4 https://play.google.com/store/apps/details?id=com.into.websoso https://www.notion.so/websoso/143600bd74688050be18f4da31d9403e?pvs=4 - https://www.notion.so/kimmjabc/18e9e64a45328048842ed4dd7b17e5b3?pvs=25 + https://websoso.notion.site/198600bd746880699fd6f22dd42a7215?pvs=4 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index cad0992cf..6758a6478 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -421,7 +421,7 @@ 서비스 이용약관 동의 (필수) - 개인정보 수집 및 이용 안내 (필수) + 개인정보 수집 및 이용 동의 (필수) 마켓팅 정보 수신 동의 (선택) 다음으로 완료