Meet
03/19/2025, 3:26 PMMeet
03/19/2025, 3:50 PMMeet
03/19/2025, 3:53 PMDavid Herman
03/19/2025, 6:48 PMDavid Herman
03/19/2025, 6:51 PMDavid Herman
03/19/2025, 6:54 PMDavid Herman
03/19/2025, 6:54 PMMeet
03/20/2025, 1:20 AMMeet
03/20/2025, 3:50 AMMeet
03/20/2025, 3:58 AMDavid Herman
03/20/2025, 3:59 AMMeet
03/20/2025, 4:07 AMMeet
03/20/2025, 4:23 AMvar selectedCategory by remember { mutableStateOf(ProjectCategory.ALL) }
val filteredProjects by remember {
derivedStateOf {
if (selectedCategory == ProjectCategory.ALL) {
Constants.projects
} else {
Constants.projects.filter { it.categories.contains(selectedCategory) }
.toMutableList()
}
}
}
ProjectCategorySection(
selectedCategory = selectedCategory,
onCategorySelected = {
selectedCategory = it
}
)
SimpleGrid(
numColumns = numColumns(base = 1, sm = 1, md = 2, lg = 3),
modifier = Modifier.fillMaxWidth()
.padding(
bottom = 10.px,
leftRight = if (breakpoint > <http://Breakpoint.SM|Breakpoint.SM>) 10.px else 0.px
).animation(
fadeInUpPageAnimation.toAnimation(
duration = 1.s,
timingFunction = AnimationTimingFunction.EaseOut
)
),
) {
filteredProjects.forEachIndexed { index, project ->
ProjectCard(project) {
openProject = project
currentProjectIndex = index
isShowDialog = true
}
}
}
Meet
03/20/2025, 4:24 AMMeet
03/20/2025, 4:28 AMif (isLoading) {
// Circular Progress Indicator
Div(attrs = rotateAnimation.toAttrs())
} else {
SimpleGrid(
numColumns = numColumns(base = 1, sm = 1, md = 2, lg = 3),
modifier = Modifier.fillMaxWidth()
.padding(
bottom = 10.px,
leftRight = if (breakpoint > <http://Breakpoint.SM|Breakpoint.SM>) 10.px else 0.px
).animation(
fadeInUpPageAnimation.toAnimation(
duration = 1.s,
timingFunction = AnimationTimingFunction.EaseOut
)
),
) {
filteredProjects.forEachIndexed { index, project ->
ProjectCard(project) {
openProject = project
currentProjectIndex = index
isShowDialog = true
}
}
}
}
David Herman
03/20/2025, 4:39 AMisLoading
from going from false to true? Have you tried adding println logging yet to understand what's going on?Meet
03/20/2025, 4:39 AMLaunchedEffect(selectedCategory) {
isLoading = true
delay(300)
filteredProjects = if (selectedCategory == ProjectCategory.ALL) {
Constants.projects
} else {
Constants.projects.filter { it.categories.contains(selectedCategory) }
.toMutableList()
}
isLoading = false
}
Meet
03/20/2025, 4:40 AMMeet
03/20/2025, 4:41 AMMeet
03/20/2025, 4:41 AMDavid Herman
03/20/2025, 5:00 AMDavid Herman
03/20/2025, 5:00 AMDavid Herman
03/20/2025, 5:01 AMMeet
03/20/2025, 5:05 AMMeet
03/20/2025, 5:05 AMDavid Herman
03/20/2025, 5:06 AMMeet
03/20/2025, 5:07 AMDavid Herman
03/23/2025, 4:57 PMMeet
03/23/2025, 4:58 PMDavid Herman
03/23/2025, 4:59 PMMeet
03/23/2025, 4:59 PMMeet
03/23/2025, 5:00 PMMeet
03/23/2025, 5:02 PMDavid Herman
03/24/2025, 5:32 PMkobweb create app/empty
) and trying to reproduce the issue you're dealing with in isolation
BTW, I just got this very excellently written bug report from @Ahmed Riyadh (https://github.com/varabyte/kobweb/issues/676) which I'm sharing here as an example that makes it really clear the developer spent a lot of time isolating and explaining the core problem. (This is a top quality bug report. I don't expect almost any report to be this detailed. Still, I thought I would share it as a golden ideal to aim for when possible!)Ahmed Riyadh
03/24/2025, 5:47 PM