diff --git a/commonUI/src/androidMain/kotlin/ch/dissem/yaep/ui/common/App.android.kt b/commonUI/src/androidMain/kotlin/ch/dissem/yaep/ui/common/App.android.kt new file mode 100644 index 0000000..da6a7ab --- /dev/null +++ b/commonUI/src/androidMain/kotlin/ch/dissem/yaep/ui/common/App.android.kt @@ -0,0 +1,11 @@ +package ch.dissem.yaep.ui.common + +import ch.dissem.yaep.domain.Game +import io.github.oshai.kotlinlogging.KotlinLogging +import kotlinx.coroutines.CoroutineScope + +val log = KotlinLogging.logger {} + +actual fun CoroutineScope.logGame(game: Game) { + log.debug { "Game: $game" } +} \ No newline at end of file diff --git a/commonUI/src/commonMain/kotlin/ch/dissem/yaep/ui/common/App.kt b/commonUI/src/commonMain/kotlin/ch/dissem/yaep/ui/common/App.kt index afce694..cd97f92 100644 --- a/commonUI/src/commonMain/kotlin/ch/dissem/yaep/ui/common/App.kt +++ b/commonUI/src/commonMain/kotlin/ch/dissem/yaep/ui/common/App.kt @@ -35,24 +35,13 @@ import ch.dissem.yaep.domain.NeighbourClue import ch.dissem.yaep.domain.OrderClue import ch.dissem.yaep.domain.SameColumnClue import ch.dissem.yaep.domain.TripletClue -import io.github.oshai.kotlinlogging.KotlinLogging -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch +import kotlinx.coroutines.CoroutineScope import org.jetbrains.compose.resources.painterResource import yaep.commonui.generated.resources.Res import yaep.commonui.generated.resources.neighbour import yaep.commonui.generated.resources.order -import kotlin.io.path.Path -import kotlin.io.path.createDirectories -import kotlin.io.path.createFile -import kotlin.io.path.isDirectory -import kotlin.io.path.notExists -import kotlin.io.path.writeText -import kotlin.time.Clock import kotlin.time.ExperimentalTime -private val log = KotlinLogging.logger {} - class DisplayClue(val clue: C) { var isActive: Boolean by mutableStateOf(true) @@ -82,22 +71,8 @@ fun App( val time by timer.elapsedTime.collectAsState("00:00") var isSolved by remember(game) { mutableStateOf(false) } LaunchedEffect(game) { - launch(Dispatchers.IO) { - val dirName = """${System.getProperty("user.home")}/.yaep""" - val dir = Path(dirName) - if (dir.notExists()) { - dir.createDirectories() - } else if (!dir.isDirectory()) { - log.error { "Yaep data directory already exists and is not a directory: $dir" } - log.debug { "Game: $game" } - } else { - val fileName = "$dirName/${Clock.System.now()}.yaep" - Path(fileName) - .createFile() - .writeText(game.toString()) - log.info { "Saved game to $fileName" } - } - } + logGame(game) + game.onStart { timer.start() } @@ -273,6 +248,8 @@ fun VerticalClue( } } +expect fun CoroutineScope.logGame(game: Game) + @Composable fun ClueCard( modifier: Modifier = Modifier, diff --git a/commonUI/src/jvmMain/kotlin/ch/dissem/yaep/ui/common/App.jvm.kt b/commonUI/src/jvmMain/kotlin/ch/dissem/yaep/ui/common/App.jvm.kt new file mode 100644 index 0000000..d93e973 --- /dev/null +++ b/commonUI/src/jvmMain/kotlin/ch/dissem/yaep/ui/common/App.jvm.kt @@ -0,0 +1,37 @@ +package ch.dissem.yaep.ui.common + +import ch.dissem.yaep.domain.Game +import io.github.oshai.kotlinlogging.KotlinLogging +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlin.io.path.Path +import kotlin.io.path.createDirectories +import kotlin.io.path.createFile +import kotlin.io.path.isDirectory +import kotlin.io.path.notExists +import kotlin.io.path.writeText +import kotlin.time.Clock +import kotlin.time.ExperimentalTime + +val log = KotlinLogging.logger {} + +@OptIn(ExperimentalTime::class) +actual fun CoroutineScope.logGame(game: Game) { + launch(Dispatchers.IO) { + val dirName = """${System.getProperty("user.home")}/.yaep""" + val dir = Path(dirName) + if (dir.notExists()) { + dir.createDirectories() + } else if (!dir.isDirectory()) { + log.error { "Yaep data directory already exists and is not a directory: $dir" } + log.debug { "Game: $game" } + } else { + val fileName = "$dirName/${Clock.System.now()}.yaep" + Path(fileName) + .createFile() + .writeText(game.toString()) + log.info { "Saved game to $fileName" } + } + } +} \ No newline at end of file