Skip to content

Commit 29f5e98

Browse files
committed
generate the ToolCard.State directly in the LessonsLayout
1 parent 2fb4e57 commit 29f5e98

3 files changed

Lines changed: 14 additions & 38 deletions

File tree

app/src/main/kotlin/org/cru/godtools/ui/dashboard/lessons/LessonsLayout.kt

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ import androidx.lifecycle.viewmodel.compose.viewModel
1919
import java.util.Locale
2020
import org.cru.godtools.R
2121
import org.cru.godtools.ui.tools.LessonToolCard
22-
import org.cru.godtools.ui.tools.ToolCardEvent
22+
import org.cru.godtools.ui.tools.ToolCard
23+
import org.cru.godtools.ui.tools.toolViewModels
2324

2425
internal sealed interface DashboardLessonsEvent {
2526
class OpenLesson(val lesson: String?, val lang: Locale?) : DashboardLessonsEvent
@@ -38,17 +39,19 @@ internal fun LessonsLayout(viewModel: LessonsViewModel = viewModel(), onEvent: (
3839
}
3940

4041
items(lessons, { it }, { "lesson" }) { lesson ->
41-
LessonToolCard(
42-
lesson,
43-
selectedLanguage = selectedLanguage,
44-
onEvent = {
45-
when (it) {
46-
is ToolCardEvent.OpenTool, is ToolCardEvent.Click -> {
47-
viewModel.recordOpenLessonInAnalytics(it.tool)
48-
onEvent(DashboardLessonsEvent.OpenLesson(it.tool, it.lang1))
49-
}
42+
lateinit var state: ToolCard.State
43+
state = toolViewModels[lesson].toState(language = selectedLanguage) {
44+
when (it) {
45+
ToolCard.Event.Click -> {
46+
viewModel.recordOpenLessonInAnalytics(lesson)
47+
onEvent(DashboardLessonsEvent.OpenLesson(lesson, state.translation?.languageCode))
5048
}
51-
},
49+
else -> TODO()
50+
}
51+
}
52+
53+
LessonToolCard(
54+
state,
5255
modifier = Modifier
5356
.animateItem()
5457
.padding(top = 16.dp)

app/src/main/kotlin/org/cru/godtools/ui/tools/LessonToolCard.kt

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -14,27 +14,6 @@ import androidx.compose.ui.Modifier
1414
import androidx.compose.ui.unit.dp
1515
import org.ccci.gto.android.common.androidx.compose.ui.draw.invisibleIf
1616
import org.cru.godtools.base.ui.util.ProvideLayoutDirectionFromLocale
17-
import org.cru.godtools.model.Language
18-
19-
@Composable
20-
fun LessonToolCard(
21-
toolCode: String,
22-
modifier: Modifier = Modifier,
23-
selectedLanguage: Language? = null,
24-
viewModel: ToolViewModels.ToolViewModel = toolViewModels[toolCode],
25-
onEvent: (ToolCardEvent) -> Unit = {},
26-
) {
27-
lateinit var state: ToolCard.State
28-
state = viewModel.toState(language = selectedLanguage) {
29-
when (it) {
30-
ToolCard.Event.Click ->
31-
onEvent(ToolCardEvent.Click(state.tool?.code, state.translation?.languageCode))
32-
else -> TODO()
33-
}
34-
}
35-
36-
LessonToolCard(state = state, modifier = modifier)
37-
}
3817

3918
@Composable
4019
fun LessonToolCard(state: ToolCard.State, modifier: Modifier = Modifier) {

app/src/main/kotlin/org/cru/godtools/ui/tools/ToolCardComponents.kt

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ import androidx.compose.ui.text.style.TextOverflow
2323
import androidx.compose.ui.unit.dp
2424
import androidx.lifecycle.viewmodel.compose.viewModel
2525
import coil.compose.AsyncImage
26-
import java.util.Locale
2726
import org.ccci.gto.android.common.androidx.compose.foundation.text.minLinesHeight
2827
import org.cru.godtools.base.ui.theme.GodToolsTheme
2928
import org.cru.godtools.base.ui.util.getCategory
@@ -58,11 +57,6 @@ private val toolCardInfoLabelColor: Color @Composable get() {
5857
}
5958
private val toolCardInfoLabelStyle @Composable get() = MaterialTheme.typography.labelSmall
6059

61-
sealed class ToolCardEvent(val tool: String?, val lang1: Locale? = null) {
62-
class Click(tool: String?, lang1: Locale? = null) : ToolCardEvent(tool, lang1)
63-
class OpenTool(tool: String?, lang1: Locale?) : ToolCardEvent(tool, lang1)
64-
}
65-
6660
@Composable
6761
internal fun ToolBanner(state: ToolCard.State, modifier: Modifier = Modifier) = AsyncImage(
6862
model = state.banner,

0 commit comments

Comments
 (0)