diff --git a/core/common/src/main/java/com/android/mediproject/core/common/mapper/MedicineInfoMapper.kt b/core/common/src/main/java/com/android/mediproject/core/common/mapper/MedicineInfoMapper.kt index 29e702f5e..e4d76abbd 100644 --- a/core/common/src/main/java/com/android/mediproject/core/common/mapper/MedicineInfoMapper.kt +++ b/core/common/src/main/java/com/android/mediproject/core/common/mapper/MedicineInfoMapper.kt @@ -176,36 +176,4 @@ class MedicineInfoMapper @Inject constructor() { dataMap.clear() result } - - fun initHeaderSpan(context: Context, text: String): SpannableStringBuilder { - return SpannableStringBuilder(text).apply { - val underline1Idx = - text.indexOf(context.getString(R.string.highlightWord1)) to text.indexOf(context.getString(R.string.highlightWord1)) + 2 - - setSpan(UnderlineSpan(), underline1Idx.first, underline1Idx.second, Spanned.SPAN_INCLUSIVE_INCLUSIVE) - setSpan(StyleSpan(Typeface.BOLD), underline1Idx.first, underline1Idx.second, Spanned.SPAN_INCLUSIVE_INCLUSIVE) - setSpan(RelativeSizeSpan(TEXT_SIZE_PERCENT), underline1Idx.first, underline1Idx.second, Spanned.SPAN_INCLUSIVE_INCLUSIVE) - - val underline2Idx = - text.indexOf(context.getString(R.string.highlightWord2)) to text.indexOf(context.getString(R.string.highlightWord2)) + 2 - - setSpan(UnderlineSpan(), underline2Idx.first, underline2Idx.second, Spanned.SPAN_INCLUSIVE_INCLUSIVE) - setSpan(StyleSpan(Typeface.BOLD), underline2Idx.first, underline2Idx.second, Spanned.SPAN_INCLUSIVE_INCLUSIVE) - setSpan(RelativeSizeSpan(TEXT_SIZE_PERCENT), underline2Idx.first, underline2Idx.second, Spanned.SPAN_INCLUSIVE_INCLUSIVE) - } - } - - fun getNoHistorySpan(context: Context): SpannableStringBuilder { - val text = context.getString(R.string.failedLoading) - val highLightIndex = text.indexOf(context.getString(R.string.highlightWord3)) - return SpannableStringBuilder(text).apply { - setSpan( - ForegroundColorSpan(ContextCompat.getColor(context, R.color.main)), - highLightIndex, - highLightIndex + 3, - Spannable.SPAN_INCLUSIVE_INCLUSIVE, - ) - setSpan(UnderlineSpan(), highLightIndex, highLightIndex + 3, Spannable.SPAN_INCLUSIVE_INCLUSIVE) - } - } } diff --git a/core/common/src/main/java/com/android/mediproject/core/common/mapper/SpanProvider.kt b/core/common/src/main/java/com/android/mediproject/core/common/mapper/SpanProvider.kt new file mode 100644 index 000000000..0d990937d --- /dev/null +++ b/core/common/src/main/java/com/android/mediproject/core/common/mapper/SpanProvider.kt @@ -0,0 +1,101 @@ +package com.android.mediproject.core.common.mapper + +import android.content.Context +import android.graphics.Typeface +import android.text.Spannable +import android.text.SpannableStringBuilder +import android.text.Spanned +import android.text.style.ForegroundColorSpan +import android.text.style.RelativeSizeSpan +import android.text.style.StyleSpan +import android.text.style.UnderlineSpan +import androidx.core.content.ContentProviderCompat.requireContext +import androidx.core.content.ContextCompat +import com.android.mediproject.core.common.R +import javax.inject.Inject +import javax.inject.Singleton + +@Singleton +class SpanProvider @Inject constructor() { + companion object { + private const val TEXT_SIZE_PERCENT = 1.2F + } + + fun homeInitHeaderSpan(context: Context, text: String): SpannableStringBuilder { + return SpannableStringBuilder(text).apply { + val underline1Idx = + text.indexOf(context.getString(R.string.highlightWord1)) to text.indexOf(context.getString(R.string.highlightWord1)) + 2 + + setSpan(UnderlineSpan(), underline1Idx.first, underline1Idx.second, Spanned.SPAN_INCLUSIVE_INCLUSIVE) + setSpan(StyleSpan(Typeface.BOLD), underline1Idx.first, underline1Idx.second, Spanned.SPAN_INCLUSIVE_INCLUSIVE) + setSpan( + RelativeSizeSpan(TEXT_SIZE_PERCENT), + underline1Idx.first, + underline1Idx.second, + Spanned.SPAN_INCLUSIVE_INCLUSIVE, + ) + + val underline2Idx = + text.indexOf(context.getString(R.string.highlightWord2)) to text.indexOf(context.getString(R.string.highlightWord2)) + 2 + + setSpan(UnderlineSpan(), underline2Idx.first, underline2Idx.second, Spanned.SPAN_INCLUSIVE_INCLUSIVE) + setSpan(StyleSpan(Typeface.BOLD), underline2Idx.first, underline2Idx.second, Spanned.SPAN_INCLUSIVE_INCLUSIVE) + setSpan( + RelativeSizeSpan(TEXT_SIZE_PERCENT), + underline2Idx.first, + underline2Idx.second, + Spanned.SPAN_INCLUSIVE_INCLUSIVE, + ) + } + } + + fun penaltyGetNoHistorySpan(context: Context): SpannableStringBuilder { + val text = context.getString(R.string.failedLoading) + val highLightIndex = text.indexOf(context.getString(R.string.highlightWord3)) + return SpannableStringBuilder(text).apply { + setSpan( + ForegroundColorSpan(ContextCompat.getColor(context, R.color.main)), + highLightIndex, + highLightIndex + 3, + Spannable.SPAN_INCLUSIVE_INCLUSIVE, + ) + setSpan(UnderlineSpan(), highLightIndex, highLightIndex + 3, Spannable.SPAN_INCLUSIVE_INCLUSIVE) + } + } + + fun myPageSetNoShowCommentListSpan(context: Context): SpannableStringBuilder { + return SpannableStringBuilder(context.getString(R.string.noMyComment)).apply { + setSpan( + ForegroundColorSpan( + ContextCompat.getColor( + context, + R.color.main, + ), + ), + 7, 9, Spannable.SPAN_INCLUSIVE_INCLUSIVE, + ) + setSpan( + UnderlineSpan(), + 7, + 9, + Spannable.SPAN_INCLUSIVE_INCLUSIVE, + ) + } + } + + fun myPageSetGuestModeScreenSpan(context: Context): SpannableStringBuilder { + return SpannableStringBuilder(context.getString(R.string.guestDescription)).apply { + setSpan( + ForegroundColorSpan( + ContextCompat.getColor( + context, + R.color.main, + ), + ), + 15, 18, + Spannable.SPAN_EXCLUSIVE_EXCLUSIVE, + ) + setSpan(UnderlineSpan(), 15, 18, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) + } + } +} diff --git a/core/common/src/main/res/values/strings.xml b/core/common/src/main/res/values/strings.xml index 5aab4a6ea..7d8daf472 100644 --- a/core/common/src/main/res/values/strings.xml +++ b/core/common/src/main/res/values/strings.xml @@ -64,9 +64,13 @@ 인터넷 연결이 필요합니다. + 찾고 소통 식약처로 부터 데이터를 불러오는데 실패했습니다. 데이터 + + 내가 작성한 댓글이 없습니다. + 로그인하여 다른 사용자들과 \n소통을 즐겨보세요 ! diff --git a/core/domain/src/main/java/com/android/mediproject/core/domain/GetUserUseCase.kt b/core/domain/src/main/java/com/android/mediproject/core/domain/GetUserUseCase.kt index 2b596d585..bfe8c27cd 100644 --- a/core/domain/src/main/java/com/android/mediproject/core/domain/GetUserUseCase.kt +++ b/core/domain/src/main/java/com/android/mediproject/core/domain/GetUserUseCase.kt @@ -12,7 +12,7 @@ class GetUserUseCase @Inject constructor(private val appDataStore: AppDataStore) suspend operator fun invoke(): Flow = channelFlow { appDataStore.nickName.collect { nickName -> Log.d("wap", nickName) - trySend(User(nickName = nickName)) + trySend(User(nickName = nickName,"")) } } } diff --git a/feature/home/src/main/java/com/android/mediproject/feature/home/HomeFragment.kt b/feature/home/src/main/java/com/android/mediproject/feature/home/HomeFragment.kt index a3b898df0..06c16f58f 100644 --- a/feature/home/src/main/java/com/android/mediproject/feature/home/HomeFragment.kt +++ b/feature/home/src/main/java/com/android/mediproject/feature/home/HomeFragment.kt @@ -7,6 +7,7 @@ import androidx.core.os.bundleOf import androidx.fragment.app.viewModels import androidx.navigation.fragment.findNavController import com.android.mediproject.core.common.mapper.MedicineInfoMapper +import com.android.mediproject.core.common.mapper.SpanProvider import com.android.mediproject.core.common.util.SystemBarStyler import com.android.mediproject.core.common.viewmodel.repeatOnStarted import com.android.mediproject.core.ui.base.BaseFragment @@ -28,7 +29,7 @@ class HomeFragment : BaseFragment(FragmentHo @Inject lateinit var systemBarStyler: SystemBarStyler - @Inject lateinit var medicineInfoMapper: MedicineInfoMapper + @Inject lateinit var spanProvider: SpanProvider override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) @@ -132,7 +133,7 @@ class HomeFragment : BaseFragment(FragmentHo private fun setHeaderText() { val span: SpannableStringBuilder viewLifecycleOwner.apply { - span = medicineInfoMapper.initHeaderSpan(requireContext(), getString(R.string.headerTextOnHome)) + span = spanProvider.homeInitHeaderSpan(requireContext(), getString(R.string.headerTextOnHome)) } binding.headerText.text = span } diff --git a/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/MyPageFragment.kt b/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/MyPageFragment.kt index 853a6ce85..9ec6ee8f1 100644 --- a/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/MyPageFragment.kt +++ b/feature/mypage/src/main/java/com/android/mediproject/feature/mypage/MyPageFragment.kt @@ -9,6 +9,7 @@ import android.view.View import androidx.core.content.ContextCompat import androidx.fragment.app.viewModels import androidx.recyclerview.widget.LinearLayoutManager +import com.android.mediproject.core.common.mapper.SpanProvider import com.android.mediproject.core.common.util.SystemBarStyler import com.android.mediproject.core.common.viewmodel.UiState import com.android.mediproject.core.model.token.CurrentTokens @@ -30,6 +31,9 @@ class MyPageFragment : @Inject lateinit var systemBarStyler: SystemBarStyler + @Inject + lateinit var spanProvider: SpanProvider + override val fragmentViewModel: MyPageViewModel by viewModels() private val myCommentListAdapter: MyPageMyCommentAdapter by lazy { MyPageMyCommentAdapter() } private var myPageMoreBottomSheet: MyPageMoreBottomSheetFragment? = null @@ -91,21 +95,7 @@ class MyPageFragment : } private fun setGuestModeScreenSpan(): SpannableStringBuilder { - val span = - SpannableStringBuilder(getString(com.android.mediproject.feature.mypage.R.string.guestDescription)).apply { - setSpan( - ForegroundColorSpan( - ContextCompat.getColor( - requireContext(), - R.color.main, - ), - ), - 15, 18, - Spannable.SPAN_EXCLUSIVE_EXCLUSIVE, - ) - setSpan(UnderlineSpan(), 15, 18, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) - } - return span + return spanProvider.myPageSetGuestModeScreenSpan(requireContext()) } private fun setGuestModeScreenVisible() = binding.apply { @@ -253,25 +243,7 @@ class MyPageFragment : } private fun setNoShowCommentListSpan(): SpannableStringBuilder { - val span = - SpannableStringBuilder(getString(com.android.mediproject.feature.mypage.R.string.noMyComment)).apply { - setSpan( - ForegroundColorSpan( - ContextCompat.getColor( - requireContext(), - R.color.main, - ), - ), - 7, 9, Spannable.SPAN_INCLUSIVE_INCLUSIVE, - ) - setSpan( - UnderlineSpan(), - 7, - 9, - Spannable.SPAN_INCLUSIVE_INCLUSIVE, - ) - } - return span + return spanProvider.myPageSetNoShowCommentListSpan(requireContext()) } private fun setNoShowCommentListVisible() = binding.apply { diff --git a/feature/mypage/src/main/res/values/strings.xml b/feature/mypage/src/main/res/values/strings.xml index fb3953a95..0b540664d 100644 --- a/feature/mypage/src/main/res/values/strings.xml +++ b/feature/mypage/src/main/res/values/strings.xml @@ -2,10 +2,8 @@ 즐겨찾기 목록 내가 작성한 댓글 목록 게스트 모드 - 로그인하여 다른 사용자들과 \n소통을 즐겨보세요 ! 로그인 회원가입 - 내가 작성한 댓글이 없습니다. 닉네임 변경 비밀번호 변경 diff --git a/feature/news/src/main/java/com/android/mediproject/feature/news/penalties/recentpenaltylist/RecentPenaltyListFragment.kt b/feature/news/src/main/java/com/android/mediproject/feature/news/penalties/recentpenaltylist/RecentPenaltyListFragment.kt index 6c4aeac5f..6d81005d1 100644 --- a/feature/news/src/main/java/com/android/mediproject/feature/news/penalties/recentpenaltylist/RecentPenaltyListFragment.kt +++ b/feature/news/src/main/java/com/android/mediproject/feature/news/penalties/recentpenaltylist/RecentPenaltyListFragment.kt @@ -5,6 +5,7 @@ import android.view.View import androidx.fragment.app.viewModels import androidx.navigation.fragment.findNavController import com.android.mediproject.core.common.mapper.MedicineInfoMapper +import com.android.mediproject.core.common.mapper.SpanProvider import com.android.mediproject.core.common.util.deepNavigate import com.android.mediproject.core.common.util.navigateByDeepLink import com.android.mediproject.core.common.viewmodel.UiState @@ -29,7 +30,7 @@ class RecentPenaltyListFragment : lateinit var penaltyListAdapter: PenaltyListAdapter @Inject - lateinit var medicineInfoMapper: MedicineInfoMapper + lateinit var spanProvider: SpanProvider override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) @@ -46,7 +47,7 @@ class RecentPenaltyListFragment : } repeatOnStarted { eventFlow.collect { event -> handleEvent(event) } } } - noHistoryTextView.text = medicineInfoMapper.getNoHistorySpan(requireContext()) + noHistoryTextView.text = spanProvider.penaltyGetNoHistorySpan(requireContext()) } setRecyclerView() }