Skip to content

Commit

Permalink
quack v1 -> v2 마이그레이션 및 target SDK 34, compose 1.6.1 대응 (#627)
Browse files Browse the repository at this point in the history
* feat: 팔로잉 페이지 프로필로 이동하기 구현 (#609)

* feature/tag_edit 에 quack v2 적용 (#610)

* bug: 추가한 태그 화면에서 우측 화살표 크기가 작게 나오는 이슈 해결

* refactor: feature/tagEdit 모듈 Quack v2 로 리펙터링 및 이전 TODO 작업 처리

- 이전 TODO: FavoriteTagSection QuackV2 로 대응

* bug: java.lang.IndexOutOfBoundsException 오류 수정

* bug: bottomSheet 열렸을 시, bottomSheet 를 닫고 화면은 닫지 않음

* feat: placeHolder 에 최대 10자 안내 및 태그 편집 화면에 텍스트 글자 수 제한

* 리뷰 반영(@EvergreenTree97): ImuutableList.copy() 활용

* feature/onboard 에 quack v2 적용 (1차) (#611)

* refactor: feature/onboard 모듈 Quack v2 로 리펙터링 및 부수 작업, TODO 처리

* bug: 키보드 활성화 시 다음 버튼이 키보드 위로 올라오지 않는 현상 수정

* chore : develop rebase

* Quack 11 로 마이그레이션 및 부수 작업 (#615)

* chore: bump versionCode 19 to 25

* chore: target SDK 34

* chore: QuackQuack v10 , foundation 1.6.1

* refactor: PagerState 변경사항에 맞게 적용

* refactor: duckie logo 추가

* refactor: presentation 모듈 Quack v2 로 리펙터링

* bug: 컴파일 오류 수정
- QuackImage -> QuackIcon
- QuackAnimatedVisibility import 코드 수정

* bug: AnimatedContent 크래시 오류 수정 1차
- QuackAnimatedContent 사용처 제거

* chore: quack v2 버전 alpha-11 로 올림

* refactor: QuackTopAppBar - Quack V1 으로부터 코드를 가져온 뒤, Quack v2 에 맞춰 코드 수정

* bug: 온보딩 화면에서 발생하는 crash 수정

* QuackLazyVerticalGridTag quack v2 로 전환

* Quack v1 문법을 사용하던 코드 개선
- toggle.kt
- QuackSelectableImage.kt
- SearchTagScreen.kt

* refactor: home 모듈 Quack v2 로 리펙터링

* feat: Divider 에 색상 주입할 수 있도록 처리

* feat: quack v2 적용한 QuackMainTab 각 화면에 적용

* chore: 임시로 비활성화시킨 quack v1 다시 활성화

* refactor: rebase 빌드 오류 해결

* chore : 1.2.0으로 다시 버전 업

* bug: rebase 하면서 누락된 내용 재반영

* feat: 내 프로필, 타 유저 프로필 화면 crash 해결, 태그 편집 화면에서 LazyTag 정리

* Feature/설정 UI 업데이트 및 QuackV2 마이그레이션 (#616)

* refactor: UserContentLayout을 재사용 가능한 버튼으로 변경

* feat: 설정 메인 화면 UI 업데이트

* feat: getFieldName extension

* feat: 차단해제 비즈니스 로직

* feat: 유저 차단해제 기능 구현

* feat: IgnoreContentLayout 구현

* feat: 시험 차단하기 비즈니스 로직

* feat: 시험 차단하기 UI 구현

* refactor: 설정 페이지 QuackV2로 마이그레이션

* fix: conflict 해결

* fix: migrate QuackV2

* fix: 설정 잘못된 UI 개선

@EvergreenTree97 리뷰 반영

* chore: ./gradlew build

---------

Co-authored-by: limsaehyun <[email protected]>
Co-authored-by: EvergreenTree97 <[email protected]>

* Refactor/friends migrate quack v2 (#618)

* chore: quack-v1 의존성 제거 및 quack-v2 의존성 추가

* refactor: friend quack v2 마이그레이션

* Refactor/search migrate quack v2 (#619)

* chore: quack-v1 의존성 제거 및 quack-v2 의존성 추가

* refactor: search quack v2 마이그레이션

* fix: 인기 태그에 FlowRow 적용

* Refactor/notification migrate quack v2 (#620)

* fix: QuackTopAppBar icon type QuackV1Icon to ImageVector

* refactor: migrate new QuackTopAppBar

* chore: quack-v1 의존성 제거 및 quack-v2 의존성 추가

* feat: UI작동을 위한 최소한의 비즈니스 로직(notifications) 처리

* refactor: migrate notification quack v2

* refactor: lint style 적용

* 문제 시작 - 풀기 - 결과 화면 mirgation (#622)

* refactor: start-exam migration

* refactor: solve-problem migration

* fix: FlexibleSubjectiveQuestionSection padding 적용

* chore: bump compose-foundation 1.6.0-alpha01 to 1.6.0-alpha03

* fix: flexibleSubjectiveQuestion 분기 잘못되어있던 문제 수정

* Refactor/exam result migrate (#621)

* Refactor/friends migrate quack v2 (#618)

* chore: quack-v1 의존성 제거 및 quack-v2 의존성 추가

* refactor: friend quack v2 마이그레이션

* Refactor/search migrate quack v2 (#619)

* chore: quack-v1 의존성 제거 및 quack-v2 의존성 추가

* refactor: search quack v2 마이그레이션

* fix: 인기 태그에 FlowRow 적용

* Refactor/notification migrate quack v2 (#620)

* fix: QuackTopAppBar icon type QuackV1Icon to ImageVector

* refactor: migrate new QuackTopAppBar

* chore: quack-v1 의존성 제거 및 quack-v2 의존성 추가

* feat: UI작동을 위한 최소한의 비즈니스 로직(notifications) 처리

* refactor: migrate notification quack v2

* refactor: lint style 적용

* refactor: start-exam migration

* refactor: solve-problem migration

* refactor: exam-result migration quackv2

* chore: delete quack-v1, add quack-v2 dependency

* feat: QuackExpandedClickable

fix: vertical, horizontal 파라미터 분리

* feat: QuackTopAppBar expendedClickable 적용

---------

Co-authored-by: EvergreenTree97 <[email protected]>

* refactor: gradlew build

* feat: 이미지 로딩 구현

* refactor: gradlew build

* refactor: ./gradlew build

* refactor: 카카오로그인 로직 수정

* fix: 이미지 비율 최적화

---------

Co-authored-by: limsaehyun <[email protected]>

* fix: QuackTopAppBar로 인해 빌드 안되는 오류 수정 (#624)

* feat: infinite rolling banner 구현 및 에러 수정 (#625)

* 꽥 마이그레이션으로 인해 생긴 부수효과들 수정 (#626)

* fix : 검색화면 디자인에 맞게

* feat: secondary button 임시

* fix: 프로필 디자인 안맞는 부분 수

* fix: 시험 시작 버튼 디자인 수정

* fix: 온보딩 버튼 크기 변경

* fix: 명예의전당 QuackTab으로 변경

* refactor: quacktab lagacy 제거

* refactor: gradlew build

* chore: rebase missing code

* v1.3.0 quack2 migration으로 인한 문제 1차 수정 (#628)

* feat: 검색 화면에 시험 차단 가능 추가

* fix: 마이페이지 exam row 가려지던 문제 수정

* fix: 마이페이지 프로필 등록 사진 돌아가는 문제 수정

* fix: 탈퇴하기 크래시 해결

* refactor: 재웅님 QA 반영 (#629)

* 진행중 UI 작업 1차 (홈 화면, 문제 생성 모듈명 변경) (#631)

* feat: 피처플래그 초기 틀 작성

* feat: 홈 화면 상단 탭에 notice 버튼 추가

* feat: 진행중 탭 초기 구현

* chore: create-problem -> create-exam

* bug: ./gradlew build fix

* refactor: create-exam 모듈 quack v2 로 리펙터링 (#632)

* feature/create-exam 에 quack v2 적용 (2차) (#633)

* refactor: QuackDropDownCard 도 꽥꽥 v2 로 리펙터링 & quack v1 종속성 완전 삭제

* bug: TopAppBar leadingIcon 사이즈 고정 (가로 세로 44dp, 패딩 10dp)

* refactor: 문제 항목 레이아웃 파일 별로 분리

* bug: ./gradlew build fix

* Quack 1.3.1 2차 수정 (#630)

* refactor: QuackErrorableTextField 구현

* fix: 상태 분기 잘못되어있던 문제 수정

* chore: lint formating

---------

Co-authored-by: limsaehyun <[email protected]>

* Qa/migration 1.3.0 (#634)

* refator: HorizntalPager auto scroll 포인터 유지

* refactor: profile onresume 이슈

* refactor: searchText 따로 StateFlow로 빼기

* refactor: pagingSource refresh key 설정

* 개발중이었던 기능들 롤백 (#639)

* QA/ 1.3.0 3차. QA (#635)

* refactor: 도로님 디자인 qa 반영

* feat: remove suit in search

* fix: design qa

* fix: typography design qa

* WIP

* fix: 에러 처리에서 KakaoCancelled 예외 처리

* chore: lint formating

* Feature/검색 인기 태그 text focusing 제거 (#644)

* fix: 인기 태그로 검색 진입 시 autoFocusing 예외 처리

* chore: lint formating

* chore: update compose-foundation 1.6.0-alpha03 to 1.6.0-alpha04 (#646)

* fix: pager 중간에 둔 후 탭 이동하고 돌아와도 페이지로 유지

* fix: 알림 화면 TODO 처리

* feat: 시험 시작 화면 문구 추가

* chore: upgrade versioncode

* fix: 프로필 및 온보딩 패딩 조정

* fix: reycle 함수 두 번 사용하는 문제 해결

* chore: upgrade versioncode

* fix: 프로필 크래시 수정

* chore: upgrade versioncode

* fix: 응시자수 decimal format 적용

* feat: 키보드 이외 영역 터치 시 키보드 내려가는 기능 추가

* feat: 영역 클릭 시 키보드 내려가는 함수 추가

* fix: 잘못된 패딩

* feat: 검색화면 포커스 문제, 퀴즈 화면 패딩 수정

* feat: 시험 시작 화면 문구 수정

* fix: 전체보기 패딩 해결

* fix: 문제 풀기 패딩 해결

* fix: 검색 결과 화면 포커스 해결

* chore: versioncode upgrade

* fix: QuackReactionTextArea constraints

* fix: 재웅님 QA 반영

* chore: lint formating

* refactor: 알림 화면 구현 준비중으로 대체

* chore: versionCode upgrade

---------

Co-authored-by: 임세현 <[email protected]>
Co-authored-by: ricky_0_k <[email protected]>
  • Loading branch information
3 people authored Sep 7, 2023
1 parent ca98721 commit 78736f6
Show file tree
Hide file tree
Showing 237 changed files with 6,864 additions and 2,583 deletions.
1 change: 0 additions & 1 deletion .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ dependencies {
projects.feature.examResult,
projects.feature.solveProblem,
projects.feature.notification,
projects.feature.createProblem,
projects.feature.createExam,
projects.feature.startExam,
projects.feature.detail,
projects.feature.profile,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ import org.gradle.api.JavaVersion
*/
internal object ApplicationConstants {
const val minSdk = 23
const val targetSdk = 33
const val compileSdk = 33
const val versionCode = 24
const val targetSdk = 34
const val compileSdk = 34
const val versionCode = 30
const val versionName = "1.3.0"
val javaVersion = JavaVersion.VERSION_17
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ import android.graphics.Matrix
import android.media.ExifInterface
import android.net.Uri
import android.os.Build
import com.google.firebase.crashlytics.FirebaseCrashlytics
import team.duckie.app.android.common.kotlin.AllowMagicNumber
import java.io.BufferedInputStream
import java.io.File
import java.io.FileOutputStream
Expand All @@ -24,13 +26,13 @@ import java.util.UUID
* Media 처리용 유틸 클래스
* // TODO(riflockle7): 추후 ImageUtil 로 바꿀지 고민
*/
@AllowMagicNumber("for MediaUtil")
object MediaUtil {
private const val maxWidth = 1600
private const val maxHeight = 1600
private const val bitmapQuality = 100
private const val rotate90 = 90
private const val rotate180 = 180
private const val rotate270 = 270

private var bitmap: Bitmap? = null

/**
* 업로드할 이미지를 가져온다.
Expand Down Expand Up @@ -58,9 +60,9 @@ object MediaUtil {

decodeBitmapFromUri(uri, applicationContext, maxSizeLimitEnable)?.apply {
compress(Bitmap.CompressFormat.JPEG, bitmapQuality, fos)
recycle()
} ?: throw NullPointerException("bitmap 생성 오류")

bitmap = null
fos.flush()
fos.close()

Expand All @@ -76,7 +78,6 @@ object MediaUtil {
// 인자 값으로 넘어온 입력 스트림을 나중에 사용하기 위해 저장하는 BufferedInputStream 사용
val input = BufferedInputStream(context.contentResolver.openInputStream(uri))
input.mark(input.available()) // 입력 스트림의 특정 위치를 기억
var bitmap: Bitmap?

BitmapFactory.Options().run {
if (maxSizeLimitEnable) {
Expand Down Expand Up @@ -130,23 +131,44 @@ object MediaUtil {
ExifInterface(uri.path!!)
}

return when (
exif.getAttributeInt(
ExifInterface.TAG_ORIENTATION,
ExifInterface.ORIENTATION_NORMAL,
)
) {
ExifInterface.ORIENTATION_ROTATE_90 -> rotateImage(bitmap, rotate90)
ExifInterface.ORIENTATION_ROTATE_180 -> rotateImage(bitmap, rotate180)
ExifInterface.ORIENTATION_ROTATE_270 -> rotateImage(bitmap, rotate270)
else -> bitmap
}
val orientation = exif.getAttributeInt(
ExifInterface.TAG_ORIENTATION,
ExifInterface.ORIENTATION_NORMAL,
)
return rotateBitmap(bitmap, orientation)
}

/** 이미지를 회전한다. */
private fun rotateImage(bitmap: Bitmap, degree: Int): Bitmap? {
private fun rotateBitmap(bitmap: Bitmap, orientation: Int): Bitmap? {
val matrix = Matrix()
matrix.postRotate(degree.toFloat())
return Bitmap.createBitmap(bitmap, 0, 0, bitmap.width, bitmap.height, matrix, true)
when (orientation) {
ExifInterface.ORIENTATION_NORMAL -> return bitmap
ExifInterface.ORIENTATION_FLIP_HORIZONTAL -> matrix.setScale(-1f, 1f)
ExifInterface.ORIENTATION_ROTATE_180 -> matrix.setRotate(180f)
ExifInterface.ORIENTATION_FLIP_VERTICAL -> {
matrix.setRotate(180f)
matrix.postScale(-1f, 1f)
}

ExifInterface.ORIENTATION_TRANSPOSE -> {
matrix.setRotate(90f)
matrix.postScale(-1f, 1f)
}

ExifInterface.ORIENTATION_ROTATE_90 -> matrix.setRotate(90f)
ExifInterface.ORIENTATION_TRANSVERSE -> {
matrix.setRotate(-90f)
matrix.postScale(-1f, 1f)
}

ExifInterface.ORIENTATION_ROTATE_270 -> matrix.setRotate(-90f)
else -> return bitmap
}
return try {
Bitmap.createBitmap(bitmap, 0, 0, bitmap.width, bitmap.height, matrix, true)
} catch (e: OutOfMemoryError) {
FirebaseCrashlytics.getInstance().recordException(e)
null
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -44,4 +44,8 @@ class ProblemTimer(
fun stop() {
timerJob?.cancel()
}

fun setTotalTime(time: Float) {
_remainingTime.value = time
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@ object Extras {
const val SearchTag = "ExtraSearchTag"
const val StartGuide = "StartGuide"

/** using for SearchActivity */
const val AutoFocusing = "AutoFocusing"

/** using for FriendsActivity */
const val FriendType = "ExtraFriendType"
const val ProfileNickName = "ProfileNickName"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,25 @@
* Please see full license: https://github.com/duckie-team/duckie-android/blob/develop/LICENSE
*/

@file:OptIn(ExperimentalMaterialApi::class)

package team.duckie.app.android.common.compose

import android.graphics.Rect
import android.view.ViewTreeObserver
import androidx.compose.material.ExperimentalMaterialApi
import androidx.compose.material.ModalBottomSheetState
import androidx.compose.material.ModalBottomSheetValue
import androidx.compose.runtime.Composable
import androidx.compose.runtime.DisposableEffect
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.State
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.snapshotFlow
import androidx.compose.ui.Modifier
import androidx.compose.ui.composed
import androidx.compose.ui.platform.LocalSoftwareKeyboardController
import androidx.compose.ui.platform.LocalView
import team.duckie.app.android.common.kotlin.AllowMagicNumber

Expand Down Expand Up @@ -63,3 +71,17 @@ fun Modifier.composedWithKeyboardVisibility(
.composed { if (keyboardVisible.value) whenKeyboardVisible() else this }
.composed { if (!keyboardVisible.value) whenKeyboardHidden() else this }
}

@Composable
fun HideKeyboardWhenBottomSheetHidden(sheetState: ModalBottomSheetState) {
val keyboard = LocalSoftwareKeyboardController.current

LaunchedEffect(Unit) {
val sheetStateFlow = snapshotFlow { sheetState.currentValue }
sheetStateFlow.collect { state ->
if (state == ModalBottomSheetValue.Hidden) {
keyboard?.hide()
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,3 +31,7 @@ suspend inline fun PagerState.moveNextPage(maxPage: Int) {
fun PagerState.isCurrentPage(targetIndex: Int): Boolean {
return currentPageOffsetFraction == 0f && targetIndex == currentPage
}

fun PagerState.isTargetPage(targetIndex: Int): Boolean {
return targetIndex == targetPage
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,3 +30,11 @@ fun <T : Any> itemsPagingKey(
key(index) ?: index
}
}

/**
* 서버측 에러로 PK가 중복으로 내려오는 경우 방치
*
* @return PK + [secondId] 형식의 String
*/
fun Int?.getUniqueKey(secondId: Int): String =
this.toString() + secondId
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,12 @@ package team.duckie.app.android.common.compose

// 328 x 240 비율에서 이미지의 높이값을 가져올 수 있는 비율값
const val GetHeightRatioW328H240 = 328.toFloat() / 240

// 4 x 1 비율에서 이미지의 높이값을 가져올 수 있는 비율값
const val GetHeightRatioW360H90 = 4.toFloat() / 1

// 85 x 63 비율에서 이미지의 높이값을 가져올 수 있는 비율값
const val GetHeightRatioW85H63 = 85.toFloat() / 63

// 129 x 84 비율에서 이미지의 높이값을 가져올 수 있는 비율값
const val GetHeightRatioW129H84 = 129.toFloat() / 84
Original file line number Diff line number Diff line change
Expand Up @@ -72,12 +72,17 @@ fun BackPressedHeadLineTopAppBar(
fun BackPressedHeadLine2TopAppBar(
title: String,
isLoading: Boolean = false,
trailingContent: (@Composable () -> Unit)? = null,
onBackPressed: () -> Unit,
) {
BackPressedTopAppBar(onBackPressed = onBackPressed) {
QuackHeadLine2(
modifier = Modifier.skeleton(isLoading),
text = title,
)
Spacer(weight = 1f)
if (trailingContent != null) {
trailingContent()
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -54,3 +54,28 @@ fun DuckieDivider(
.background(color = color.value),
)
}

/**
* QuackDivider 를 그리기 위한 리소스들을 정의합니다.
*/
private object QuackDividerDefaults {
val Color = QuackColor.Gray3
val Height = 1.dp
}

/**
* 덕키에서 사용되는 구분선(divider)을 그립니다.
*
* @param modifier 이 컴포넌트에 사용할 [Modifier]
*/
@Composable
public fun QuackDivider(modifier: Modifier = Modifier) {
with(QuackDividerDefaults) {
Box(
modifier = modifier
.fillMaxWidth()
.height(Height)
.background(color = Color.value),
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ import coil.compose.AsyncImage
import team.duckie.app.android.common.compose.R
import team.duckie.app.android.common.compose.ui.icon.v1.MoreId
import team.duckie.app.android.common.kotlin.runIf
import team.duckie.app.android.common.kotlin.toDecimalFormat
import team.duckie.quackquack.material.QuackColor
import team.duckie.quackquack.material.QuackTypography
import team.duckie.quackquack.material.icon.QuackIcon
Expand Down Expand Up @@ -140,15 +141,15 @@ internal fun DuckSmallCoverInternal(
horizontalArrangement = Arrangement.spacedBy(2.dp),
) {
QuackText(
text = "${stringResource(id = R.string.examinee)} ${duckTestCoverItem.solvedCount}",
text = "${stringResource(id = R.string.examinee)} ${duckTestCoverItem.solvedCount.toDecimalFormat()}",
typography = QuackTypography.Body2.change(color = QuackColor.Gray2),
)
QuackText(
text = "·",
typography = QuackTypography.Body2.change(color = QuackColor.Gray2),
)
QuackText(
text = "${stringResource(id = R.string.heart)} ${duckTestCoverItem.heartCount}",
text = "${stringResource(id = R.string.heart)} ${duckTestCoverItem.heartCount.toDecimalFormat()}",
typography = QuackTypography.Body2.change(color = QuackColor.Gray2),
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,10 +75,20 @@ fun DuckieHorizontalPagerIndicator(
Box(
Modifier
.offset {
val scrollPosition = (pagerState.currentPage + pagerState.currentPageOffsetFraction)
.coerceIn(0f, pagerState.currentPage.coerceAtLeast(0).toFloat())
val scrollPosition =
(pagerState.currentPage + pagerState.currentPageOffsetFraction)
.coerceIn(
minimumValue = 0f,
maximumValue = pagerState.currentPage
.coerceAtLeast(0)
.toFloat(),
)
IntOffset(
x = ((spacingPx + indicatorWidthPx) * scrollPosition).toInt(),
x = if (pagerState.targetPage == 0) {
0
} else {
((spacingPx + indicatorWidthPx) * scrollPosition).toInt()
},
y = 0,
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Alignment.Companion.CenterHorizontally
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import team.duckie.quackquack.material.QuackColor
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,15 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.unit.dp
import kotlinx.collections.immutable.ImmutableList
import team.duckie.app.android.common.compose.ui.quack.todo.QuackLazyVerticalGridTag
import team.duckie.app.android.common.compose.ui.quack.todo.QuackSingeLazyRowTag
import team.duckie.quackquack.material.QuackColor
import team.duckie.quackquack.material.QuackTypography
import team.duckie.quackquack.material.quackClickable
import team.duckie.quackquack.ui.QuackText
import team.duckie.quackquack.ui.sugar.QuackTitle2
import team.duckie.quackquack.ui.icon.QuackIcon as QuackV1Icon

/**
* 관심태그 섹션
Expand All @@ -48,10 +47,8 @@ fun FavoriteTagSection(
title: String,
horizontalPadding: PaddingValues = PaddingValues(0.dp),
verticalArrangement: Arrangement.HorizontalOrVertical = Arrangement.spacedBy(0.dp),
// TODO(riflockle7): 다음 작업에서 QuackV2 로 대응하기
trailingIcon: QuackV1Icon? = null,
trailingIcon: ImageVector? = null,
onTrailingClick: ((Int) -> Unit)? = null,
singleLine: Boolean = true,
emptySection: @Composable () -> Unit,
tags: ImmutableList<String>,
onTagClick: (Int) -> Unit,
Expand All @@ -74,25 +71,15 @@ fun FavoriteTagSection(
// 태그가 없을 경우 표시되는 Section
emptySection()
} else {
if (singleLine) {
// 한 줄로 표현되는 태그 목록
QuackSingeLazyRowTag(
items = tagList,
contentPadding = horizontalPadding,
tagTypeResId = trailingIcon?.drawableId,
onClick = { index -> onTagClick(index) },
)
} else {
// 여러 줄로 표현되는 태그 목록
QuackLazyVerticalGridTag(
contentPadding = horizontalPadding,
horizontalSpace = 4.dp,
items = tagList,
tagTypeResId = trailingIcon?.drawableId,
onClick = { index -> onTagClick(index) },
itemChunkedSize = 4,
)
}
QuackLazyVerticalGridTag(
contentPadding = horizontalPadding,
horizontalSpace = 4.dp,
items = tagList,
trailingIcon = trailingIcon,
onTrailingClick = onTrailingClick,
onClick = { index -> onTagClick(index) },
itemChunkedSize = 4,
)
}

// 추가 버튼
Expand Down
Loading

0 comments on commit 78736f6

Please sign in to comment.