From b64039bd283a4b4b0fe75db3c172dfd28c292e45 Mon Sep 17 00:00:00 2001 From: tgyuu-An Date: Wed, 7 Jun 2023 23:48:15 +0900 Subject: [PATCH 1/8] =?UTF-8?q?131=20Login,=20SignUp=20Fragment=20?= =?UTF-8?q?=EC=83=81=EB=8B=A8=EB=B0=94=20TopPadding?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../feature/intro/LoginFragment.kt | 59 ++++++++++++++++--- .../feature/intro/SignUpFragment.kt | 25 ++++++++ 2 files changed, 77 insertions(+), 7 deletions(-) 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 520610d21..dc176be5b 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,17 +33,34 @@ 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 { loginBtn.isEnabled = false val moveFlag = arguments?.getInt("flag", TOHOME) @@ -61,7 +81,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 -> { @@ -69,9 +92,18 @@ class LoginFragment : BaseFragment(Fragmen LoadingDialog.dismiss() 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()) + 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() + ) } } @@ -106,6 +138,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() } @@ -115,7 +158,9 @@ class LoginFragment : BaseFragment(Fragmen private fun handleEvent(event: LoginViewModel.SignEvent) = when (event) { is LoginViewModel.SignEvent.SignIn -> { fragmentViewModel.signIn( - binding.loginEmail.getEditable(), binding.loginPassword.getEditable(), binding.rememberEmailCB.isChecked + binding.loginEmail.getEditable(), + binding.loginPassword.getEditable(), + binding.rememberEmailCB.isChecked ) } 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 e0b42b832..db4cf8861 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) @@ -116,6 +130,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() } From 2ba57f331d646646fdc9abd7bf703ffc89d68e21 Mon Sep 17 00:00:00 2001 From: tgyuu-An Date: Wed, 7 Jun 2023 23:49:39 +0900 Subject: [PATCH 2/8] =?UTF-8?q?131=20=EC=A6=90=EA=B2=A8=EC=B0=BE=EA=B8=B0?= =?UTF-8?q?=20=EB=8D=94=EB=B3=B4=EA=B8=B0=20=EC=83=81=EB=8B=A8=EB=B0=94=20?= =?UTF-8?q?TopPadding?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MoreInterestedMedicineFragment.kt | 278 ++++++++++-------- 1 file changed, 155 insertions(+), 123 deletions(-) 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 From 215911e31a05add12990aae4dd78b23a16feca5d Mon Sep 17 00:00:00 2001 From: tgyuu-An Date: Wed, 7 Jun 2023 23:51:12 +0900 Subject: [PATCH 3/8] =?UTF-8?q?#131=20=EB=8C=93=EA=B8=80=20=EB=8D=94?= =?UTF-8?q?=EB=B3=B4=EA=B8=B0=20=EC=83=81=EB=8B=A8=EB=B0=94=20TopPadding?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mycommentslist/MyCommentsListFragment.kt | 36 ++++++++++++++++--- 1 file changed, 32 insertions(+), 4 deletions(-) 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 + ) ) ) } From a5c9a793eb6da9bc1d237a58c48c787a9fa3ad20 Mon Sep 17 00:00:00 2001 From: tgyuu-An Date: Thu, 8 Jun 2023 01:57:17 +0900 Subject: [PATCH 4/8] =?UTF-8?q?#139=20add=20clearMyAccountInfo=20=ED=95=A8?= =?UTF-8?q?=EC=88=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/datastore/AppDataStore.kt | 1 + .../core/datastore/AppDataStoreImpl.kt | 11 ++++- .../core/domain/user/UserUseCase.kt | 14 ++++-- .../feature/mypage/MyPageViewModel.kt | 4 +- .../mypagemore/MyPageMoreDialogFragment.kt | 45 ++++++++++++++----- .../mypagemore/MyPageMoreDialogViewModel.kt | 3 ++ 6 files changed, 61 insertions(+), 17 deletions(-) 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/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..0b058caab 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 @@ -22,23 +22,29 @@ class UserUseCase @Inject constructor( ) { 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 = { + appDataStore.clearMyAccountInfo() + Result.success(it) + }, onFailure = { Result.failure(it) }) }.collectLatest { trySend(it) } } diff --git a/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/MyPageViewModel.kt b/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/MyPageViewModel.kt index 0d8de10f9..238dfe8d7 100644 --- a/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/MyPageViewModel.kt +++ b/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/MyPageViewModel.kt @@ -75,7 +75,9 @@ class MyPageViewModel @Inject constructor( val loginMode get() = _loginMode.asStateFlow() fun loadTokens() = viewModelScope.launch { getTokenUseCase().collect { _token.value = it } } - fun loadUser() = viewModelScope.launch { userUseCase().collect { _user.value = it } } + fun loadUser() = viewModelScope.launch { userUseCase().collect { + log(it.toString()) + _user.value = it } } fun loadComments() = viewModelScope.launch { _myCommentsList.emit(dummy) } fun setLoginMode(loginMode: LoginMode) { _loginMode.value = loginMode } fun signOut() = viewModelScope.launch { signUseCase.signOut() } 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 From aeabf945875bb1a102d44b0386db0f5ce38bdf54 Mon Sep 17 00:00:00 2001 From: tgyuu-An Date: Thu, 8 Jun 2023 02:01:45 +0900 Subject: [PATCH 5/8] =?UTF-8?q?#139=20=ED=9A=8C=EC=9B=90=ED=83=88=ED=87=B4?= =?UTF-8?q?=20=EC=8B=9C=20=EB=A1=9C=EC=BB=AC=20=EB=8D=B0=EC=9D=B4=ED=84=B0?= =?UTF-8?q?=EB=B2=A0=EC=9D=B4=EC=8A=A4=20=ED=86=A0=ED=81=B0=EB=8F=84=20?= =?UTF-8?q?=EC=A7=80=EC=9B=8C=EC=A7=80=EB=8F=84=EB=A1=9D=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/android/mediproject/core/domain/user/UserUseCase.kt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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 0b058caab..fbf5a1a03 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,7 +20,8 @@ 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 -> @@ -43,6 +46,7 @@ class UserUseCase @Inject constructor( }).map { it.fold(onSuccess = { appDataStore.clearMyAccountInfo() + signRepository.signOut() Result.success(it) }, onFailure = { Result.failure(it) }) }.collectLatest { trySend(it) } From 34214198fe6fd62fa4dba2415384645c730f0391 Mon Sep 17 00:00:00 2001 From: tgyuu-An Date: Thu, 8 Jun 2023 02:10:13 +0900 Subject: [PATCH 6/8] =?UTF-8?q?#139=20=ED=95=A8=EC=88=98=20=EC=A0=9C?= =?UTF-8?q?=EC=9E=90=EB=A6=AC=EB=A1=9C=20=EB=8F=8C=EB=A0=A4=EB=86=93?= =?UTF-8?q?=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../android/mediproject/core/domain/user/UserUseCase.kt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) 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 fbf5a1a03..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 @@ -45,8 +45,6 @@ class UserUseCase @Inject constructor( this.email = email }).map { it.fold(onSuccess = { - appDataStore.clearMyAccountInfo() - signRepository.signOut() Result.success(it) }, onFailure = { Result.failure(it) }) }.collectLatest { trySend(it) } @@ -56,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 From 7dda297042454156cbdffa171bc3406ae7146d1a Mon Sep 17 00:00:00 2001 From: tgyuu-An Date: Thu, 8 Jun 2023 02:17:49 +0900 Subject: [PATCH 7/8] =?UTF-8?q?#139=20chore=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20=EB=A1=9C=EA=B7=B8=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/android/mediproject/feature/mypage/MyPageViewModel.kt | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/MyPageViewModel.kt b/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/MyPageViewModel.kt index 238dfe8d7..0d8de10f9 100644 --- a/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/MyPageViewModel.kt +++ b/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/MyPageViewModel.kt @@ -75,9 +75,7 @@ class MyPageViewModel @Inject constructor( val loginMode get() = _loginMode.asStateFlow() fun loadTokens() = viewModelScope.launch { getTokenUseCase().collect { _token.value = it } } - fun loadUser() = viewModelScope.launch { userUseCase().collect { - log(it.toString()) - _user.value = it } } + fun loadUser() = viewModelScope.launch { userUseCase().collect { _user.value = it } } fun loadComments() = viewModelScope.launch { _myCommentsList.emit(dummy) } fun setLoginMode(loginMode: LoginMode) { _loginMode.value = loginMode } fun signOut() = viewModelScope.launch { signUseCase.signOut() } From 7b6fca4115f8c871edfe6837acceb873e4b8f6bd Mon Sep 17 00:00:00 2001 From: tgyuu-An Date: Thu, 8 Jun 2023 02:38:26 +0900 Subject: [PATCH 8/8] =?UTF-8?q?#139=20refact=20removeTokens()=20=EB=A1=9C?= =?UTF-8?q?=EC=A7=81=20=EB=B3=B4=EC=99=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../android/mediproject/core/datastore/TokenDataSourceImpl.kt | 1 + .../com/android/mediproject/core/datastore/TokenServer.kt | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) 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 23790ac4f..0a14709e7 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 @@ -19,7 +20,8 @@ class TokenServerImpl @Inject constructor() : TokenServer { */ override val currentTokens: EndpointTokenState get() { - val token = tokens.replayCache.firstOrNull() + val token = tokens.replayCache.lastOrNull() + Log.d("wap","TokenServer currentTokens () : token값 : "+token.toString()) return if (token == null) { EndpointTokenState.NoToken } else {