From 3c8c4f7222314260ff17bfefafb14bda0d5dc790 Mon Sep 17 00:00:00 2001 From: Akash Yadav Date: Sun, 16 Jul 2023 12:30:46 +0530 Subject: [PATCH] fix: simplify logic for determining forward/backward transition in main activity --- .../com/itsaky/androidide/activities/MainActivity.kt | 11 +---------- .../com/itsaky/androidide/viewmodel/MainViewModel.kt | 8 +++++++- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/com/itsaky/androidide/activities/MainActivity.kt b/app/src/main/java/com/itsaky/androidide/activities/MainActivity.kt index a167795462..3c86f669f8 100755 --- a/app/src/main/java/com/itsaky/androidide/activities/MainActivity.kt +++ b/app/src/main/java/com/itsaky/androidide/activities/MainActivity.kt @@ -184,16 +184,7 @@ class MainActivity : LimitlessIDEActivity() { MaterialSharedAxis.Y } - val isForward = when { - previous == SCREEN_MAIN && screen == SCREEN_TEMPLATE_LIST -> true - previous == SCREEN_TEMPLATE_LIST && screen == SCREEN_TEMPLATE_DETAILS -> true - previous == SCREEN_TEMPLATE_DETAILS && screen == SCREEN_TEMPLATE_LIST -> false - previous == SCREEN_TEMPLATE_DETAILS && screen == SCREEN_MAIN -> false - previous == SCREEN_TEMPLATE_LIST && screen == SCREEN_MAIN -> false - else -> throw IllegalStateException( - "Invalid screen states. Previous: $previous Current: $screen" - ) - } + val isForward = (screen ?: 0) - previous == 1 val transition = MaterialSharedAxis(axis, isForward) transition.doOnEnd { diff --git a/app/src/main/java/com/itsaky/androidide/viewmodel/MainViewModel.kt b/app/src/main/java/com/itsaky/androidide/viewmodel/MainViewModel.kt index d131094e9d..22ec69c94c 100644 --- a/app/src/main/java/com/itsaky/androidide/viewmodel/MainViewModel.kt +++ b/app/src/main/java/com/itsaky/androidide/viewmodel/MainViewModel.kt @@ -34,7 +34,13 @@ class MainViewModel : ViewModel() { companion object { - // main screens + // The values assigned to these variables reflect the order in which the screens are presented + // to the user. A screen with a lower value is displayed before a screen with a higher value. + // For example, SCREEN_MAIN is the first screen visible to the user, followed by SCREEN_TEMPLATE_LIST, + // and then SCREEN_TEMPLATE_DETAILS. + // + // These values are used as unique identifiers for the screens as well as for determining whether + // the screen change transition should be forward or backward. const val SCREEN_MAIN = 0 const val SCREEN_TEMPLATE_LIST = 1 const val SCREEN_TEMPLATE_DETAILS = 2