Having issues because Block won't place after letting go on gamegrid. OnDragEnd() doesn't seem to fire. logcat is also attached. I Know it is probably something simple I am missing.
2025-12-04 14:35:03.132 25545-25545 cr_CachingUmaRecorder com.betterblocks I Flushed 19 samples from 19 histograms, 0 samples were dropped.
2025-12-04 14:35:35.505 25545-25545 ๐ DROP com.betterblocks D END - Using local snapshot row=null col=null valid=false
2025-12-04 14:35:35.505 25545-25545 ๐ DROP com.betterblocks E โ CONDITIONS NOT MET - Block will NOT place
@Composable
fun BlockPreviewCard(
block: Block,
isSelected: Boolean,
onClick: (Block) -> Unit,
onDragStart: () -> Unit,
onDrag: (Offset) -> Unit,
onDragEnd: () -> Unit,
cellSize: Dp
) {
val borderColor = if (isSelected) Color.White else Color.Gray.copy(alpha = 0.3f)
val borderWidth = if (isSelected) 3.dp else 1.dp
Card(
shape = RoundedCornerShape(10.dp),
border = BorderStroke(borderWidth, borderColor),
colors = CardDefaults.cardColors(containerColor = DeepBlue.copy(alpha = 0.5f)),
elevation = CardDefaults.cardElevation(defaultElevation = if (isSelected) 8.dp else 4.dp),
modifier = Modifier
.wrapContentSize()
.padding(4.dp)
.pointerInput(block) {
forEachGesture {
coroutineScope {
awaitPointerEventScope {
val down = awaitFirstDown(requireUnconsumed = false)
val drag = awaitTouchSlopOrCancellation(down.id) { change, _ ->
change.consume()
}
if (drag != null) {
Log.d("๐ฎ GESTURE", "onDragStart FIRED for ${block.name}")
onDragStart()
drag(drag.id) {
onDrag(it.positionChange())
it.consume()
}
Log.d("๐ฎ GESTURE", "onDragEnd FIRED for ${block.name}")
onDragEnd()
} else {
Log.d("๐ฎ GESTURE", "onTap FIRED for ${block.name}")
onClick(block)
}
}
}
}
}
) {
BlockShapeDisplay(block, cellSize)
}
}