diff --git a/core/datastore/src/main/java/com/android/mediproject/core/datastore/AppDataStore.kt b/core/datastore/src/main/java/com/android/mediproject/core/datastore/AppDataStore.kt index 7d6d98016..308ea7602 100644 --- a/core/datastore/src/main/java/com/android/mediproject/core/datastore/AppDataStore.kt +++ b/core/datastore/src/main/java/com/android/mediproject/core/datastore/AppDataStore.kt @@ -10,4 +10,5 @@ interface AppDataStore { suspend fun saveMyAccountInfo(userEmail: String, nickName: String, myAccountId: Long) suspend fun saveNickName(nickName: String) suspend fun saveSkipIntro(skipIntro: Boolean) + suspend fun clearMyAccountInfo() } \ No newline at end of file diff --git a/core/datastore/src/main/java/com/android/mediproject/core/datastore/AppDataStoreImpl.kt b/core/datastore/src/main/java/com/android/mediproject/core/datastore/AppDataStoreImpl.kt index c62c10d65..707d8bbfb 100644 --- a/core/datastore/src/main/java/com/android/mediproject/core/datastore/AppDataStoreImpl.kt +++ b/core/datastore/src/main/java/com/android/mediproject/core/datastore/AppDataStoreImpl.kt @@ -51,5 +51,14 @@ class AppDataStoreImpl @Inject constructor( override suspend fun saveSkipIntro(skipIntro: Boolean) { context.dataStore.edit { it[KEY_SKIP_INTRO] = skipIntro } } - + + override suspend fun clearMyAccountInfo() { + context.dataStore.edit { + it[KEY_USER_EMAIL] = "" + it[KEY_NICK_NAME] = "" + it[KEY_MY_ACCOUNT_ID] = 0 + it[KEY_SKIP_INTRO] = false + } + } + } \ No newline at end of file diff --git a/core/datastore/src/main/java/com/android/mediproject/core/datastore/TokenDataSourceImpl.kt b/core/datastore/src/main/java/com/android/mediproject/core/datastore/TokenDataSourceImpl.kt index 8d71d1896..4e9747c79 100644 --- a/core/datastore/src/main/java/com/android/mediproject/core/datastore/TokenDataSourceImpl.kt +++ b/core/datastore/src/main/java/com/android/mediproject/core/datastore/TokenDataSourceImpl.kt @@ -150,6 +150,7 @@ class TokenDataSourceImpl @Inject constructor( tokenDataStore.updateData { it.toBuilder().clear().build() } + updateTokenState() } private fun updateTokenState() { diff --git a/core/datastore/src/main/java/com/android/mediproject/core/datastore/TokenServer.kt b/core/datastore/src/main/java/com/android/mediproject/core/datastore/TokenServer.kt index 15d37a87a..2c4c6fffb 100644 --- a/core/datastore/src/main/java/com/android/mediproject/core/datastore/TokenServer.kt +++ b/core/datastore/src/main/java/com/android/mediproject/core/datastore/TokenServer.kt @@ -1,5 +1,6 @@ package com.android.mediproject.core.datastore +import android.util.Log import com.android.mediproject.core.model.remote.token.NewTokensFromAws import kotlinx.coroutines.channels.BufferOverflow import kotlinx.coroutines.flow.MutableSharedFlow diff --git a/core/domain/src/main/java/com/android/mediproject/core/domain/user/UserUseCase.kt b/core/domain/src/main/java/com/android/mediproject/core/domain/user/UserUseCase.kt index 5bd339f68..a3705ec24 100644 --- a/core/domain/src/main/java/com/android/mediproject/core/domain/user/UserUseCase.kt +++ b/core/domain/src/main/java/com/android/mediproject/core/domain/user/UserUseCase.kt @@ -1,9 +1,11 @@ package com.android.mediproject.core.domain.user import android.util.Log +import com.android.mediproject.core.data.remote.sign.SignRepository import com.android.mediproject.core.data.remote.user.UserInfoRepository import com.android.mediproject.core.data.remote.user.UserRepository import com.android.mediproject.core.datastore.AppDataStore +import com.android.mediproject.core.domain.GetTokenUseCase import com.android.mediproject.core.model.requestparameters.ChangeNicknameParameter import com.android.mediproject.core.model.requestparameters.ChangePasswordParamter import com.android.mediproject.core.model.user.AccountState @@ -18,27 +20,33 @@ import javax.inject.Inject class UserUseCase @Inject constructor( private val appDataStore: AppDataStore, private val userRepository: UserRepository, - private val getUserInfoRepository: UserInfoRepository + private val getUserInfoRepository: UserInfoRepository, + private val signRepository: SignRepository ) { suspend operator fun invoke(): Flow = channelFlow { appDataStore.nickName.collect { nickName -> - Log.d("wap", nickName) trySend(UserDto(nickName = nickName)) } } suspend fun changeNickname(changeNicknameParameter: ChangeNicknameParameter) = channelFlow { userRepository.changeNickname(changeNicknameParameter).map { - it.fold(onSuccess = { Result.success(it) }, onFailure = { Result.failure(it) }) + it.fold(onSuccess = { + appDataStore.saveNickName(changeNicknameParameter.newNickname) + Result.success(it) + }, onFailure = { Result.failure(it) }) }.collectLatest { trySend(it) } } suspend fun changePassword(changePasswordParamter: ChangePasswordParamter) = channelFlow { - val email = (getUserInfoRepository.myAccountInfo.value as AccountState.SignedIn).email.toCharArray() + val email = + (getUserInfoRepository.myAccountInfo.value as AccountState.SignedIn).email.toCharArray() userRepository.changePassword(changePasswordParamter.apply { this.email = email }).map { - it.fold(onSuccess = { Result.success(it) }, onFailure = { Result.failure(it) }) + it.fold(onSuccess = { + Result.success(it) + }, onFailure = { Result.failure(it) }) }.collectLatest { trySend(it) } } @@ -46,7 +54,11 @@ class UserUseCase @Inject constructor( Log.d("wap", "UserUseCase : withdrawal()") userRepository.withdrawal().map { Log.d("wap", "UserUseCase : withdrawal()" + it.toString()) - it.fold(onSuccess = { Result.success(it) }, onFailure = { Result.failure(it) }) + it.fold(onSuccess = { + signRepository.signOut() + appDataStore.clearMyAccountInfo() + Result.success(it) + }, onFailure = { Result.failure(it) }) }.collectLatest { trySend(it) } } } \ No newline at end of file diff --git a/feature/comments/src/main/java/com/android/mediproject/feature/comments/mycommentslist/MyCommentsListFragment.kt b/feature/comments/src/main/java/com/android/mediproject/feature/comments/mycommentslist/MyCommentsListFragment.kt index 3cf25cd5f..86173da8d 100644 --- a/feature/comments/src/main/java/com/android/mediproject/feature/comments/mycommentslist/MyCommentsListFragment.kt +++ b/feature/comments/src/main/java/com/android/mediproject/feature/comments/mycommentslist/MyCommentsListFragment.kt @@ -1,24 +1,40 @@ package com.android.mediproject.feature.comments.mycommentslist +import android.content.Context import android.os.Bundle import android.view.View import androidx.fragment.app.viewModels import androidx.recyclerview.widget.DividerItemDecoration import androidx.recyclerview.widget.LinearLayoutManager +import com.android.mediproject.core.common.uiutil.SystemBarStyler import com.android.mediproject.core.model.comments.MyCommentDto import com.android.mediproject.core.ui.base.BaseFragment import com.android.mediproject.feature.comments.databinding.FragmentMyCommnetsListBinding +import dagger.hilt.android.AndroidEntryPoint import repeatOnStarted +import javax.inject.Inject - +@AndroidEntryPoint class MyCommentsListFragment : BaseFragment( FragmentMyCommnetsListBinding::inflate ) { override val fragmentViewModel: MyCommentsListViewModel by viewModels() private val myCommentsListAdapter: MyCommentsListAdapter by lazy { MyCommentsListAdapter() } + @Inject + lateinit var systemBarStyler: SystemBarStyler + + override fun onAttach(context: Context) { + super.onAttach(context) + systemBarStyler.setStyle( + SystemBarStyler.StatusBarColor.BLACK, + SystemBarStyler.NavigationBarColor.BLACK + ) + } + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + setBarStyle() binding.apply { viewModel = fragmentViewModel.apply { @@ -43,8 +59,8 @@ class MyCommentsListFragment : BaseFragment - log(comment.medicineName + "을 누르셨습니다.") }) - , + log(comment.medicineName + "을 누르셨습니다.") + }), MyCommentDto( 12346, "코메키나", @@ -52,7 +68,19 @@ class MyCommentsListFragment : BaseFragment - log(comment.medicineName + "을 누르셨습니다.") }) + log(comment.medicineName + "을 누르셨습니다.") + }) + ) + ) + } + + private fun setBarStyle() = binding.apply { + systemBarStyler.changeMode( + topViews = listOf( + SystemBarStyler.ChangeView( + myCommentsListBar, + SystemBarStyler.SpacingType.PADDING + ) ) ) } diff --git a/feature/interestedmedicine/src/main/java/com/android/mediproject/feature/interestedmedicine/moreinterestedmedicine/MoreInterestedMedicineFragment.kt b/feature/interestedmedicine/src/main/java/com/android/mediproject/feature/interestedmedicine/moreinterestedmedicine/MoreInterestedMedicineFragment.kt index 5601e538f..1bf5ffe83 100644 --- a/feature/interestedmedicine/src/main/java/com/android/mediproject/feature/interestedmedicine/moreinterestedmedicine/MoreInterestedMedicineFragment.kt +++ b/feature/interestedmedicine/src/main/java/com/android/mediproject/feature/interestedmedicine/moreinterestedmedicine/MoreInterestedMedicineFragment.kt @@ -1,21 +1,40 @@ package com.android.mediproject.feature.interestedmedicine.moreinterestedmedicine +import android.content.Context import android.os.Bundle import android.view.View import androidx.fragment.app.viewModels import androidx.recyclerview.widget.DividerItemDecoration import androidx.recyclerview.widget.LinearLayoutManager +import com.android.mediproject.core.common.uiutil.SystemBarStyler import com.android.mediproject.core.model.medicine.medicineapproval.ApprovedMedicineItemDto import com.android.mediproject.core.ui.base.BaseFragment import com.android.mediproject.feature.interestedmedicine.databinding.FragmentMoreInterestedMedicineBinding +import dagger.hilt.android.AndroidEntryPoint +import javax.inject.Inject +@AndroidEntryPoint class MoreInterestedMedicineFragment : - BaseFragment(FragmentMoreInterestedMedicineBinding::inflate) { + BaseFragment( + FragmentMoreInterestedMedicineBinding::inflate + ) { override val fragmentViewModel: MoreInterestedMedicineViewModel by viewModels() private val moreInterestedMedicineAdapter: MoreInterestedMeidicneAdapter by lazy { MoreInterestedMeidicneAdapter() } + @Inject + lateinit var systemBarStyler: SystemBarStyler + + override fun onAttach(context: Context) { + super.onAttach(context) + systemBarStyler.setStyle( + SystemBarStyler.StatusBarColor.BLACK, + SystemBarStyler.NavigationBarColor.BLACK + ) + } + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + setBarStyle() binding.apply { viewModel = fragmentViewModel @@ -27,129 +46,142 @@ class MoreInterestedMedicineFragment : } } - moreInterestedMedicineAdapter.submitList(mutableListOf( - ApprovedMedicineItemDto( - itemName = "탁센연질캡슐", - entpName = "(주)녹십자", - entpEngName = "GreenSipja", - medicineType = "일반의약품", - itemIngrName = "나프록센", - itemEngName = "Naproxen", - itemSeq = 0, - entpSeq = "iisque", - entpNo = "eius", - itemPermitDate = null, - induty = null, - prdlstStdrCode = null, - prductType = "consectetuer", - prductPrmisnNo = null, - itemIngrCnt = "quaerendum", - imgUrl = "http://www.bing.com/search?q=etiam", - permitKindCode = null, - cancelDate = null, - cancelName = null, - ediCode = null, - bizrno = null, - onClick = {}, - ), - ApprovedMedicineItemDto( - itemName = "탁센연질캡슐", - entpName = "(주)녹십자", - entpEngName = "GreenSipja", - medicineType = "일반의약품", - itemIngrName = "나프록센", - itemEngName = "Naproxen", - itemSeq = 0, - entpSeq = "iisque", - entpNo = "eius", - itemPermitDate = null, - induty = null, - prdlstStdrCode = null, - prductType = "consectetuer", - prductPrmisnNo = null, - itemIngrCnt = "quaerendum", - imgUrl = "http://www.bing.com/search?q=etiam", - permitKindCode = null, - cancelDate = null, - cancelName = null, - ediCode = null, - bizrno = null, - onClick = {}, - ), - ApprovedMedicineItemDto( - itemName = "탁센연질캡슐", - entpName = "(주)녹십자", - entpEngName = "GreenSipja", - medicineType = "일반의약품", - itemIngrName = "나프록센", - itemEngName = "Naproxen", - itemSeq = 0, - entpSeq = "iisque", - entpNo = "eius", - itemPermitDate = null, - induty = null, - prdlstStdrCode = null, - prductType = "consectetuer", - prductPrmisnNo = null, - itemIngrCnt = "quaerendum", - imgUrl = "http://www.bing.com/search?q=etiam", - permitKindCode = null, - cancelDate = null, - cancelName = null, - ediCode = null, - bizrno = null, - onClick = {}, - ), - ApprovedMedicineItemDto( - itemName = "탁센연질캡슐", - entpName = "(주)녹십자", - entpEngName = "GreenSipja", - medicineType = "일반의약품", - itemIngrName = "나프록센", - itemEngName = "Naproxen", - itemSeq = 0, - entpSeq = "iisque", - entpNo = "eius", - itemPermitDate = null, - induty = null, - prdlstStdrCode = null, - prductType = "consectetuer", - prductPrmisnNo = null, - itemIngrCnt = "quaerendum", - imgUrl = "http://www.bing.com/search?q=etiam", - permitKindCode = null, - cancelDate = null, - cancelName = null, - ediCode = null, - bizrno = null, - onClick = {}, - ), - ApprovedMedicineItemDto( - itemName = "탁센연질캡슐", - entpName = "(주)녹십자", - entpEngName = "GreenSipja", - medicineType = "일반의약품", - itemIngrName = "나프록센", - itemEngName = "Naproxen", - itemSeq = 0, - entpSeq = "iisque", - entpNo = "eius", - itemPermitDate = null, - induty = null, - prdlstStdrCode = null, - prductType = "consectetuer", - prductPrmisnNo = null, - itemIngrCnt = "quaerendum", - imgUrl = "http://www.bing.com/search?q=etiam", - permitKindCode = null, - cancelDate = null, - cancelName = null, - ediCode = null, - bizrno = null, - onClick = {}, - ), - )) + moreInterestedMedicineAdapter.submitList( + mutableListOf( + ApprovedMedicineItemDto( + itemName = "탁센연질캡슐", + entpName = "(주)녹십자", + entpEngName = "GreenSipja", + medicineType = "일반의약품", + itemIngrName = "나프록센", + itemEngName = "Naproxen", + itemSeq = 0, + entpSeq = "iisque", + entpNo = "eius", + itemPermitDate = null, + induty = null, + prdlstStdrCode = null, + prductType = "consectetuer", + prductPrmisnNo = null, + itemIngrCnt = "quaerendum", + imgUrl = "http://www.bing.com/search?q=etiam", + permitKindCode = null, + cancelDate = null, + cancelName = null, + ediCode = null, + bizrno = null, + onClick = {}, + ), + ApprovedMedicineItemDto( + itemName = "탁센연질캡슐", + entpName = "(주)녹십자", + entpEngName = "GreenSipja", + medicineType = "일반의약품", + itemIngrName = "나프록센", + itemEngName = "Naproxen", + itemSeq = 0, + entpSeq = "iisque", + entpNo = "eius", + itemPermitDate = null, + induty = null, + prdlstStdrCode = null, + prductType = "consectetuer", + prductPrmisnNo = null, + itemIngrCnt = "quaerendum", + imgUrl = "http://www.bing.com/search?q=etiam", + permitKindCode = null, + cancelDate = null, + cancelName = null, + ediCode = null, + bizrno = null, + onClick = {}, + ), + ApprovedMedicineItemDto( + itemName = "탁센연질캡슐", + entpName = "(주)녹십자", + entpEngName = "GreenSipja", + medicineType = "일반의약품", + itemIngrName = "나프록센", + itemEngName = "Naproxen", + itemSeq = 0, + entpSeq = "iisque", + entpNo = "eius", + itemPermitDate = null, + induty = null, + prdlstStdrCode = null, + prductType = "consectetuer", + prductPrmisnNo = null, + itemIngrCnt = "quaerendum", + imgUrl = "http://www.bing.com/search?q=etiam", + permitKindCode = null, + cancelDate = null, + cancelName = null, + ediCode = null, + bizrno = null, + onClick = {}, + ), + ApprovedMedicineItemDto( + itemName = "탁센연질캡슐", + entpName = "(주)녹십자", + entpEngName = "GreenSipja", + medicineType = "일반의약품", + itemIngrName = "나프록센", + itemEngName = "Naproxen", + itemSeq = 0, + entpSeq = "iisque", + entpNo = "eius", + itemPermitDate = null, + induty = null, + prdlstStdrCode = null, + prductType = "consectetuer", + prductPrmisnNo = null, + itemIngrCnt = "quaerendum", + imgUrl = "http://www.bing.com/search?q=etiam", + permitKindCode = null, + cancelDate = null, + cancelName = null, + ediCode = null, + bizrno = null, + onClick = {}, + ), + ApprovedMedicineItemDto( + itemName = "탁센연질캡슐", + entpName = "(주)녹십자", + entpEngName = "GreenSipja", + medicineType = "일반의약품", + itemIngrName = "나프록센", + itemEngName = "Naproxen", + itemSeq = 0, + entpSeq = "iisque", + entpNo = "eius", + itemPermitDate = null, + induty = null, + prdlstStdrCode = null, + prductType = "consectetuer", + prductPrmisnNo = null, + itemIngrCnt = "quaerendum", + imgUrl = "http://www.bing.com/search?q=etiam", + permitKindCode = null, + cancelDate = null, + cancelName = null, + ediCode = null, + bizrno = null, + onClick = {}, + ), + ) + ) + + } + private fun setBarStyle() = binding.apply { + systemBarStyler.changeMode( + topViews = listOf( + SystemBarStyler.ChangeView( + interestedMedicineListBar, + SystemBarStyler.SpacingType.PADDING + ) + ) + ) } } \ No newline at end of file diff --git a/feature/intro/src/main/java/com/android/mediproject/feature/intro/LoginFragment.kt b/feature/intro/src/main/java/com/android/mediproject/feature/intro/LoginFragment.kt index 8ed27f236..4c88f57bf 100644 --- a/feature/intro/src/main/java/com/android/mediproject/feature/intro/LoginFragment.kt +++ b/feature/intro/src/main/java/com/android/mediproject/feature/intro/LoginFragment.kt @@ -1,6 +1,7 @@ package com.android.mediproject.feature.intro +import android.content.Context import android.os.Bundle import android.view.View import android.widget.EditText @@ -11,10 +12,12 @@ import androidx.navigation.fragment.findNavController import com.android.mediproject.core.common.dialog.LoadingDialog import com.android.mediproject.core.common.network.Dispatcher import com.android.mediproject.core.common.network.MediDispatchers +import com.android.mediproject.core.common.uiutil.SystemBarStyler import com.android.mediproject.core.common.util.delayTextChangedCallback import com.android.mediproject.core.model.local.navargs.TOHOME import com.android.mediproject.core.model.local.navargs.TOMYPAGE import com.android.mediproject.core.ui.base.BaseFragment +import com.android.mediproject.core.ui.base.view.Bar import com.android.mediproject.feature.intro.databinding.FragmentLoginBinding import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.CoroutineDispatcher @@ -30,18 +33,36 @@ import repeatOnStarted import javax.inject.Inject @AndroidEntryPoint -class LoginFragment : BaseFragment(FragmentLoginBinding::inflate) { +class LoginFragment : + BaseFragment(FragmentLoginBinding::inflate) { override val fragmentViewModel: LoginViewModel by viewModels() - @Inject @Dispatcher(MediDispatchers.Default) lateinit var defaultDispatcher: CoroutineDispatcher + @Inject + @Dispatcher(MediDispatchers.Default) + lateinit var defaultDispatcher: CoroutineDispatcher + + @Inject + lateinit var systemBarStyler: SystemBarStyler private val mainScope = MainScope() private val jobs = mutableListOf() + + override fun onAttach(context: Context) { + super.onAttach(context) + systemBarStyler.setStyle( + SystemBarStyler.StatusBarColor.BLACK, + SystemBarStyler.NavigationBarColor.BLACK + ) + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + setBarStyle() + binding.apply { @@ -64,7 +85,10 @@ class LoginFragment : BaseFragment(Fragmen when (it) { is SignInState.Signing -> { // 로그인 중 - LoadingDialog.showLoadingDialog(requireActivity(), getString(R.string.signing)) + LoadingDialog.showLoadingDialog( + requireActivity(), + getString(R.string.signing) + ) } is SignInState.SuccessSignIn -> { @@ -73,11 +97,19 @@ class LoginFragment : BaseFragment(Fragmen toast(getString(R.string.signInSuccess)) when (fragmentViewModel.moveFlag.value) { - TOHOME -> findNavController().navigate("medilens://main/home_nav".toUri(), - NavOptions.Builder().setPopUpTo(R.id.loginFragment, true).build()) - TOMYPAGE -> findNavController().navigate("medilens://main/mypage_nav".toUri(), - NavOptions.Builder().setPopUpTo(R.id.loginFragment, true).build()) + TOHOME -> findNavController().navigate( + "medilens://main/home_nav".toUri(), + NavOptions.Builder().setPopUpTo(R.id.loginFragment, true) + .build() + ) + + TOMYPAGE -> findNavController().navigate( + "medilens://main/mypage_nav".toUri(), + NavOptions.Builder().setPopUpTo(R.id.loginFragment, true) + .build() + ) + } } @@ -112,6 +144,17 @@ class LoginFragment : BaseFragment(Fragmen } } + private fun setBarStyle() = binding.apply { + systemBarStyler.changeMode( + topViews = listOf( + SystemBarStyler.ChangeView( + loginBar, + SystemBarStyler.SpacingType.PADDING + ) + ) + ) + } + override fun onDestroyView() { mainScope.cancel() jobs.forEach { it.cancel() } @@ -120,9 +163,14 @@ class LoginFragment : BaseFragment(Fragmen private fun handleEvent(event: LoginViewModel.SignEvent) = when (event) { is LoginViewModel.SignEvent.SignIn -> { - fragmentViewModel.signIn(binding.loginEmail.getEditable(), + + + fragmentViewModel.signIn( + binding.loginEmail.getEditable(), binding.loginPassword.getEditable(), - binding.rememberEmailCB.isChecked) + binding.rememberEmailCB.isChecked + ) + } is LoginViewModel.SignEvent.SignUp -> findNavController().navigate(LoginFragmentDirections.actionLoginFragmentToSignUpFragment()) diff --git a/feature/intro/src/main/java/com/android/mediproject/feature/intro/SignUpFragment.kt b/feature/intro/src/main/java/com/android/mediproject/feature/intro/SignUpFragment.kt index 0bf7e9ee3..0558ab524 100644 --- a/feature/intro/src/main/java/com/android/mediproject/feature/intro/SignUpFragment.kt +++ b/feature/intro/src/main/java/com/android/mediproject/feature/intro/SignUpFragment.kt @@ -1,5 +1,6 @@ package com.android.mediproject.feature.intro +import android.content.Context import android.os.Bundle import android.view.View import android.widget.EditText @@ -10,6 +11,7 @@ import androidx.navigation.fragment.findNavController import com.android.mediproject.core.common.dialog.LoadingDialog import com.android.mediproject.core.common.network.Dispatcher import com.android.mediproject.core.common.network.MediDispatchers +import com.android.mediproject.core.common.uiutil.SystemBarStyler import com.android.mediproject.core.common.util.delayTextChangedCallback import com.android.mediproject.core.model.local.navargs.TOHOME import com.android.mediproject.core.model.local.navargs.TOMYPAGE @@ -38,14 +40,26 @@ class SignUpFragment : @Dispatcher(MediDispatchers.Default) lateinit var defaultDispatcher: CoroutineDispatcher + @Inject + lateinit var systemBarStyler: SystemBarStyler + private val mainScope = MainScope() private val jobs = mutableListOf() + override fun onAttach(context: Context) { + super.onAttach(context) + systemBarStyler.setStyle( + SystemBarStyler.StatusBarColor.BLACK, + SystemBarStyler.NavigationBarColor.BLACK + ) + } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + setBarStyle() + val moveFlag = arguments?.getInt("flag", TOHOME) fragmentViewModel.setMoveFlag(moveFlag ?: TOHOME) @@ -118,6 +132,17 @@ class SignUpFragment : } } + private fun setBarStyle() = binding.apply { + systemBarStyler.changeMode( + topViews = listOf( + SystemBarStyler.ChangeView( + signUpBar, + SystemBarStyler.SpacingType.PADDING + ) + ) + ) + } + override fun onDestroyView() { mainScope.cancel() jobs.forEach { it.cancel() } diff --git a/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/mypagemore/MyPageMoreDialogFragment.kt b/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/mypagemore/MyPageMoreDialogFragment.kt index b2d6a0fe9..5a9ce0696 100644 --- a/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/mypagemore/MyPageMoreDialogFragment.kt +++ b/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/mypagemore/MyPageMoreDialogFragment.kt @@ -51,7 +51,11 @@ class MyPageMoreDialogFragment(private val flag: DialogFlag) : DialogFragment() }.create() } - override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View = binding.root + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View = binding.root override fun getView(): View = binding.root @@ -78,7 +82,6 @@ class MyPageMoreDialogFragment(private val flag: DialogFlag) : DialogFragment() is DialogFlag.ChangeNickName -> { val newNickname = binding.dialogSubtitle1.getValue() fragmentViewModel.changeNickname(newNickname) - setFragmentResult(TAG, bundleOf(TAG to CHANGE_NICKNAME)) } is DialogFlag.ChangePassword -> { @@ -93,11 +96,23 @@ class MyPageMoreDialogFragment(private val flag: DialogFlag) : DialogFragment() } } - is MyPageMoreDialogViewModel.MyPageMoreDialogEvent.Toast -> Toast.makeText(requireContext(), event.message, Toast.LENGTH_SHORT) + is MyPageMoreDialogViewModel.MyPageMoreDialogEvent.Toast -> Toast.makeText( + requireContext(), + event.message, + Toast.LENGTH_SHORT + ) .show() is MyPageMoreDialogViewModel.MyPageMoreDialogEvent.CancelDialog -> dismiss() - is MyPageMoreDialogViewModel.MyPageMoreDialogEvent.WithdrawalComplete -> setFragmentResult(TAG, bundleOf(TAG to WITHDRAWAL)) + is MyPageMoreDialogViewModel.MyPageMoreDialogEvent.WithdrawalComplete -> setFragmentResult( + TAG, + bundleOf(TAG to WITHDRAWAL) + ) + + is MyPageMoreDialogViewModel.MyPageMoreDialogEvent.ChangeNicknameComplete -> setFragmentResult( + TAG, + bundleOf(TAG to CHANGE_NICKNAME) + ) } } @@ -167,13 +182,21 @@ class MyPageMoreDialogFragment(private val flag: DialogFlag) : DialogFragment() //회원 탈퇴 다이얼로그 is DialogFlag.Withdrawal -> { binding.apply { - val span = SpannableStringBuilder(getString(R.string.withdrawalDescription)).apply { - setSpan(ForegroundColorSpan(ContextCompat.getColor(requireContext(), com.android.mediproject.core.ui.R.color.red)), - 4, - 8, - Spannable.SPAN_INCLUSIVE_INCLUSIVE) - setSpan(UnderlineSpan(), 4, 8, Spannable.SPAN_INCLUSIVE_INCLUSIVE) - } + val span = + SpannableStringBuilder(getString(R.string.withdrawalDescription)).apply { + setSpan( + ForegroundColorSpan( + ContextCompat.getColor( + requireContext(), + com.android.mediproject.core.ui.R.color.red + ) + ), + 4, + 8, + Spannable.SPAN_INCLUSIVE_INCLUSIVE + ) + setSpan(UnderlineSpan(), 4, 8, Spannable.SPAN_INCLUSIVE_INCLUSIVE) + } completeButtonDisEnabled() dialogTitleTV.text = getString(R.string.withdrawal) dialogSubtitle1.apply { diff --git a/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/mypagemore/MyPageMoreDialogViewModel.kt b/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/mypagemore/MyPageMoreDialogViewModel.kt index fb3a9ef7a..30b5f6067 100644 --- a/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/mypagemore/MyPageMoreDialogViewModel.kt +++ b/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/mypagemore/MyPageMoreDialogViewModel.kt @@ -42,6 +42,7 @@ class MyPageMoreDialogViewModel @Inject constructor( fun cancelDialog() = event(MyPageMoreDialogEvent.CancelDialog) fun toast(message: String) = event(MyPageMoreDialogEvent.Toast(message)) fun withdrawalComplete() = event(MyPageMoreDialogEvent.WithdrawalComplete) + fun changeNicknameComplete() = event(MyPageMoreDialogEvent.ChangeNicknameComplete) fun changeNickname(newNickname: String) = viewModelScope.launch(ioDispatcher) { userUseCase.changeNickname(changeNicknameParameter = ChangeNicknameParameter(newNickname)) @@ -50,6 +51,7 @@ class MyPageMoreDialogViewModel @Inject constructor( onSuccess = { toast("닉네임 변경이 완료되었습니다.") }, onFailure = { toast("닉네임 변경에 실패하였습니다.") }) } + changeNicknameComplete() cancelDialog() } @@ -91,6 +93,7 @@ class MyPageMoreDialogViewModel @Inject constructor( object CompleteDialog : MyPageMoreDialogEvent() object CancelDialog : MyPageMoreDialogEvent() object WithdrawalComplete : MyPageMoreDialogEvent() + object ChangeNicknameComplete : MyPageMoreDialogEvent() data class Toast(val message: String) : MyPageMoreDialogEvent() } } \ No newline at end of file