refactor(creator-ranking): 배치 모델을 단순화한다
This commit is contained in:
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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))
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
package kr.co.vividnext.sodalive.v2.widget.creatorranking
|
||||
|
||||
enum class CreatorRankingViewType {
|
||||
TopTen,
|
||||
Lower
|
||||
}
|
||||
Reference in New Issue
Block a user