Skip to content

Commit

Permalink
Refactor: Add animatedComposable to replace composable to add animati…
Browse files Browse the repository at this point in the history
…ons (#741)

* refactor: add animatedComposable

* refactor: replace composable with animatedComposable

* lint: run ktlintFormat
  • Loading branch information
anilbeesetti authored Nov 16, 2023
1 parent 0511002 commit 554cc26
Show file tree
Hide file tree
Showing 12 changed files with 58 additions and 91 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package dev.anilbeesetti.nextplayer.core.ui.designsystem

import androidx.compose.animation.AnimatedVisibilityScope
import androidx.compose.animation.core.tween
import androidx.compose.animation.fadeIn
import androidx.compose.animation.fadeOut
import androidx.compose.animation.slideInHorizontally
import androidx.compose.animation.slideOutHorizontally
import androidx.compose.runtime.Composable
import androidx.navigation.NamedNavArgument
import androidx.navigation.NavBackStackEntry
import androidx.navigation.NavDeepLink
import androidx.navigation.NavGraphBuilder
import androidx.navigation.compose.composable

fun NavGraphBuilder.animatedComposable(
route: String,
arguments: List<NamedNavArgument> = emptyList(),
deepLinks: List<NavDeepLink> = emptyList(),
content: @Composable AnimatedVisibilityScope.(NavBackStackEntry) -> Unit
) = composable(
route = route,
arguments = arguments,
deepLinks = deepLinks,
enterTransition = {
slideInHorizontally(initialOffsetX = { it }, animationSpec = tween(220, delayMillis = 90)) + fadeIn(animationSpec = tween(220, delayMillis = 90))
},
exitTransition = null,
popEnterTransition = null,
popExitTransition = {
slideOutHorizontally(targetOffsetX = { it }, animationSpec = tween(220)) + fadeOut(animationSpec = tween(220))
},
content = content
)

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@ package dev.anilbeesetti.nextplayer.settings.navigation
import androidx.navigation.NavController
import androidx.navigation.NavGraphBuilder
import androidx.navigation.NavOptions
import androidx.navigation.compose.composable
import dev.anilbeesetti.nextplayer.core.ui.designsystem.NavigationAnimations
import dev.anilbeesetti.nextplayer.core.ui.designsystem.animatedComposable
import dev.anilbeesetti.nextplayer.settings.screens.about.AboutPreferencesScreen

const val aboutPreferencesNavigationRoute = "about_preferences_route"
Expand All @@ -14,12 +13,7 @@ fun NavController.navigateToAboutPreferences(navOptions: NavOptions? = null) {
}

fun NavGraphBuilder.aboutPreferencesScreen(onNavigateUp: () -> Unit) {
composable(
route = aboutPreferencesNavigationRoute,
enterTransition = { NavigationAnimations.slideEnter },
popExitTransition = { NavigationAnimations.slideExit },
popEnterTransition = null
) {
animatedComposable(route = aboutPreferencesNavigationRoute) {
AboutPreferencesScreen(
onNavigateUp = onNavigateUp
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@ package dev.anilbeesetti.nextplayer.settings.navigation
import androidx.navigation.NavController
import androidx.navigation.NavGraphBuilder
import androidx.navigation.NavOptions
import androidx.navigation.compose.composable
import dev.anilbeesetti.nextplayer.core.ui.designsystem.NavigationAnimations
import dev.anilbeesetti.nextplayer.core.ui.designsystem.animatedComposable
import dev.anilbeesetti.nextplayer.settings.screens.appearance.AppearancePreferencesScreen

const val appearancePreferencesNavigationRoute = "appearance_preferences_route"
Expand All @@ -14,12 +13,7 @@ fun NavController.navigateToAppearancePreferences(navOptions: NavOptions? = null
}

fun NavGraphBuilder.appearancePreferencesScreen(onNavigateUp: () -> Unit) {
composable(
route = appearancePreferencesNavigationRoute,
enterTransition = { NavigationAnimations.slideEnter },
popExitTransition = { NavigationAnimations.slideExit },
popEnterTransition = null
) {
animatedComposable(route = appearancePreferencesNavigationRoute) {
AppearancePreferencesScreen(onNavigateUp = onNavigateUp)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@ package dev.anilbeesetti.nextplayer.settings.navigation
import androidx.navigation.NavController
import androidx.navigation.NavGraphBuilder
import androidx.navigation.NavOptions
import androidx.navigation.compose.composable
import dev.anilbeesetti.nextplayer.core.ui.designsystem.NavigationAnimations
import dev.anilbeesetti.nextplayer.core.ui.designsystem.animatedComposable
import dev.anilbeesetti.nextplayer.settings.screens.audio.AudioPreferencesScreen

const val audioPreferencesNavigationRoute = "audio_preferences_route"
Expand All @@ -14,12 +13,7 @@ fun NavController.navigateToAudioPreferences(navOptions: NavOptions? = null) {
}

fun NavGraphBuilder.audioPreferencesScreen(onNavigateUp: () -> Unit) {
composable(
route = audioPreferencesNavigationRoute,
enterTransition = { NavigationAnimations.slideEnter },
popExitTransition = { NavigationAnimations.slideExit },
popEnterTransition = null
) {
animatedComposable(route = audioPreferencesNavigationRoute) {
AudioPreferencesScreen(onNavigateUp = onNavigateUp)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@ package dev.anilbeesetti.nextplayer.settings.navigation
import androidx.navigation.NavController
import androidx.navigation.NavGraphBuilder
import androidx.navigation.NavOptions
import androidx.navigation.compose.composable
import dev.anilbeesetti.nextplayer.core.ui.designsystem.NavigationAnimations
import dev.anilbeesetti.nextplayer.core.ui.designsystem.animatedComposable
import dev.anilbeesetti.nextplayer.settings.screens.decoder.DecoderPreferencesScreen

const val decoderPreferencesNavigationRoute = "decoder_preferences_route"
Expand All @@ -14,12 +13,7 @@ fun NavController.navigateToDecoderPreferences(navOptions: NavOptions? = null) {
}

fun NavGraphBuilder.decoderPreferencesScreen(onNavigateUp: () -> Unit) {
composable(
route = decoderPreferencesNavigationRoute,
enterTransition = { NavigationAnimations.slideEnter },
popExitTransition = { NavigationAnimations.slideExit },
popEnterTransition = null
) {
animatedComposable(route = decoderPreferencesNavigationRoute) {
DecoderPreferencesScreen(onNavigateUp = onNavigateUp)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@ package dev.anilbeesetti.nextplayer.settings.navigation
import androidx.navigation.NavController
import androidx.navigation.NavGraphBuilder
import androidx.navigation.NavOptions
import androidx.navigation.compose.composable
import dev.anilbeesetti.nextplayer.core.ui.designsystem.NavigationAnimations
import dev.anilbeesetti.nextplayer.core.ui.designsystem.animatedComposable
import dev.anilbeesetti.nextplayer.settings.screens.medialibrary.FolderPreferencesScreen
import dev.anilbeesetti.nextplayer.settings.screens.medialibrary.MediaLibraryPreferencesScreen

Expand All @@ -23,12 +22,7 @@ fun NavGraphBuilder.mediaLibraryPreferencesScreen(
onNavigateUp: () -> Unit,
onFolderSettingClick: () -> Unit
) {
composable(
route = mediaLibraryPreferencesNavigationRoute,
enterTransition = { NavigationAnimations.slideEnter },
popExitTransition = { NavigationAnimations.slideExit },
popEnterTransition = null
) {
animatedComposable(route = mediaLibraryPreferencesNavigationRoute) {
MediaLibraryPreferencesScreen(
onNavigateUp = onNavigateUp,
onFolderSettingClick = onFolderSettingClick
Expand All @@ -37,12 +31,7 @@ fun NavGraphBuilder.mediaLibraryPreferencesScreen(
}

fun NavGraphBuilder.folderPreferencesScreen(onNavigateUp: () -> Unit) {
composable(
route = folderPreferencesNavigationRoute,
enterTransition = { NavigationAnimations.slideEnter },
popExitTransition = { NavigationAnimations.slideExit },
popEnterTransition = null
) {
animatedComposable(route = folderPreferencesNavigationRoute) {
FolderPreferencesScreen(onNavigateUp = onNavigateUp)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@ package dev.anilbeesetti.nextplayer.settings.navigation
import androidx.navigation.NavController
import androidx.navigation.NavGraphBuilder
import androidx.navigation.NavOptions
import androidx.navigation.compose.composable
import dev.anilbeesetti.nextplayer.core.ui.designsystem.NavigationAnimations
import dev.anilbeesetti.nextplayer.core.ui.designsystem.animatedComposable
import dev.anilbeesetti.nextplayer.settings.screens.player.PlayerPreferencesScreen

const val playerPreferencesNavigationRoute = "player_preferences_route"
Expand All @@ -14,12 +13,7 @@ fun NavController.navigateToPlayerPreferences(navOptions: NavOptions? = null) {
}

fun NavGraphBuilder.playerPreferencesScreen(onNavigateUp: () -> Unit) {
composable(
route = playerPreferencesNavigationRoute,
enterTransition = { NavigationAnimations.slideEnter },
popExitTransition = { NavigationAnimations.slideExit },
popEnterTransition = null
) {
animatedComposable(route = playerPreferencesNavigationRoute) {
PlayerPreferencesScreen(
onNavigateUp = onNavigateUp
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ package dev.anilbeesetti.nextplayer.settings.navigation
import androidx.navigation.NavController
import androidx.navigation.NavGraphBuilder
import androidx.navigation.NavOptions
import androidx.navigation.compose.composable
import dev.anilbeesetti.nextplayer.core.ui.designsystem.NavigationAnimations
import androidx.navigation.navOptions
import dev.anilbeesetti.nextplayer.core.ui.designsystem.animatedComposable
import dev.anilbeesetti.nextplayer.settings.Setting
import dev.anilbeesetti.nextplayer.settings.SettingsScreen

Expand All @@ -15,12 +15,7 @@ fun NavController.navigateToSettings(navOptions: NavOptions? = null) {
}

fun NavGraphBuilder.settingsScreen(onNavigateUp: () -> Unit, onItemClick: (Setting) -> Unit) {
composable(
route = settingsNavigationRoute,
enterTransition = { NavigationAnimations.slideEnter },
popExitTransition = { NavigationAnimations.slideExit },
popEnterTransition = null
) {
animatedComposable(route = settingsNavigationRoute) {
SettingsScreen(onNavigateUp = onNavigateUp, onItemClick = onItemClick)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@ package dev.anilbeesetti.nextplayer.settings.navigation
import androidx.navigation.NavController
import androidx.navigation.NavGraphBuilder
import androidx.navigation.NavOptions
import androidx.navigation.compose.composable
import dev.anilbeesetti.nextplayer.core.ui.designsystem.NavigationAnimations
import dev.anilbeesetti.nextplayer.core.ui.designsystem.animatedComposable
import dev.anilbeesetti.nextplayer.settings.screens.subtitle.SubtitlePreferencesScreen

const val subtitlePreferencesNavigationRoute = "subtitle_preferences_route"
Expand All @@ -14,12 +13,7 @@ fun NavController.navigateToSubtitlePreferences(navOptions: NavOptions? = null)
}

fun NavGraphBuilder.subtitlePreferencesScreen(onNavigateUp: () -> Unit) {
composable(
route = subtitlePreferencesNavigationRoute,
enterTransition = { NavigationAnimations.slideEnter },
popExitTransition = { NavigationAnimations.slideExit },
popEnterTransition = null
) {
animatedComposable(route = subtitlePreferencesNavigationRoute) {
SubtitlePreferencesScreen(onNavigateUp = onNavigateUp)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ import androidx.navigation.NavController
import androidx.navigation.NavGraphBuilder
import androidx.navigation.NavOptions
import androidx.navigation.NavType
import androidx.navigation.compose.composable
import androidx.navigation.navArgument
import dev.anilbeesetti.nextplayer.core.ui.designsystem.NavigationAnimations
import androidx.navigation.navOptions
import dev.anilbeesetti.nextplayer.core.ui.designsystem.animatedComposable
import dev.anilbeesetti.nextplayer.feature.videopicker.screens.mediaFolder.MediaPickerFolderRoute

const val mediaPickerFolderNavigationRoute = "media_picker_folder_screen"
Expand All @@ -31,13 +31,11 @@ fun NavGraphBuilder.mediaPickerFolderScreen(
onNavigateUp: () -> Unit,
onVideoClick: (uri: Uri) -> Unit
) {
composable(
animatedComposable(
route = "$mediaPickerFolderNavigationRoute/{$folderIdArg}",
arguments = listOf(
navArgument(folderIdArg) { type = NavType.StringType }
),
enterTransition = { NavigationAnimations.slideEnter },
popExitTransition = { NavigationAnimations.slideExit }
)
) {
MediaPickerFolderRoute(
onVideoClick = onVideoClick,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import android.net.Uri
import androidx.navigation.NavController
import androidx.navigation.NavGraphBuilder
import androidx.navigation.NavOptions
import androidx.navigation.compose.composable
import dev.anilbeesetti.nextplayer.core.ui.designsystem.animatedComposable
import dev.anilbeesetti.nextplayer.feature.videopicker.screens.media.MediaPickerRoute

const val mediaPickerNavigationRoute = "media_picker_screen"
Expand All @@ -18,7 +18,7 @@ fun NavGraphBuilder.mediaPickerScreen(
onPlayVideo: (uri: Uri) -> Unit,
onFolderClick: (path: String) -> Unit
) {
composable(route = mediaPickerNavigationRoute) {
animatedComposable(route = mediaPickerNavigationRoute) {
MediaPickerRoute(
onSettingsClick = onSettingsClick,
onPlayVideo = onPlayVideo,
Expand Down

0 comments on commit 554cc26

Please sign in to comment.