Skip to content

Commit a05eba2

Browse files
refactor: migrate from Precompose to androidx libraries
1 parent ca68c09 commit a05eba2

13 files changed

Lines changed: 61 additions & 80 deletions

File tree

composeApp/build.gradle.kts

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -133,13 +133,13 @@ kotlin {
133133
@OptIn(ExperimentalComposeLibrary::class)
134134
implementation(compose.components.resources)
135135

136+
implementation(libs.androidx.lifecycle.viewmodel)
137+
implementation(libs.androidx.lifecycle.viewmodel.compose)
136138
implementation(libs.kotlinx.serialization.json)
137-
138-
implementation(libs.precompose)
139-
implementation(libs.precompose.viewmodel) // For ViewModel intergration
140139
}
141140
desktopMain.dependencies {
142141
implementation(compose.desktop.currentOs)
142+
implementation(libs.kotlinx.coroutines.swing)
143143
}
144144

145145
// 创建 iOS 公共源码集
@@ -189,6 +189,13 @@ android {
189189
compose.desktop {
190190
application {
191191
mainClass = "MainKt"
192+
buildTypes.release.proguard {
193+
// Compose Desktop release tasks run ProGuard by default.
194+
// CI only needs a stable distributable, so disable it here.
195+
isEnabled.set(false)
196+
optimize.set(false)
197+
obfuscate.set(false)
198+
}
192199

193200
nativeDistributions {
194201
targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb)
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.funny.data_saver.kmp
2+
3+
import androidx.activity.compose.BackHandler
4+
import androidx.compose.runtime.Composable
5+
6+
@Composable
7+
actual fun PlatformBackHandler(enabled: Boolean, onBack: () -> Unit) {
8+
BackHandler(enabled = enabled, onBack = onBack)
9+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package com.funny.data_saver.kmp
2+
3+
import androidx.compose.runtime.Composable
4+
5+
@Composable
6+
expect fun PlatformBackHandler(enabled: Boolean, onBack: () -> Unit)

composeApp/src/commonMain/kotlin/com/funny/data_saver/kmp/ViewModel.kt

Lines changed: 0 additions & 54 deletions
This file was deleted.

composeApp/src/commonMain/kotlin/com/funny/data_saver/ui/ExampleComposables.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ import androidx.compose.ui.platform.LocalInspectionMode
5757
import androidx.compose.ui.text.font.FontWeight
5858
import androidx.compose.ui.unit.dp
5959
import androidx.compose.ui.unit.sp
60+
import androidx.lifecycle.viewmodel.compose.viewModel
6061
import com.funny.data_saver.Constant
6162
import com.funny.data_saver.Constant.KEY_BEAN_EXAMPLE
6263
import com.funny.data_saver.Constant.KEY_BOOLEAN_EXAMPLE
@@ -75,7 +76,7 @@ import com.funny.data_saver.core.getLocalDataSaverInterface
7576
import com.funny.data_saver.core.rememberDataSaverState
7677
import com.funny.data_saver.kmp.IO
7778
import com.funny.data_saver.kmp.Log
78-
import com.funny.data_saver.kmp.viewModel
79+
import com.funny.data_saver.kmp.PlatformBackHandler
7980
import composedatasaver.composeapp.generated.resources.Res
8081
import composedatasaver.composeapp.generated.resources.action_add
8182
import composedatasaver.composeapp.generated.resources.action_add_id
@@ -172,7 +173,6 @@ import kotlinx.coroutines.launch
172173
import kotlinx.serialization.ExperimentalSerializationApi
173174
import kotlinx.serialization.Serializable
174175
import kotlinx.serialization.json.Json
175-
import moe.tlaster.precompose.navigation.BackHandler
176176
import org.jetbrains.compose.resources.stringResource
177177
import kotlin.random.Random
178178
import kotlin.reflect.typeOf
@@ -680,7 +680,7 @@ private fun CustomSealedClassExample() {
680680

681681
@Composable
682682
private fun CustomCoroutineScopeAndViewModelSample() {
683-
val vm: MainViewModel = viewModel(MainViewModel::class) { MainViewModel() }
683+
val vm: MainViewModel = viewModel { MainViewModel() }
684684

685685
ExampleCard(
686686
title = stringResource(Res.string.custom_scope_view_model_title),
@@ -772,7 +772,7 @@ private fun TimeConsumingJobExample() {
772772
Log.d("ExampleComposable", "TimeConsumingJobExample job: ${state.job}")
773773
}
774774

775-
BackHandler(state.job?.isCompleted == false) {
775+
PlatformBackHandler(state.job?.isCompleted == false) {
776776
showDialog = true
777777
Log.d("ExampleComposable", "TimeConsumingJobExample is not finished")
778778
}

composeApp/src/commonMain/kotlin/com/funny/data_saver/ui/MainViewModel.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package com.funny.data_saver.ui
22

3+
import androidx.lifecycle.ViewModel
4+
import androidx.lifecycle.viewModelScope
35
import com.funny.data_saver.AppConfig
46
import com.funny.data_saver.core.mutableDataSaverStateOf
5-
import moe.tlaster.precompose.viewmodel.ViewModel
6-
import moe.tlaster.precompose.viewmodel.viewModelScope
77

88
class MainViewModel: ViewModel() {
99
private val dataSaver get() = AppConfig.dataSaver
@@ -23,4 +23,4 @@ class MainViewModel: ViewModel() {
2323
companion object {
2424
private const val TAG = "MainViewModel"
2525
}
26-
}
26+
}

composeApp/src/commonMain/kotlin/com/funny/data_saver/ui/theme/Theme.kt

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import androidx.compose.runtime.Composable
88
import androidx.compose.ui.graphics.Color
99
import com.funny.cmaterialcolors.MaterialColors.Companion.Blue500
1010
import com.funny.cmaterialcolors.MaterialColors.Companion.BlueA700
11-
import moe.tlaster.precompose.PreComposeApp
1211

1312
private val DarkColorPalette = darkColorScheme(
1413
primary = Color(0xff3d557b),
@@ -44,12 +43,10 @@ fun FunnyTheme(
4443
LightColorPalette
4544
}
4645

47-
PreComposeApp {
48-
MaterialTheme(
49-
colorScheme = colors,
50-
typography = Typography,
51-
shapes = Shapes,
52-
content = content
53-
)
54-
}
46+
MaterialTheme(
47+
colorScheme = colors,
48+
typography = Typography,
49+
shapes = Shapes,
50+
content = content
51+
)
5552
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package com.funny.data_saver.kmp
2+
3+
import androidx.compose.runtime.Composable
4+
5+
@Composable
6+
actual fun PlatformBackHandler(enabled: Boolean, onBack: () -> Unit) = Unit

composeApp/src/desktopMain/kotlin/com/funny/data_saver/main.kt

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import androidx.compose.ui.window.Window
44
import androidx.compose.ui.window.application
55
import com.funny.data_saver.ui.App
66
import kotlinx.serialization.ExperimentalSerializationApi
7-
import moe.tlaster.precompose.ProvidePreComposeLocals
87

98
@OptIn(ExperimentalSerializationApi::class)
109
fun main() {
@@ -13,9 +12,7 @@ fun main() {
1312
onCloseRequest = ::exitApplication,
1413
title = "Compose Data Saver"
1514
) {
16-
ProvidePreComposeLocals {
17-
App()
18-
}
15+
App()
1916
}
2017
}
2118
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package com.funny.data_saver.kmp
2+
3+
import androidx.compose.runtime.Composable
4+
5+
@Composable
6+
actual fun PlatformBackHandler(enabled: Boolean, onBack: () -> Unit) = Unit

0 commit comments

Comments
 (0)