Skip to content

Commit b8cb488

Browse files
frettclaude
andcommitted
Extract shared toToolCardState() helper in ToolsPresenter
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 051272b commit b8cb488

1 file changed

Lines changed: 18 additions & 30 deletions

File tree

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

Lines changed: 18 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ import org.cru.godtools.base.CONFIG_UI_DASHBOARD_PERSONALIZATION_ENABLED
3434
import org.cru.godtools.base.Settings
3535
import org.cru.godtools.base.ui.circuit.screen.dashboard.page.ToolsScreen
3636
import org.cru.godtools.model.Language
37+
import org.cru.godtools.model.Tool
3738
import org.cru.godtools.sync.GodToolsSyncService
3839
import org.cru.godtools.ui.banner.Banner
3940
import org.cru.godtools.ui.banner.BannerPresenter
@@ -143,22 +144,7 @@ class ToolsPresenter @AssistedInject internal constructor(
143144
val tools by remember(mode, locale) {
144145
featuredToolsFlowProducer.getFlow(mode, locale)
145146
}.collectAsState(null)
146-
147-
return tools?.map { tool ->
148-
val toolCode by rememberUpdatedState(tool.code)
149-
150-
toolCardPresenter.present(
151-
tool = tool,
152-
secondLanguage = language,
153-
eventSink = {
154-
when (it) {
155-
ToolCardEvent.Click,
156-
ToolCardEvent.OpenTool,
157-
ToolCardEvent.OpenToolDetails -> toolCode?.let { onOpenToolDetails(it) }
158-
}
159-
}
160-
)
161-
}
147+
return tools?.toToolCardState(language, onOpenToolDetails)
162148
}
163149

164150
@Composable
@@ -171,22 +157,24 @@ class ToolsPresenter @AssistedInject internal constructor(
171157
val locale = language?.code
172158
val tools by remember(mode, category, locale) { filteredToolsFlowProducer.getFlow(mode, category, locale) }
173159
.collectAsState(null)
160+
return tools?.toToolCardState(language, onOpenToolDetails)
161+
}
174162

175-
return tools?.map { tool ->
176-
key(tool.code) {
177-
val toolCode by rememberUpdatedState(tool.code)
178-
toolCardPresenter.present(
179-
tool = tool,
180-
secondLanguage = language,
181-
eventSink = {
182-
when (it) {
183-
ToolCardEvent.Click,
184-
ToolCardEvent.OpenTool,
185-
ToolCardEvent.OpenToolDetails -> toolCode?.let { onOpenToolDetails(it) }
186-
}
163+
@Composable
164+
private fun List<Tool>.toToolCardState(language: Language?, onOpenToolDetails: (String) -> Unit) = map { tool ->
165+
key(tool.code) {
166+
val toolCode by rememberUpdatedState(tool.code)
167+
toolCardPresenter.present(
168+
tool = tool,
169+
secondLanguage = language,
170+
eventSink = {
171+
when (it) {
172+
ToolCardEvent.Click,
173+
ToolCardEvent.OpenTool,
174+
ToolCardEvent.OpenToolDetails -> toolCode?.let { onOpenToolDetails(it) }
187175
}
188-
)
189-
}
176+
}
177+
)
190178
}
191179
}
192180

0 commit comments

Comments
 (0)