File tree Expand file tree Collapse file tree
commonMain/kotlin/neth/iecal/trease
jvmMain/kotlin/neth/iecal/trease Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -67,6 +67,8 @@ kotlin {
6767
6868 implementation(" com.squareup.okio:okio:3.9.0" )
6969 implementation(" io.github.kdroidfilter:composemediaplayer:0.8.6" )
70+
71+ implementation(project.dependencies.platform(" io.github.jan-tennert.supabase:bom:3.2.6" ))
7072 }
7173 commonTest.dependencies {
7274 implementation(libs.kotlin.test)
@@ -103,6 +105,7 @@ android {
103105 buildTypes {
104106 getByName(" release" ) {
105107 isMinifyEnabled = false
108+ signingConfig = signingConfigs.getByName(" debug" )
106109 }
107110 }
108111 compileOptions {
Original file line number Diff line number Diff line change 44 <application
55 android : allowBackup =" true"
66 android : icon =" @mipmap/ic_launcher"
7+ android : hardwareAccelerated =" true"
78 android : label =" @string/app_name"
89 android : roundIcon =" @mipmap/ic_launcher_round"
910 android : supportsRtl =" true"
Original file line number Diff line number Diff line change 1+ package neth.iecal.trease
2+
3+ import androidx.compose.ui.graphics.ImageBitmap
4+ import androidx.compose.ui.graphics.asImageBitmap
5+ import coil3.BitmapImage
6+ import coil3.Image
7+
8+ actual fun Image.toComposeImageBitmap (): ImageBitmap {
9+ if (this is BitmapImage ) {
10+ return this .bitmap.asImageBitmap()
11+ } else {
12+ throw IllegalArgumentException (" Image is not a BitmapImage. It might be a Vector or Drawable." )
13+ }
14+ }
Original file line number Diff line number Diff line change 11package neth.iecal.trease
22import androidx.compose.runtime.Composable
3+ import androidx.compose.runtime.remember
34import androidx.navigation.compose.NavHost
45import androidx.navigation.compose.composable
56import androidx.navigation.compose.rememberNavController
67import kotlinx.serialization.Serializable
8+ import neth.iecal.trease.ui.components.IsometricForest
79import neth.iecal.trease.ui.screens.HomeScreen
810import neth.iecal.trease.ui.theme.ZenTheme
911
@@ -14,11 +16,16 @@ data object Home
1416fun App () {
1517 val navController = rememberNavController()
1618 ZenTheme () {
17- NavHost (navController = navController, startDestination = Home ) {
18- composable<Home > {
19- HomeScreen ()
20- }
19+ // NavHost(navController = navController, startDestination = Home) {
20+ // composable<Home> {
21+ // HomeScreen()
22+ // }
23+ //
24+ // }
2125
22- }
26+ // Generate 500 IDs exactly like the user script
27+ val treeIds = remember { MutableList (21 ) { " tree" } }
28+
29+ IsometricForest (treeIds = treeIds)
2330 }
2431}
Original file line number Diff line number Diff line change 1+ package neth.iecal.trease
2+
3+ import androidx.compose.ui.graphics.ImageBitmap
4+ import coil3.Image
5+
6+ /* *
7+ * Converts a Coil 3 platform-agnostic Image into a Compose ImageBitmap.
8+ * Throws IllegalArgumentException if the image is not a BitmapImage (e.g. SVGs/Vectors).
9+ */
10+ expect fun Image.toComposeImageBitmap (): ImageBitmap
Original file line number Diff line number Diff line change @@ -13,19 +13,32 @@ import androidx.compose.foundation.shape.RoundedCornerShape
1313import androidx.compose.ui.Alignment
1414import androidx.compose.ui.Modifier
1515import androidx.compose.ui.layout.ContentScale
16+ import kotlinx.serialization.encodeToString
17+ import kotlinx.serialization.json.Json
1618import neth.iecal.trease.api.TreeRepository
1719import neth.iecal.trease.models.TreeUiState
20+ import neth.iecal.trease.utils.CacheManager
21+
1822
1923@OptIn(ExperimentalMaterial3Api ::class )
2024@Composable
2125fun TreeBottomSheet (onDismiss : () -> Unit ,onSelected : (String ) -> Unit ) {
2226 var uiState by remember { mutableStateOf<TreeUiState >(TreeUiState .Loading ) }
2327
2428 LaunchedEffect (Unit ) {
25- uiState = try {
26- TreeUiState .Success (TreeRepository .fetchTrees())
29+ val cacheManager = CacheManager ()
30+ val cache = cacheManager.readFile(" tree.json" )
31+ if (cache!= null ) {
32+ uiState = TreeUiState .Success (
33+ Json .decodeFromString(cache)
34+ )
35+ }
36+ try {
37+ val trees = TreeRepository .fetchTrees()
38+ uiState = TreeUiState .Success (trees)
39+ cacheManager.saveFile(" tree.json" ,Json .encodeToString(trees))
2740 } catch (e: Exception ) {
28- TreeUiState .Error (" Failed to load trees" )
41+ uiState = TreeUiState .Error (" Failed to load trees $e " )
2942 }
3043 }
3144
You can’t perform that action at this time.
0 commit comments