From f70218e609d53d8931229e20a1c1d59d6e9702c6 Mon Sep 17 00:00:00 2001 From: leeseokchan00 <112953135+leeseokchan00@users.noreply.github.com> Date: Fri, 20 Dec 2024 20:48:35 +0900 Subject: [PATCH 1/2] [feat] #193 update version code --- app/build.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index f0d4aa53..93c484e6 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -10,8 +10,8 @@ android { defaultConfig { applicationId = "org.sopt.linkmind" - versionCode = 11 - versionName = "1.1.0" + versionCode = 12 + versionName = "1.2.0" } viewBinding.enable = true buildTypes { From 08e50d6262d620a1b146a4d5844af515f14bee3d Mon Sep 17 00:00:00 2001 From: leeseokchan00 <112953135+leeseokchan00@users.noreply.github.com> Date: Tue, 31 Dec 2024 08:04:10 +0900 Subject: [PATCH 2/2] [refactor] #193 fix tooltip visibl --- .../clip/DeleteLinkBottomSheetFragment.kt | 6 +- .../sopt/clip/cliplink/ClipLinkViewModel.kt | 15 +- .../org/sopt/clip/webview/WebViewViewModel.kt | 12 +- .../fragment_delete_link_bottom_sheet.xml | 179 +++++++++--------- .../main/java/org/sopt/home/HomeViewModel.kt | 15 +- .../sopt/login/onboarding/LoginActivity.kt | 1 - .../org/sopt/maincontainer/MainViewModel.kt | 11 +- 7 files changed, 119 insertions(+), 120 deletions(-) diff --git a/feature/clip/src/main/java/org/sopt/clip/DeleteLinkBottomSheetFragment.kt b/feature/clip/src/main/java/org/sopt/clip/DeleteLinkBottomSheetFragment.kt index b0594413..7ce9ab2b 100644 --- a/feature/clip/src/main/java/org/sopt/clip/DeleteLinkBottomSheetFragment.kt +++ b/feature/clip/src/main/java/org/sopt/clip/DeleteLinkBottomSheetFragment.kt @@ -12,9 +12,9 @@ import org.sopt.ui.view.onThrottleClick class DeleteLinkBottomSheetFragment() : BindingBottomSheetDialogFragment({ FragmentDeleteLinkBottomSheetBinding.inflate(it) }) { - var clipId: Long? = null - var isFullClipSize: Boolean? = null - var tooltip: Boolean? = null + private var clipId: Long? = null + private var isFullClipSize: Boolean? = null + private var tooltip: Boolean? = null private var handleDelete: () -> Unit = {} private var handleChange: () -> Unit = {} private var handleModify: () -> Unit = {} 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 803a15b5..9a588752 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 @@ -11,7 +11,6 @@ import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.first import kotlinx.coroutines.launch -import org.sopt.clip.SelectedToggle import org.sopt.datastore.datastore.SecurityDataStore import org.sopt.domain.category.category.usecase.GetCategoryAllUseCase import org.sopt.domain.category.category.usecase.GetCategoryLinkUseCase @@ -53,27 +52,27 @@ class ClipLinkViewModel @Inject constructor( private val _patchLinkCategory = MutableStateFlow>(UiState.Empty) val patchLinkCategory: StateFlow> = _patchLinkCategory.asStateFlow() - var toggleSelectedPast: SelectedToggle = SelectedToggle.ALL init { showThenHide() } + val tooltip = MutableStateFlow(false) - fun showThenHide(showDelay: Long = 500, duration: Long = 2000) = viewModelScope.launch(Dispatchers.IO) { + private fun showThenHide(showDelay: Long = 500, duration: Long = 2000) = viewModelScope.launch(Dispatchers.IO) { runCatching { val booleanListFlow = dataStore.flowTooltip().first().toString() val stringValue = booleanListFlow.split(",").map { it.toBoolean() } - if (stringValue[3]) { + if (stringValue.getOrElse(3) { true }) { delay(showDelay) - tooltip.emit(stringValue[3]) + tooltip.emit(true) delay(duration) tooltip.emit(false) dataStore.setTooltip( listOf( stringValue[0], - stringValue[1], - stringValue[2], - !stringValue[3], + stringValue.getOrElse(1) { true }, + stringValue.getOrElse(2) { true }, + false, ).joinToString(","), ) } diff --git a/feature/clip/src/main/java/org/sopt/clip/webview/WebViewViewModel.kt b/feature/clip/src/main/java/org/sopt/clip/webview/WebViewViewModel.kt index 9dc9c27d..fc832f92 100644 --- a/feature/clip/src/main/java/org/sopt/clip/webview/WebViewViewModel.kt +++ b/feature/clip/src/main/java/org/sopt/clip/webview/WebViewViewModel.kt @@ -28,12 +28,13 @@ class WebViewViewModel @Inject constructor( Log.e("실패", it.message.toString()) } } + fun showThenHide(showDelay: Long = 500, duration: Long = 2000) = viewModelScope.launch(Dispatchers.IO) { runCatching { val booleanListFlow = dataStore.flowTooltip().first().toString() val stringValue = booleanListFlow.split(",").map { it.toBoolean() } - if (stringValue[2]) { + if (stringValue.getOrElse(2) { true }) { delay(showDelay) tooltip.emit(true) delay(duration) @@ -41,7 +42,14 @@ class WebViewViewModel @Inject constructor( tooltip2.emit(true) delay(duration) tooltip2.emit(false) - dataStore.setTooltip(listOf(stringValue[0], stringValue[1], !stringValue[2], stringValue[3]).joinToString(",")) + dataStore.setTooltip( + listOf( + stringValue[0], + stringValue.getOrElse(1) { true }, + false, + stringValue.getOrElse(3) { true }, + ).joinToString(","), + ) } } } diff --git a/feature/clip/src/main/res/layout/fragment_delete_link_bottom_sheet.xml b/feature/clip/src/main/res/layout/fragment_delete_link_bottom_sheet.xml index 6015d45d..b8a19fad 100644 --- a/feature/clip/src/main/res/layout/fragment_delete_link_bottom_sheet.xml +++ b/feature/clip/src/main/res/layout/fragment_delete_link_bottom_sheet.xml @@ -1,104 +1,107 @@ + + + + + + + android:layout_marginHorizontal="20dp" + android:layout_marginTop="21dp" + android:layout_marginBottom="24dp" + android:background="@drawable/shape_white_fill_12_rect" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/tv_delete_link_bottom_sheet_title" + app:layout_constraintVertical_bias="0.0"> + android:id="@+id/tv_delete_link_modify" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:paddingStart="20dp" + android:paddingTop="17dp" + android:paddingBottom="17dp" + android:text="제목 편집" + android:textAppearance="@style/Typography.suit.medium_16" + android:textColor="@color/neutrals900" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/cl_delete_link_select" + app:layout_constraintTop_toTopOf="@id/cl_delete_link_select" /> - - - + - + - - - + - + + app:layout_constraintBottom_toBottomOf="parent" /> diff --git a/feature/home/src/main/java/org/sopt/home/HomeViewModel.kt b/feature/home/src/main/java/org/sopt/home/HomeViewModel.kt index b79d2724..85645557 100644 --- a/feature/home/src/main/java/org/sopt/home/HomeViewModel.kt +++ b/feature/home/src/main/java/org/sopt/home/HomeViewModel.kt @@ -20,7 +20,6 @@ import org.orbitmvi.orbit.syntax.simple.postSideEffect import org.orbitmvi.orbit.syntax.simple.reduce import org.orbitmvi.orbit.viewmodel.container import org.sopt.datastore.datastore.SecurityDataStore -import org.sopt.domain.category.category.usecase.PostAddCategoryTitleUseCase import org.sopt.home.model.UpdatePriority import org.sopt.home.usecase.GetMainPageUserClip import org.sopt.home.usecase.GetPopupInfo @@ -40,7 +39,6 @@ class HomeViewModel @Inject constructor( private val getRecommendSite: GetRecommendSite, private val getWeekBestLink: GetWeekBestLink, private val getRecentSavedLink: GetRecentSavedLink, - private val postAddCategoryTitle: PostAddCategoryTitleUseCase, private val patchPopupInvisible: PatchPopupInvisible, private val getPopupInfo: GetPopupInfo, private val dataStore: SecurityDataStore, @@ -80,10 +78,9 @@ class HomeViewModel @Inject constructor( fun showThenHide(showDelay: Long = 500, duration: Long = 2000) = intent { runCatching { - val booleanListFlow = - dataStore.flowTooltip().first().toString() + val booleanListFlow = dataStore.flowTooltip().first().toString() val stringValue = booleanListFlow.split(",").map { it.toBoolean() } - if (stringValue[1]) { + if (stringValue.getOrElse(1) { true }) { delay(showDelay) reduce { state.copy(visibleBubbleMark = true) @@ -94,10 +91,10 @@ class HomeViewModel @Inject constructor( } dataStore.setTooltip( listOf( - stringValue[0], - !stringValue[1], - stringValue[2], - stringValue[3], + true, + false, + stringValue.getOrElse(2) { true }, + stringValue.getOrElse(3) { true }, ).joinToString(","), ) } diff --git a/feature/login/src/main/java/org/sopt/login/onboarding/LoginActivity.kt b/feature/login/src/main/java/org/sopt/login/onboarding/LoginActivity.kt index 7b949c5f..957c5df2 100644 --- a/feature/login/src/main/java/org/sopt/login/onboarding/LoginActivity.kt +++ b/feature/login/src/main/java/org/sopt/login/onboarding/LoginActivity.kt @@ -110,7 +110,6 @@ class LoginActivity : AppCompatActivity() { private fun initMarketUpdateVisible() { lifecycleScope.launch { dataStore.setMarketUpdate(true) - dataStore.setTooltip(listOf(true, true, true, true).joinToString(",")) } } diff --git a/feature/maincontainer/src/main/java/org/sopt/maincontainer/MainViewModel.kt b/feature/maincontainer/src/main/java/org/sopt/maincontainer/MainViewModel.kt index c173be46..3eec1853 100644 --- a/feature/maincontainer/src/main/java/org/sopt/maincontainer/MainViewModel.kt +++ b/feature/maincontainer/src/main/java/org/sopt/maincontainer/MainViewModel.kt @@ -25,7 +25,7 @@ class MainViewModel @Inject constructor( val booleanListFlow = dataStore.flowTooltip().first().toString() val stringValue = booleanListFlow.split(",").map { it.toBoolean() } - if (stringValue[0]) { + if (!stringValue[0]) { delay(showDelay) reduce { state.copy(visibleBubbleMark = true) @@ -34,17 +34,10 @@ class MainViewModel @Inject constructor( reduce { state.copy(visibleBubbleMark = false) } - dataStore.setTooltip( - listOf( - !stringValue[0], - !stringValue[1], - stringValue[2], - stringValue[3], - ).joinToString(","), - ) } } } + fun updateClipBoard(clipboard: String) = intent { reduce { state.copy(clipboard = clipboard)