From 78687a7dfeebd172c3693d33f0abebbb83ecef46 Mon Sep 17 00:00:00 2001 From: leeseokchan00 <112953135+leeseokchan00@users.noreply.github.com> Date: Wed, 6 Nov 2024 21:53:57 +0900 Subject: [PATCH 1/3] [refactor] #185 refactor read icon --- .../src/main/res/drawable/ic_read_after_24.xml | 8 ++++++-- .../src/main/res/drawable/ic_read_before_24.xml | 13 +++++++++++++ .../java/org/sopt/clip/webview/WebViewFragment.kt | 2 +- .../src/main/res/drawable/ic_read_before_24.xml | 9 --------- feature/clip/src/main/res/drawable/ic_share_24.xml | 9 +++++++++ .../clip/src/main/res/layout/fragment_webview.xml | 13 ++++++++++++- 6 files changed, 41 insertions(+), 13 deletions(-) create mode 100644 core/designsystem/src/main/res/drawable/ic_read_before_24.xml delete mode 100644 feature/clip/src/main/res/drawable/ic_read_before_24.xml create mode 100644 feature/clip/src/main/res/drawable/ic_share_24.xml diff --git a/core/designsystem/src/main/res/drawable/ic_read_after_24.xml b/core/designsystem/src/main/res/drawable/ic_read_after_24.xml index a6e13179..7dd2fa37 100644 --- a/core/designsystem/src/main/res/drawable/ic_read_after_24.xml +++ b/core/designsystem/src/main/res/drawable/ic_read_after_24.xml @@ -4,6 +4,10 @@ android:viewportWidth="24" android:viewportHeight="24"> + android:pathData="M15,13L11,17L9,15M19,9H16.2C15.08,9 14.52,9 14.092,8.782C13.715,8.59 13.41,8.284 13.218,7.908C13,7.48 13,6.92 13,5.8V3M19,17.8V9.325C19,8.836 19,8.592 18.944,8.362C18.895,8.157 18.815,7.962 18.705,7.783C18.581,7.582 18.409,7.409 18.063,7.063L14.938,3.937C14.592,3.591 14.419,3.418 14.217,3.295C14.038,3.185 13.843,3.104 13.639,3.055C13.409,3 13.164,3 12.675,3H8.2C7.08,3 6.52,3 6.092,3.218C5.715,3.41 5.41,3.716 5.218,4.092C5,4.52 5,5.08 5,6.2V17.8C5,18.92 5,19.48 5.218,19.908C5.41,20.284 5.715,20.59 6.092,20.782C6.52,21 7.08,21 8.2,21H15.8C16.92,21 17.48,21 17.908,20.782C18.284,20.59 18.59,20.284 18.782,19.908C19,19.48 19,18.92 19,17.8Z" + android:strokeLineJoin="round" + android:strokeWidth="2" + android:fillColor="#00000000" + android:strokeColor="#F05A39" + android:strokeLineCap="round"/> diff --git a/core/designsystem/src/main/res/drawable/ic_read_before_24.xml b/core/designsystem/src/main/res/drawable/ic_read_before_24.xml new file mode 100644 index 00000000..2dbf41ee --- /dev/null +++ b/core/designsystem/src/main/res/drawable/ic_read_before_24.xml @@ -0,0 +1,13 @@ + + + diff --git a/feature/clip/src/main/java/org/sopt/clip/webview/WebViewFragment.kt b/feature/clip/src/main/java/org/sopt/clip/webview/WebViewFragment.kt index 4b01e567..afebaff4 100644 --- a/feature/clip/src/main/java/org/sopt/clip/webview/WebViewFragment.kt +++ b/feature/clip/src/main/java/org/sopt/clip/webview/WebViewFragment.kt @@ -71,7 +71,7 @@ class WebViewFragment : BindingFragment({ FragmentWebvie } false -> { - binding.ivRead.setImageResource(R.drawable.ic_read_before_24) + binding.ivRead.setImageResource(org.sopt.mainfeature.R.drawable.ic_read_before_24) if (isPatched) requireActivity().linkMindSnackBar(binding.clBottomBar, "열람 취소") } } diff --git a/feature/clip/src/main/res/drawable/ic_read_before_24.xml b/feature/clip/src/main/res/drawable/ic_read_before_24.xml deleted file mode 100644 index 15cc7f2e..00000000 --- a/feature/clip/src/main/res/drawable/ic_read_before_24.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/feature/clip/src/main/res/drawable/ic_share_24.xml b/feature/clip/src/main/res/drawable/ic_share_24.xml new file mode 100644 index 00000000..fafa2bd0 --- /dev/null +++ b/feature/clip/src/main/res/drawable/ic_share_24.xml @@ -0,0 +1,9 @@ + + + diff --git a/feature/clip/src/main/res/layout/fragment_webview.xml b/feature/clip/src/main/res/layout/fragment_webview.xml index b20fa072..e73c3b0e 100644 --- a/feature/clip/src/main/res/layout/fragment_webview.xml +++ b/feature/clip/src/main/res/layout/fragment_webview.xml @@ -108,11 +108,22 @@ android:layout_height="wrap_content" android:padding="8dp" android:src="@drawable/ic_read_before_24" - app:layout_constraintEnd_toStartOf="@+id/iv_internet" + app:layout_constraintEnd_toStartOf="@+id/iv_shared" app:layout_constraintHorizontal_bias="0.5" app:layout_constraintStart_toEndOf="@+id/iv_next" app:layout_constraintTop_toTopOf="parent" /> + + Date: Wed, 6 Nov 2024 22:46:29 +0900 Subject: [PATCH 2/3] [feat] #185 link share --- .../java/org/sopt/clip/webview/WebViewFragment.kt | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/feature/clip/src/main/java/org/sopt/clip/webview/WebViewFragment.kt b/feature/clip/src/main/java/org/sopt/clip/webview/WebViewFragment.kt index afebaff4..e225dac6 100644 --- a/feature/clip/src/main/java/org/sopt/clip/webview/WebViewFragment.kt +++ b/feature/clip/src/main/java/org/sopt/clip/webview/WebViewFragment.kt @@ -20,7 +20,6 @@ import dagger.hilt.android.AndroidEntryPoint import designsystem.components.toast.linkMindSnackBar import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach -import org.sopt.clip.R import org.sopt.clip.databinding.FragmentWebviewBinding import org.sopt.ui.base.BindingFragment import org.sopt.ui.context.hideKeyboard @@ -83,6 +82,7 @@ class WebViewFragment : BindingFragment({ FragmentWebvie // initReadBtnClickLister() initNavigationBtnClickListener() initBrowserBtnClickListener() + initShareBtnClickListener() initEditorActionListener() } @@ -196,6 +196,17 @@ class WebViewFragment : BindingFragment({ FragmentWebvie } } + private fun initShareBtnClickListener(){ + binding.ivShared.onThrottleClick { + val toasterShareIntent = Intent().apply { + action = Intent.ACTION_SEND + putExtra(Intent.EXTRA_TEXT, args.site) + type = "text/plain" + } + startActivity(Intent.createChooser(toasterShareIntent,null)) + } + } + private fun initBrowserBtnClickListener() { binding.ivInternet.onThrottleClick { val url = binding.wbClip.url From e0add560219cd40b15b159cb1ba89e28d9b072d5 Mon Sep 17 00:00:00 2001 From: leeseokchan00 <112953135+leeseokchan00@users.noreply.github.com> Date: Thu, 7 Nov 2024 01:06:33 +0900 Subject: [PATCH 3/3] [refactor] #185 refactor --- .../clip/clipchange/ClipChangeFragment.kt | 21 +++++++++++++++---- .../sopt/clip/cliplink/ClipLinkViewModel.kt | 10 +++++++++ .../org/sopt/clip/webview/WebViewFragment.kt | 4 ++-- .../main/java/org/sopt/home/HomeFragment.kt | 2 +- .../src/main/res/layout/fragment_home.xml | 3 ++- 5 files changed, 32 insertions(+), 8 deletions(-) diff --git a/feature/clip/src/main/java/org/sopt/clip/clipchange/ClipChangeFragment.kt b/feature/clip/src/main/java/org/sopt/clip/clipchange/ClipChangeFragment.kt index d6b364a9..caa58d59 100644 --- a/feature/clip/src/main/java/org/sopt/clip/clipchange/ClipChangeFragment.kt +++ b/feature/clip/src/main/java/org/sopt/clip/clipchange/ClipChangeFragment.kt @@ -32,6 +32,7 @@ class ClipChangeFragment : getCategoryAll() collectClipState(args) initCloseButtonClickListener() + initNextButtonClickListener() } private fun getCategoryAll() { @@ -76,21 +77,33 @@ class ClipChangeFragment : list.onEach { it.isSelected = false } list[index].isSelected = true binding.btnClipChangeSelectNext.state = LinkMindButtonState.ENABLE + viewModel.updateSelectedCategoryState(toastId, newClipId, true) } else { list.onEach { it.isSelected = false } binding.btnClipChangeSelectNext.state = LinkMindButtonState.DISABLE + viewModel.updateSelectedCategoryState(toastId, newClipId, false) } - - initNextButtonClickListener(toastId, newClipId) } - private fun initNextButtonClickListener(toastId: Long, newClipId: Long) { + private fun initNextButtonClickListener() { binding.btnClipChangeSelectNext.btnClick { - viewModel.patchLinkCategory(toastId = toastId, categoryId = newClipId) + collectSelectedCategoryState() findNavController().popBackStack() } } + private fun collectSelectedCategoryState() { + viewModel.selectedCategory.flowWithLifecycle(viewLifeCycle).onEach { state -> + when (state) { + is UiState.Success -> { + viewModel.patchLinkCategory(toastId = state.data.first, categoryId = state.data.second) + } + + else -> {} + } + }.launchIn(viewLifeCycleScope) + } + private fun initCloseButtonClickListener() { binding.ivClipChangeClose.onThrottleClick { findNavController().popBackStack() diff --git a/feature/clip/src/main/java/org/sopt/clip/cliplink/ClipLinkViewModel.kt b/feature/clip/src/main/java/org/sopt/clip/cliplink/ClipLinkViewModel.kt index 9d90c454..a792f120 100644 --- a/feature/clip/src/main/java/org/sopt/clip/cliplink/ClipLinkViewModel.kt +++ b/feature/clip/src/main/java/org/sopt/clip/cliplink/ClipLinkViewModel.kt @@ -42,6 +42,9 @@ class ClipLinkViewModel @Inject constructor( private val _categoryState = MutableStateFlow>>(UiState.Empty) val categoryState: StateFlow>> = _categoryState.asStateFlow() + private val _selectedCategory = MutableStateFlow>>(UiState.Empty) + val selectedCategory: StateFlow>> = _selectedCategory.asStateFlow() + private val _patchLinkCategory = MutableStateFlow>(UiState.Empty) val patchLinkCategory: StateFlow> = _patchLinkCategory.asStateFlow() @@ -99,6 +102,13 @@ class ClipLinkViewModel @Inject constructor( } } + fun updateSelectedCategoryState(toastId: Long, newClipId: Long, isSelected: Boolean) = viewModelScope.launch { + when (isSelected) { + true -> _selectedCategory.emit(UiState.Success(Pair(toastId, newClipId))) + false -> _selectedCategory.emit(UiState.Empty) + } + } + fun initState() { _linkState.value = UiState.Empty _patchLinkCategory.value = UiState.Empty diff --git a/feature/clip/src/main/java/org/sopt/clip/webview/WebViewFragment.kt b/feature/clip/src/main/java/org/sopt/clip/webview/WebViewFragment.kt index e225dac6..e7b183a3 100644 --- a/feature/clip/src/main/java/org/sopt/clip/webview/WebViewFragment.kt +++ b/feature/clip/src/main/java/org/sopt/clip/webview/WebViewFragment.kt @@ -196,14 +196,14 @@ class WebViewFragment : BindingFragment({ FragmentWebvie } } - private fun initShareBtnClickListener(){ + private fun initShareBtnClickListener() { binding.ivShared.onThrottleClick { val toasterShareIntent = Intent().apply { action = Intent.ACTION_SEND putExtra(Intent.EXTRA_TEXT, args.site) type = "text/plain" } - startActivity(Intent.createChooser(toasterShareIntent,null)) + startActivity(Intent.createChooser(toasterShareIntent, null)) } } diff --git a/feature/home/src/main/java/org/sopt/home/HomeFragment.kt b/feature/home/src/main/java/org/sopt/home/HomeFragment.kt index 2b58bee4..cc33baea 100644 --- a/feature/home/src/main/java/org/sopt/home/HomeFragment.kt +++ b/feature/home/src/main/java/org/sopt/home/HomeFragment.kt @@ -35,6 +35,7 @@ class HomeFragment : BindingFragment({ FragmentHomeBinding. navigateToSetting() navigateToSearch() navigateToAllClip() + viewModel.checkMarketUpdateState() } private fun initView() { @@ -89,7 +90,6 @@ class HomeFragment : BindingFragment({ FragmentHomeBinding. getRecentSavedClip() getWeekBestLink() getPopupListInfo() - checkMarketUpdateState() } } diff --git a/feature/home/src/main/res/layout/fragment_home.xml b/feature/home/src/main/res/layout/fragment_home.xml index 3958f0ef..859fd0d7 100644 --- a/feature/home/src/main/res/layout/fragment_home.xml +++ b/feature/home/src/main/res/layout/fragment_home.xml @@ -194,8 +194,9 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_arrow_black_svg" - android:paddingBottom="7dp" + android:paddingStart="40dp" android:paddingEnd="26dp" + android:paddingVertical="7dp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintBottom_toBottomOf="@id/tv_home_user_clip_name"/>