Skip to content

Commit b8e6044

Browse files
Use read only values for AweryTheme because they may be changed via AwerySettings,
Use Androidx navigation instead of voyager because of Predictive back gesture, Move all state from CatalogPane to CatalogPaneState, Shuffle feeds before loading, Updated libraries, Move an experience gathering into the MainRouteViewModel so that loaded feeds would be saved and reused during navigation, Always use Lax mode for StrictMode Signed-off-by: MrBoom <[email protected]>
1 parent 0bdc677 commit b8e6044

File tree

46 files changed

+1469
-920
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+1469
-920
lines changed

app/build.gradle.kts

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,13 +43,7 @@ kotlin {
4343
implementation(compose.foundation)
4444
api(compose.components.resources)
4545
api(libs.sonner)
46-
47-
// Navigation
4846
implementation(libs.androidx.navigation)
49-
api(libs.voyager.navigator)
50-
api(libs.voyager.screenmodel)
51-
api(libs.voyager.tab.navigator)
52-
api(libs.voyager.transitions)
5347

5448
// Adaptive layout
5549
implementation(libs.adaptive)

app/src/androidMain/kotlin/com/mrboomdev/awery/MainActivity.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class MainActivity: ComponentActivity() {
2121
super.onCreate(savedInstanceState)
2222

2323
val initialRoute = when {
24-
else -> SplashRoute()
24+
else -> SplashRoute
2525
}
2626

2727
setContent {

ext/src/main/kotlin/com/mrboomdev/awery/ext/util/GlobalId.kt

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,26 @@ value class GlobalId(val value: String) {
2121
val managerId get() = parse(value)[0]
2222
val sourceId get() = parse(value).getOrNull(1)
2323
val itemId get() = parse(value).getOrNull(2)
24+
25+
override fun toString() = buildString {
26+
append("{ \"manager_id\": \"")
27+
append(managerId)
28+
append("\"")
29+
30+
sourceId?.let {
31+
append(", \"source_id\": \"")
32+
append(it)
33+
append("\"")
34+
}
35+
36+
itemId?.let {
37+
append(", \"item_id\": \"")
38+
append(it)
39+
append("\"")
40+
}
41+
42+
append(" }")
43+
}
2444

2545
companion object {
2646
fun parse(globalId: String) = globalId.split(";;;").let {

gradle/libs.versions.toml

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,18 @@
11
[versions]
22
android-gradle-plugin = "8.7.3"
3-
androidx-adaptive = "1.0.0"
3+
androidx-adaptive = "1.1.0"
44
kotlinx-serialization = "1.8.0"
55
kotlin = "2.1.0"
6-
lifecycle-viewmodel-compose = "2.8.7"
76
media3 = "1.5.1"
87
markwon = "4.6.2"
9-
room = "2.7.0-rc01"
8+
room = "2.7.0-rc02"
109
coil = "3.1.0"
1110
okhttp = "5.0.0-alpha.14"
12-
voyager-navigator = "1.1.0-beta02"
1311

1412
[libraries]
1513
safeargsnext = { group = "ru.mrboomdev.safeargsnext", name = "safeargsnext", version = "1.0.1" }
16-
lifecycle-viewmodel-compose = { module = "androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "lifecycle-viewmodel-compose" }
17-
kotlinx-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version = "1.9.0" }
14+
lifecycle-viewmodel-compose = { module = "androidx.lifecycle:lifecycle-viewmodel-compose", version = "2.8.7" }
15+
kotlinx-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version = "1.10.1" }
1816
balloon = { module = "com.github.skydoves:balloon", version = "1.6.11" }
1917
ebook-reader = { module = "com.github.VipulOG:ebook-reader", version = "0.1.6" }
2018

@@ -25,14 +23,10 @@ androidx-splashscreen = { module = "androidx.core:core-splashscreen", version =
2523
androidx-shortcuts = { module = "androidx.core:core-google-shortcuts", version = "1.1.0" }
2624
androidx-browser = { module = "androidx.browser:browser", version = "1.8.0" }
2725
androidx-preference = { module = "androidx.preference:preference-ktx", version = "1.2.1" }
28-
androidx-webkit = { module = "androidx.webkit:webkit", version = "1.12.1" }
26+
androidx-webkit = { module = "androidx.webkit:webkit", version = "1.13.0" }
2927
material = { group = "com.google.android.material", name = "material", version = "1.12.0" }
3028
hauler = { module = "app.futured.hauler:hauler", version = "5.0.0" }
3129
sonner = { module = "io.github.dokar3:sonner", version = "0.3.8" }
32-
voyager-navigator = { module = "cafe.adriel.voyager:voyager-navigator", version.ref = "voyager-navigator" }
33-
voyager-screenmodel = { module = "cafe.adriel.voyager:voyager-screenmodel", version.ref = "voyager-navigator" }
34-
voyager-tab-navigator = { module = "cafe.adriel.voyager:voyager-tab-navigator", version.ref = "voyager-navigator" }
35-
voyager-transitions = { module = "cafe.adriel.voyager:voyager-transitions", version.ref = "voyager-navigator" }
3630
xcrash = { module = "com.iqiyi.xcrash:xcrash-android-lib", version = "3.1.0" }
3731
leakcanary = { module = "com.squareup.leakcanary:leakcanary-android", version = "2.14" }
3832

@@ -46,13 +40,14 @@ coil-compose = { module = "io.coil-kt.coil3:coil-compose", version.ref = "coil"
4640
coil-network-okhttp = { module = "io.coil-kt.coil3:coil-network-okhttp", version.ref = "coil" }
4741

4842
# Compose
49-
compose-bom = { module = "androidx.compose:compose-bom", version = "2025.02.00" }
43+
compose-bom = { module = "androidx.compose:compose-bom", version = "2025.03.00" }
5044
compose-runtime = { module = "androidx.compose.runtime:runtime" }
5145
compose-foundation = { module = "androidx.compose.foundation:foundation" }
5246
compose-activity = { module = "androidx.activity:activity-compose", version = "1.10.1" }
53-
compose-material3 = { module = "androidx.compose.material3:material3", version = "1.4.0-alpha09" }
47+
compose-material3 = { module = "androidx.compose.material3:material3", version = "1.4.0-alpha10" }
5448
compose-ui = { group = "androidx.compose.ui", name = "ui" }
5549
compose-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" }
50+
androidx-navigation = { group = "org.jetbrains.androidx.navigation", name = "navigation-compose", version = "2.8.0-alpha10"}
5651

5752
# Database
5853
room-compiler = { group = "androidx.room", name = "room-compiler", version.ref = "room" }
@@ -98,10 +93,6 @@ okhttp-logging = { module = "com.squareup.okhttp3:logging-interceptor", version.
9893
okhttp-brotli = { module = "com.squareup.okhttp3:okhttp-brotli", version = "4.12.0" }
9994
okhttp-dnsoverhttps = { module = "com.squareup.okhttp3:okhttp-dnsoverhttps", version.ref = "okhttp" }
10095

101-
# For removal (The same fucking thing. Delete later after voyager navigation would be done)
102-
androidx-navigation = { group = "org.jetbrains.androidx.navigation", name = "navigation-compose", version = "2.8.0-alpha10"}
103-
androidx-navigation-compose = { module = "androidx.navigation:navigation-compose", version = "2.8.8" }
104-
10596
[bundles]
10697
okhttp = ["okhttp", "okhttp-brotli", "okhttp-dnsoverhttps", "okhttp-logging"]
10798

897 KB
Loading

shared/build.gradle.kts

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -60,12 +60,16 @@ kotlin {
6060
jvm("desktop")
6161

6262
compilerOptions {
63-
freeCompilerArgs = listOf("-Xexpect-actual-classes")
63+
freeCompilerArgs = listOf(
64+
"-Xexpect-actual-classes"
65+
)
6466
}
6567

6668
sourceSets {
6769
all {
68-
languageSettings.optIn("androidx.lifecycle.viewmodel.compose.SavedStateHandleSaveableApi")
70+
languageSettings.optIn(
71+
"androidx.lifecycle.viewmodel.compose.SavedStateHandleSaveableApi"
72+
)
6973
}
7074

7175
commonMain {
@@ -95,14 +99,8 @@ kotlin {
9599
implementation(libs.compose.runtime)
96100
implementation(libs.compose.ui)
97101
implementation(libs.compose.foundation)
98-
api(compose.components.resources)
99-
100-
// Navigation
101102
implementation(libs.androidx.navigation)
102-
api(libs.voyager.navigator)
103-
api(libs.voyager.screenmodel)
104-
api(libs.voyager.tab.navigator)
105-
api(libs.voyager.transitions)
103+
api(compose.components.resources)
106104

107105
// Adaptive layout
108106
implementation(libs.adaptive)

shared/src/androidMain/kotlin/com/mrboomdev/awery/platform/Platform.android.kt

Lines changed: 3 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,8 @@ import android.os.StrictMode.ThreadPolicy
1818
import android.os.StrictMode.VmPolicy
1919
import android.util.Log
2020
import android.widget.Toast
21-
import androidx.appcompat.app.AppCompatActivity
2221
import androidx.core.content.getSystemService
2322
import com.google.android.material.color.DynamicColors
24-
import com.mrboomdev.awery.generated.*
2523
import com.mrboomdev.awery.shared.BuildConfig
2624
import com.mrboomdev.awery.utils.SerializableRequired
2725
import com.mrboomdev.awery.utils.tryOrTry
@@ -150,40 +148,8 @@ actual object Platform: ContextWrapper(null) {
150148
* Initialize platform-related stuff
151149
*/
152150
internal actual suspend fun platformInit() {
153-
setupStrictMode()
154-
}
155-
156-
/**
157-
* Fuck you, Android. It's not my problem that some people do install A LOT of extensions,
158-
* so that app stops responding.
159-
*/
160-
private fun setupStrictMode() {
161-
if(!BuildConfig.DEBUG) {
162-
StrictMode.setThreadPolicy(ThreadPolicy.LAX)
163-
StrictMode.setVmPolicy(VmPolicy.LAX)
164-
return
165-
}
166-
167-
StrictMode.setThreadPolicy(
168-
ThreadPolicy.Builder()
169-
.detectCustomSlowCalls()
170-
.detectNetwork()
171-
.penaltyLog()
172-
.penaltyDialog()
173-
.build())
174-
175-
StrictMode.setVmPolicy(
176-
VmPolicy.Builder()
177-
.detectActivityLeaks()
178-
.detectLeakedRegistrationObjects()
179-
.penaltyLog()
180-
.apply {
181-
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
182-
penaltyListener({ it.run() }) { violation ->
183-
toast("An VM Policy has benn violated!")
184-
Log.e(TAG, "An VM Policy has benn violated!", violation)
185-
}
186-
}
187-
}.build())
151+
// A lot of extensions do violate StrictMode, so we simply disable it.
152+
StrictMode.setThreadPolicy(ThreadPolicy.LAX)
153+
StrictMode.setVmPolicy(VmPolicy.LAX)
188154
}
189155
}

shared/src/androidMain/kotlin/com/mrboomdev/awery/ui/utils/ScreenModels.android.kt

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

shared/src/androidMobile/kotlin/com/mrboomdev/awery/ui/AweryRoot.android.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.mrboomdev.awery.ui
22

33
import androidx.compose.runtime.Composable
4-
import com.mrboomdev.awery.ui.routes.BaseRoute
54

65
@Composable
76
actual fun AweryRootImpl(content: @Composable () -> Unit) {
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.mrboomdev.awery.ui.routes
22

3-
import kotlinx.serialization.Serializable
3+
import androidx.compose.runtime.Composable
44

5-
@Serializable
6-
actual class MainRoute : DefaultMainRoute()
5+
@Composable
6+
actual fun MainRoute.Content(viewModel: MainRouteViewModel) = DefaultMainRouteContent(viewModel)

0 commit comments

Comments
 (0)