refactor(creator-ranking): 배치 모델을 단순화한다

This commit is contained in:
2026-06-30 02:43:39 +09:00
parent 566f76df6a
commit aac09c14bc
5 changed files with 97 additions and 15 deletions

View File

@@ -1,17 +1,17 @@
package kr.co.vividnext.sodalive.v2.widget.creatorranking
data class CreatorRankingPlacement(
val variant: CreatorRankingCardVariant,
val viewType: CreatorRankingViewType,
val itemsPerRow: Int
) {
companion object {
fun fromRank(rank: Int): CreatorRankingPlacement {
require(rank >= 1) { "rank must be greater than or equal to 1." }
return when (rank) {
1 -> CreatorRankingPlacement(CreatorRankingCardVariant.Large, itemsPerRow = 1)
in 2..7 -> CreatorRankingPlacement(CreatorRankingCardVariant.Compact, itemsPerRow = 2)
in 8..10 -> CreatorRankingPlacement(CreatorRankingCardVariant.Compact, itemsPerRow = 3)
else -> CreatorRankingPlacement(CreatorRankingCardVariant.Horizontal, itemsPerRow = 1)
1 -> CreatorRankingPlacement(CreatorRankingViewType.TopTen, itemsPerRow = 1)
in 2..7 -> CreatorRankingPlacement(CreatorRankingViewType.TopTen, itemsPerRow = 2)
in 8..10 -> CreatorRankingPlacement(CreatorRankingViewType.TopTen, itemsPerRow = 3)
else -> CreatorRankingPlacement(CreatorRankingViewType.Lower, itemsPerRow = 1)
}
}
}

View File

@@ -0,0 +1,27 @@
package kr.co.vividnext.sodalive.v2.widget.creatorranking
data class CreatorRankingTextStyle(
val rankTextSizeSp: Int,
val nameTextSizeSp: Int,
val deltaTextSizeSp: Int
) {
companion object {
fun fromPlacement(placement: CreatorRankingPlacement): CreatorRankingTextStyle {
return when (placement.viewType) {
CreatorRankingViewType.TopTen -> when (placement.itemsPerRow) {
1 -> CreatorRankingTextStyle(rankTextSizeSp = 96, nameTextSizeSp = 32, deltaTextSizeSp = 16)
2 -> CreatorRankingTextStyle(rankTextSizeSp = 54, nameTextSizeSp = 22, deltaTextSizeSp = 16)
3 -> CreatorRankingTextStyle(rankTextSizeSp = 36, nameTextSizeSp = 14, deltaTextSizeSp = 14)
else -> error("Unsupported top-ten row size: ${placement.itemsPerRow}")
}
CreatorRankingViewType.Lower -> CreatorRankingTextStyle(
rankTextSizeSp = 40,
nameTextSizeSp = 18,
deltaTextSizeSp = 16
)
}
}
fun fromRank(rank: Int): CreatorRankingTextStyle = fromPlacement(CreatorRankingPlacement.fromRank(rank))
}
}

View File

@@ -0,0 +1,6 @@
package kr.co.vividnext.sodalive.v2.widget.creatorranking
enum class CreatorRankingViewType {
TopTen,
Lower
}