diff --git a/app/src/main/kotlin/com/aliucord/manager/MainActivity.kt b/app/src/main/kotlin/com/aliucord/manager/MainActivity.kt index cd53a4b..e8f6e2a 100644 --- a/app/src/main/kotlin/com/aliucord/manager/MainActivity.kt +++ b/app/src/main/kotlin/com/aliucord/manager/MainActivity.kt @@ -9,22 +9,23 @@ import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.BackHandler import androidx.activity.compose.setContent -import androidx.compose.animation.* -import androidx.compose.animation.core.tween +import androidx.compose.animation.core.* import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.ui.unit.IntOffset import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen import androidx.core.view.WindowCompat import cafe.adriel.voyager.core.annotation.ExperimentalVoyagerApi -import cafe.adriel.voyager.core.stack.StackEvent import cafe.adriel.voyager.navigator.* -import cafe.adriel.voyager.transitions.ScreenTransition +import cafe.adriel.voyager.transitions.SlideTransition import com.aliucord.manager.manager.PreferencesManager -import com.aliucord.manager.ui.components.* +import com.aliucord.manager.ui.components.ManagerTheme +import com.aliucord.manager.ui.components.Theme import com.aliucord.manager.ui.components.dialogs.StoragePermissionsDialog import com.aliucord.manager.ui.screens.home.HomeScreen import com.aliucord.manager.ui.widgets.updater.UpdaterDialog import com.aliucord.manager.util.IS_CUSTOM_BUILD +import com.aliucord.manager.util.back import org.koin.android.ext.android.inject class MainActivity : ComponentActivity() { @@ -60,28 +61,17 @@ class MainActivity : ComponentActivity() { navigator.back(this@MainActivity) } - ScreenTransition( + SlideTransition( navigator = navigator, - transition = { unifiedScreenTransition(navigator.lastEvent) } + disposeScreenAfterTransitionEnd = true, + animationSpec = spring( + stiffness = Spring.StiffnessMedium, + visibilityThreshold = IntOffset.VisibilityThreshold, + ) ) } } } } } - - private fun unifiedScreenTransition(lastEvent: StackEvent): ContentTransform = when (lastEvent) { - StackEvent.Push, StackEvent.Replace -> ContentTransform( - targetContentEnter = slideInHorizontally { it * 2 } + fadeIn(tween(durationMillis = 400)), - initialContentExit = fadeOut(tween(durationMillis = 400, delayMillis = 300)), - ) - - StackEvent.Pop -> ContentTransform( - targetContentEnter = EnterTransition.None, - targetContentZIndex = -1f, - initialContentExit = slideOutHorizontally { it * 2 } + fadeOut(tween(durationMillis = 400, delayMillis = 300)), - ) - - StackEvent.Idle -> fadeIn() togetherWith fadeOut() - } } diff --git a/app/src/main/kotlin/com/aliucord/manager/ui/components/AnimatedVersionDisplay.kt b/app/src/main/kotlin/com/aliucord/manager/ui/components/AnimatedVersionDisplay.kt deleted file mode 100644 index fad6644..0000000 --- a/app/src/main/kotlin/com/aliucord/manager/ui/components/AnimatedVersionDisplay.kt +++ /dev/null @@ -1,36 +0,0 @@ -package com.aliucord.manager.ui.components - -import androidx.compose.animation.* -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.alpha -import androidx.compose.ui.res.stringResource -import androidx.compose.ui.text.SpanStyle -import androidx.compose.ui.text.font.FontWeight -import androidx.compose.ui.text.withStyle -import com.aliucord.manager.R -import com.aliucord.manager.ui.util.DiscordVersion - -@Composable -fun AnimatedVersionDisplay( - version: DiscordVersion, - modifier: Modifier = Modifier, -) { - AnimatedVisibility( - enter = fadeIn() + slideInVertically { it * -2 }, - exit = fadeOut() + slideOutVertically { it * -2 }, - visible = version !is DiscordVersion.None, - modifier = modifier, - ) { - VersionDisplay( - version = version, - prefix = { - withStyle(SpanStyle(fontWeight = FontWeight.Bold)) { - append(stringResource(R.string.version_supported)) - append(" ") - } - }, - modifier = Modifier.alpha(.5f), - ) - } -} diff --git a/app/src/main/kotlin/com/aliucord/manager/ui/previews/dialogs/UninstallPluginDialogPreview.kt b/app/src/main/kotlin/com/aliucord/manager/ui/previews/dialogs/UninstallPluginDialogPreview.kt index a80ddd8..aed470a 100644 --- a/app/src/main/kotlin/com/aliucord/manager/ui/previews/dialogs/UninstallPluginDialogPreview.kt +++ b/app/src/main/kotlin/com/aliucord/manager/ui/previews/dialogs/UninstallPluginDialogPreview.kt @@ -4,7 +4,6 @@ import android.content.res.Configuration import androidx.compose.runtime.Composable import androidx.compose.ui.tooling.preview.Preview import com.aliucord.manager.ui.components.ManagerTheme -import com.aliucord.manager.ui.screens.logs.components.dialogs.DeleteLogsDialog import com.aliucord.manager.ui.screens.plugins.components.dialogs.UninstallPluginDialog @Composable diff --git a/app/src/main/kotlin/com/aliucord/manager/ui/screens/home/HomeScreen.kt b/app/src/main/kotlin/com/aliucord/manager/ui/screens/home/HomeScreen.kt index 0d9fce7..41c19cb 100644 --- a/app/src/main/kotlin/com/aliucord/manager/ui/screens/home/HomeScreen.kt +++ b/app/src/main/kotlin/com/aliucord/manager/ui/screens/home/HomeScreen.kt @@ -27,7 +27,8 @@ import cafe.adriel.voyager.koin.koinScreenModel import cafe.adriel.voyager.navigator.LocalNavigator import cafe.adriel.voyager.navigator.currentOrThrow import com.aliucord.manager.R -import com.aliucord.manager.ui.components.* +import com.aliucord.manager.ui.components.LoadFailure +import com.aliucord.manager.ui.components.ProjectHeader import com.aliucord.manager.ui.screens.home.components.* import com.aliucord.manager.ui.screens.patchopts.PatchOptionsScreen import com.aliucord.manager.ui.screens.plugins.PluginsScreen @@ -145,34 +146,24 @@ fun HomeScreenLoadedContent( secondaryInstall = true, onClick = onClickInstall, modifier = Modifier - .padding(top = 10.dp) + .padding(vertical = 10.dp) .height(50.dp) .fillMaxWidth() ) } - item(key = "SUPPORTED_VERSION") { - AnimatedVersionDisplay( - version = supportedVersion, - modifier = Modifier.padding(bottom = 30.dp), - ) - } - - val installations = (state as? InstallsState.Fetched)?.data - ?: return@LazyColumn - - items(installations, key = { it.packageName }) { + items(state.data, key = { it.packageName }) { item -> AnimatedVisibility( enter = fadeIn() + slideInHorizontally { it * -2 }, exit = fadeOut() + slideOutHorizontally { it * 2 }, visible = supportedVersion !is DiscordVersion.None, ) { InstalledItemCard( - data = it, - onUpdate = { onUpdate(it.packageName) }, - onOpenApp = { onOpenApp(it.packageName) }, - onOpenInfo = { onOpenAppInfo(it.packageName) }, - onOpenPlugins = { onOpenPlugins(it.packageName) }, + data = item, + onUpdate = { onUpdate(item.packageName) }, + onOpenApp = { onOpenApp(item.packageName) }, + onOpenInfo = { onOpenAppInfo(item.packageName) }, + onOpenPlugins = { onOpenPlugins(item.packageName) }, modifier = Modifier.fillMaxWidth() ) }