From 6d1e6771b8bae1ecb904fa2f40a7a0e07e82c0a5 Mon Sep 17 00:00:00 2001
From: Janne Mareike Koschinski <mail@justjanne.de>
Date: Mon, 4 Dec 2023 23:25:29 +0100
Subject: [PATCH] fix: wrong account load crash

---
 .../kotlin/de/chaosdorf/meteroid/ui/MeteroidRouter.kt  | 10 ++++++----
 gradle.properties                                      |  3 ++-
 .../src/main/kotlin/util/ProjectExtensions.kt          |  9 +++------
 3 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/app/src/main/kotlin/de/chaosdorf/meteroid/ui/MeteroidRouter.kt b/app/src/main/kotlin/de/chaosdorf/meteroid/ui/MeteroidRouter.kt
index 3f10300..7b74224 100644
--- a/app/src/main/kotlin/de/chaosdorf/meteroid/ui/MeteroidRouter.kt
+++ b/app/src/main/kotlin/de/chaosdorf/meteroid/ui/MeteroidRouter.kt
@@ -87,24 +87,26 @@ fun MeteroidRouter(
         MeteroidScreen.Home.Purchase.route, arguments = listOf(
           navArgument("server") {
             type = NavType.LongType
-            initialAccount.server?.let { defaultValue = it.value }
+            defaultValue = initialAccount.server?.value ?: -1L
           },
           navArgument("user") {
             type = NavType.LongType
-            initialAccount.user?.let { defaultValue = it.value }
+            defaultValue = initialAccount.user?.value ?: -1L
           },
         )
       ) { entry ->
         val serverId = entry.arguments?.getLong("server")?.let(::ServerId)
+          ?: ServerId(-1L)
         val userId = entry.arguments?.getLong("user")?.let(::UserId)
+          ?: UserId(-1L)
 
         LaunchedEffect(serverId, userId) {
-          if (serverId == null || userId == null) {
+          if (!serverId.isValid() || !userId.isValid()) {
             navigationViewModel.expanded.value = true
           }
         }
 
-        if (serverId != null && userId != null) {
+        if (serverId.isValid() && userId.isValid()) {
           val viewModel: PurchaseViewModel = hiltViewModel(
             key = MeteroidScreen.Home.Purchase.build(serverId, userId)
           )
diff --git a/gradle.properties b/gradle.properties
index de22634..2135a6f 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -22,7 +22,8 @@
 # http://www.gradle.org/docs/current/userguide/build_environment.html
 # Specifies the JVM arguments used for the daemon process.
 # The setting is particularly useful for tweaking memory settings.
-org.gradle.jvmargs=-Xmx2048m
+org.gradle.jvmargs=-Xmx4096m
+org.gradle.configuration-cache=true
 # When configured, Gradle will run in incubating parallel mode.
 # This option should only be used with decoupled projects. More details, visit
 # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
diff --git a/gradle/convention/src/main/kotlin/util/ProjectExtensions.kt b/gradle/convention/src/main/kotlin/util/ProjectExtensions.kt
index d1d4eb7..7e04e11 100644
--- a/gradle/convention/src/main/kotlin/util/ProjectExtensions.kt
+++ b/gradle/convention/src/main/kotlin/util/ProjectExtensions.kt
@@ -1,16 +1,13 @@
 package util
 
 import org.gradle.api.Project
-import java.io.ByteArrayOutputStream
 import java.util.*
 
+@Suppress("UnstableApiUsage")
 fun Project.cmd(vararg command: String) = try {
-  val stdOut = ByteArrayOutputStream()
-  exec {
+  providers.exec {
     commandLine(*command)
-    standardOutput = stdOut
-  }
-  stdOut.toString(Charsets.UTF_8.name()).trim()
+  }.standardOutput.asText.get().trim()
 } catch (e: Throwable) {
   e.printStackTrace()
   null
-- 
GitLab