diff --git a/composeApp/src/androidMain/kotlin/moe/crx/overport/app/BitmapIconResizer.kt b/composeApp/src/androidMain/kotlin/moe/crx/overport/app/BitmapIconResizer.kt index 17efac5..9baaece 100644 --- a/composeApp/src/androidMain/kotlin/moe/crx/overport/app/BitmapIconResizer.kt +++ b/composeApp/src/androidMain/kotlin/moe/crx/overport/app/BitmapIconResizer.kt @@ -9,9 +9,10 @@ object BitmapIconResizer : IconResizer { override fun resize(bytes: ByteArray, width: Int, height: Int): ByteArray { val baos = ByteArrayOutputStream() - BitmapFactory.decodeByteArray(bytes, 0, bytes.size).apply { - reconfigure(width, height, Bitmap.Config.ARGB_8888) - }.compress(Bitmap.CompressFormat.PNG, 100, baos) + BitmapFactory.decodeByteArray(bytes, 0, bytes.size) + .copy(Bitmap.Config.ARGB_8888, true).apply { + reconfigure(width, height, Bitmap.Config.ARGB_8888) + }.compress(Bitmap.CompressFormat.PNG, 100, baos) return baos.toByteArray() } } \ No newline at end of file diff --git a/composeApp/src/commonMain/composeResources/values/strings.xml b/composeApp/src/commonMain/composeResources/values/strings.xml index 379c0d2..1279ce2 100644 --- a/composeApp/src/commonMain/composeResources/values/strings.xml +++ b/composeApp/src/commonMain/composeResources/values/strings.xml @@ -9,9 +9,7 @@ Cleaning up… Patcher Select version - You have no versions installed and overport release index is not available. - Check your internet connection. - + You have no versions installed and overport release index is not available. Check your internet connection. experimental latest custom @@ -28,7 +26,9 @@ Selected APK file cannot be parsed. APK file has been successfully exported. overport libraries cannot be downloaded. - Unknown error has been occurred. + Unknown error has been occurred + Can't checkout version + Selected overport version is unavailable for download. Please, check your internet connection or choose another version. Update available! Unknown Playable @@ -36,7 +36,7 @@ Not working Loading… Not recommended, use at your own risk - Copy ovrport libraries + Copy overport libraries Copy OVRPlugin if VrApi is present Fix minimal Android SDK Generate ovrport config diff --git a/composeApp/src/commonMain/kotlin/moe/crx/overport/app/composables/PatcherScreen.kt b/composeApp/src/commonMain/kotlin/moe/crx/overport/app/composables/PatcherScreen.kt index 55e6913..46efca2 100644 --- a/composeApp/src/commonMain/kotlin/moe/crx/overport/app/composables/PatcherScreen.kt +++ b/composeApp/src/commonMain/kotlin/moe/crx/overport/app/composables/PatcherScreen.kt @@ -11,10 +11,9 @@ import androidx.compose.ui.Modifier import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.launch import moe.crx.overport.app.model.MainViewModel +import moe.crx.overport.utils.CantCheckoutException import org.jetbrains.compose.resources.getString -import overportapp.composeapp.generated.resources.Res -import overportapp.composeapp.generated.resources.apk_file_exported -import overportapp.composeapp.generated.resources.unknown_error +import overportapp.composeapp.generated.resources.* import java.io.InputStream import java.io.OutputStream @@ -101,6 +100,10 @@ fun PatcherScreen( try { viewModel.checkout(it, name) viewModel.prepare(stream) + } catch (_: CantCheckoutException) { + viewModel.cancel() + errorMessage = + getString(Res.string.cant_checkout_title) to getString(Res.string.cant_checkout_message) } catch (ex: Throwable) { viewModel.cancel() errorMessage = getString(Res.string.unknown_error) to ex.stackTraceToString() diff --git a/composeApp/src/commonMain/kotlin/moe/crx/overport/app/composables/VersionManagerSheet.kt b/composeApp/src/commonMain/kotlin/moe/crx/overport/app/composables/VersionManagerSheet.kt index f70cd24..8b43522 100644 --- a/composeApp/src/commonMain/kotlin/moe/crx/overport/app/composables/VersionManagerSheet.kt +++ b/composeApp/src/commonMain/kotlin/moe/crx/overport/app/composables/VersionManagerSheet.kt @@ -35,12 +35,11 @@ fun VersionManagerSheet(viewModel: MainViewModel, onSelected: (String) -> Unit, } ModalBottomSheet( - modifier = Modifier.fillMaxHeight(), onDismissRequest = { onCancel() }, ) { if (available == null) { Row( - modifier = Modifier.fillMaxSize(), + modifier = Modifier.fillMaxWidth().height(240.dp), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.Center ) { diff --git a/gradle.properties b/gradle.properties index fb0f324..492bfae 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,13 +1,10 @@ #Kotlin kotlin.code.style=official kotlin.daemon.jvmargs=-Xmx2048M - #Gradle org.gradle.jvmargs=-Xmx2048M -Dfile.encoding=UTF-8 - #Android android.nonTransitiveRClass=true android.useAndroidX=true - #Application -appVersion=1.2.0 \ No newline at end of file +appVersion=1.2.1 \ No newline at end of file diff --git a/overportcli/build.gradle.kts b/overportcli/build.gradle.kts index d00bc96..5718164 100644 --- a/overportcli/build.gradle.kts +++ b/overportcli/build.gradle.kts @@ -8,7 +8,7 @@ plugins { } group = "moe.crx" -version = "1.2.0" +version = "1.2.1" dependencies { implementation(libs.android.tools.build) diff --git a/overportcli/src/main/java/moe/crx/overport/patching/PatcherContext.kt b/overportcli/src/main/java/moe/crx/overport/patching/PatcherContext.kt index 686af08..7cb094c 100644 --- a/overportcli/src/main/java/moe/crx/overport/patching/PatcherContext.kt +++ b/overportcli/src/main/java/moe/crx/overport/patching/PatcherContext.kt @@ -6,6 +6,7 @@ import com.reandroid.archive.ArchiveFile import com.reandroid.archive.FileInputSource import com.reandroid.archive.io.ZipFileInput import moe.crx.overport.config.OverportPatchedInfo +import moe.crx.overport.utils.CantCheckoutException import moe.crx.overport.utils.NameFormatter import moe.crx.overport.versions.VersionManager import org.jf.baksmali.Baksmali @@ -51,14 +52,8 @@ class PatcherContext( } fun checkout() { - var successful = VersionManager(patcherDirectory).checkout(overportVersion) - - if (successful == null) { - successful = VersionManager(patcherDirectory).checkout("latest") - } - - checkNotNull(successful) - overportVersion = successful + overportVersion = VersionManager(patcherDirectory).checkout(overportVersion) + ?: throw CantCheckoutException("Can't checkout an overport release. Please, check your internet connection or choose another version.") } fun prepare(stream: InputStream) { diff --git a/overportcli/src/main/java/moe/crx/overport/utils/Exceptions.kt b/overportcli/src/main/java/moe/crx/overport/utils/Exceptions.kt new file mode 100644 index 0000000..14e3269 --- /dev/null +++ b/overportcli/src/main/java/moe/crx/overport/utils/Exceptions.kt @@ -0,0 +1,3 @@ +package moe.crx.overport.utils + +class CantCheckoutException(message: String) : IllegalStateException(message) \ No newline at end of file diff --git a/overportcli/src/main/java/moe/crx/overport/versions/VersionManager.kt b/overportcli/src/main/java/moe/crx/overport/versions/VersionManager.kt index 44edaa0..1f7d57a 100644 --- a/overportcli/src/main/java/moe/crx/overport/versions/VersionManager.kt +++ b/overportcli/src/main/java/moe/crx/overport/versions/VersionManager.kt @@ -10,7 +10,7 @@ class VersionManager(val workingDirectory: File) { companion object { val json = Json { ignoreUnknownKeys = true } - const val VERSION = "1.2.0" + const val VERSION = "1.2.1" private fun isVersionLower(left: String, right: String): Boolean { val (lY, lM, lD) = left.substringBeforeLast('-').split('.').map { it.toInt() }