From 87c3924280e7d3fe3721ff4505a44f9693235b80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=AA=85=ED=9B=88?= Date: Mon, 19 Aug 2024 08:35:25 +0900 Subject: [PATCH 1/5] :sparkles: :: Create Custom Modifier Function(paddingVertical, paddingHorizontal) --- .../component/modifier/padding/padding.kt | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 core/design-system/src/main/java/com/msg/design_system/component/modifier/padding/padding.kt diff --git a/core/design-system/src/main/java/com/msg/design_system/component/modifier/padding/padding.kt b/core/design-system/src/main/java/com/msg/design_system/component/modifier/padding/padding.kt new file mode 100644 index 00000000..6865d136 --- /dev/null +++ b/core/design-system/src/main/java/com/msg/design_system/component/modifier/padding/padding.kt @@ -0,0 +1,31 @@ +package com.msg.design_system.component.modifier.padding + +import androidx.compose.foundation.layout.padding +import androidx.compose.runtime.Stable +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.Dp +import androidx.compose.ui.unit.dp + +@Stable +fun Modifier.paddingVertical( + start: Dp = 0.dp, + vertical: Dp = 0.dp, + end: Dp = 0.dp +): Modifier = this then Modifier + .padding(vertical = vertical) + .padding( + start = start, + end = end + ) + +@Stable +fun Modifier.paddingHorizontal( + top: Dp = 0.dp, + horizontal: Dp = 0.dp, + bottom: Dp = 0.dp +): Modifier = this then Modifier + .padding(horizontal = horizontal) + .padding( + top = top, + bottom = bottom + ) \ No newline at end of file From 70fc09f3464ae5214d642cb60b315e5f101980de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=AA=85=ED=9B=88?= Date: Mon, 19 Aug 2024 09:33:22 +0900 Subject: [PATCH 2/5] :recycle: :: Apply Before Commit(Use Custom Modifier Function) --- .../java/com/msg/certification/AddCertificationScreen.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/feature/certification/src/main/java/com/msg/certification/AddCertificationScreen.kt b/feature/certification/src/main/java/com/msg/certification/AddCertificationScreen.kt index cec27676..12d83507 100644 --- a/feature/certification/src/main/java/com/msg/certification/AddCertificationScreen.kt +++ b/feature/certification/src/main/java/com/msg/certification/AddCertificationScreen.kt @@ -26,6 +26,7 @@ import com.msg.certification.component.AddAcquisitionDateSection import com.msg.certification.component.AddCertificationSection import com.msg.certification.viewmodel.CertificationViewModel import com.msg.design_system.component.button.BitgoeulButton +import com.msg.design_system.component.modifier.padding.paddingHorizontal import com.msg.design_system.component.topbar.DetailSettingTopBar import com.msg.design_system.theme.BitgoeulAndroidTheme import com.msg.ui.DevicePreviews @@ -82,11 +83,10 @@ internal fun AddCertificationScreen( Column( modifier = modifier .fillMaxSize() - .padding( + .paddingHorizontal( top = 24.dp, bottom = 14.dp, - start = 28.dp, - end = 28.dp + horizontal = 28.dp ), verticalArrangement = Arrangement.spacedBy(24.dp) ) { From ba3a4b8b8e561ffbc38b68f1ef05b27db80317aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=AA=85=ED=9B=88?= Date: Mon, 19 Aug 2024 09:34:08 +0900 Subject: [PATCH 3/5] :fire: :: Fire Unused Function(PaddingVertical) --- .../component/modifier/padding/padding.kt | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/core/design-system/src/main/java/com/msg/design_system/component/modifier/padding/padding.kt b/core/design-system/src/main/java/com/msg/design_system/component/modifier/padding/padding.kt index 6865d136..77985da6 100644 --- a/core/design-system/src/main/java/com/msg/design_system/component/modifier/padding/padding.kt +++ b/core/design-system/src/main/java/com/msg/design_system/component/modifier/padding/padding.kt @@ -6,18 +6,6 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp -@Stable -fun Modifier.paddingVertical( - start: Dp = 0.dp, - vertical: Dp = 0.dp, - end: Dp = 0.dp -): Modifier = this then Modifier - .padding(vertical = vertical) - .padding( - start = start, - end = end - ) - @Stable fun Modifier.paddingHorizontal( top: Dp = 0.dp, From dffdde81c28d56f59fbcb3f166dbd99393bc1639 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=AA=85=ED=9B=88?= Date: Mon, 19 Aug 2024 09:35:15 +0900 Subject: [PATCH 4/5] :recycle: :: Resolved Warning --- .../src/main/java/com/msg/lecture/component/LectureList.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/feature/lecture/src/main/java/com/msg/lecture/component/LectureList.kt b/feature/lecture/src/main/java/com/msg/lecture/component/LectureList.kt index aad400c5..2e3eedaf 100644 --- a/feature/lecture/src/main/java/com/msg/lecture/component/LectureList.kt +++ b/feature/lecture/src/main/java/com/msg/lecture/component/LectureList.kt @@ -63,7 +63,7 @@ internal fun LectureTakingStudentList( data: List?, onChangeCompleteState: (isComplete: Boolean, studentId: UUID) -> Unit, ) { - BitgoeulAndroidTheme { colors, typography -> + BitgoeulAndroidTheme { _, _ -> LazyColumn( modifier = modifier .padding(vertical = 24.dp) From 59c952d9833a49db3fe358d879bf38e50a4e3d0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=AA=85=ED=9B=88?= Date: Mon, 19 Aug 2024 09:38:03 +0900 Subject: [PATCH 5/5] :sparkles: :: Create clickableSingle Modifier Function --- .../clickableSingle/MultipleEventsCutter.kt | 21 ++++++++++++++++ .../clickableSingle/clickableSingle.kt | 24 +++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 core/design-system/src/main/java/com/msg/design_system/component/modifier/clickableSingle/MultipleEventsCutter.kt create mode 100644 core/design-system/src/main/java/com/msg/design_system/component/modifier/clickableSingle/clickableSingle.kt diff --git a/core/design-system/src/main/java/com/msg/design_system/component/modifier/clickableSingle/MultipleEventsCutter.kt b/core/design-system/src/main/java/com/msg/design_system/component/modifier/clickableSingle/MultipleEventsCutter.kt new file mode 100644 index 00000000..b3eac79d --- /dev/null +++ b/core/design-system/src/main/java/com/msg/design_system/component/modifier/clickableSingle/MultipleEventsCutter.kt @@ -0,0 +1,21 @@ +package com.msg.design_system.component.modifier.clickableSingle + +internal interface MultipleEventsCutter { + fun processEvent(event: () -> Unit) + + companion object +} + +internal fun MultipleEventsCutter.Companion.get(): MultipleEventsCutter = MultipleEventsCutterImpl() + +private class MultipleEventsCutterImpl : MultipleEventsCutter { + private var lastEventTimeMs: Long = 0 + + override fun processEvent(event: () -> Unit) { + val now = System.currentTimeMillis() + if (now - lastEventTimeMs >= 400L) { + event.invoke() + lastEventTimeMs = now + } + } +} \ No newline at end of file diff --git a/core/design-system/src/main/java/com/msg/design_system/component/modifier/clickableSingle/clickableSingle.kt b/core/design-system/src/main/java/com/msg/design_system/component/modifier/clickableSingle/clickableSingle.kt new file mode 100644 index 00000000..c7cd6913 --- /dev/null +++ b/core/design-system/src/main/java/com/msg/design_system/component/modifier/clickableSingle/clickableSingle.kt @@ -0,0 +1,24 @@ +package com.msg.design_system.component.modifier.clickableSingle + +import android.annotation.SuppressLint +import androidx.compose.foundation.clickable +import androidx.compose.foundation.interaction.MutableInteractionSource +import androidx.compose.runtime.Stable +import androidx.compose.runtime.remember +import androidx.compose.ui.Modifier +import androidx.compose.ui.composed + +@SuppressLint("ModifierFactoryUnreferencedReceiver") +@Stable +fun Modifier.clickableSingle( + enabled: Boolean = true, + onClick: () -> Unit, +) = composed { + val multipleEventsCutter = remember { MultipleEventsCutter.get() } + Modifier.clickable( + enabled = enabled, + onClick = { multipleEventsCutter.processEvent { onClick() } }, + indication = null, + interactionSource = remember { MutableInteractionSource() } + ) +} \ No newline at end of file