• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download

<lambda>null1 package com.airbnb.lottie.sample.compose.showcase
2 
3 import androidx.compose.foundation.layout.Box
4 import androidx.compose.foundation.layout.fillMaxSize
5 import androidx.compose.foundation.lazy.LazyColumn
6 import androidx.compose.foundation.lazy.items
7 import androidx.compose.material.Divider
8 import androidx.compose.runtime.Composable
9 import androidx.compose.runtime.getValue
10 import androidx.compose.ui.Alignment
11 import androidx.compose.ui.Modifier
12 import androidx.compose.ui.graphics.Color
13 import androidx.compose.ui.platform.testTag
14 import androidx.compose.ui.tooling.preview.Preview
15 import androidx.navigation.NavController
16 import androidx.navigation.compose.rememberNavController
17 import com.airbnb.lottie.sample.compose.Route
18 import com.airbnb.lottie.sample.compose.composables.AnimationRow
19 import com.airbnb.lottie.sample.compose.composables.Loader
20 import com.airbnb.lottie.sample.compose.composables.Marquee
21 import com.airbnb.lottie.sample.compose.ui.LottieTheme
22 import com.airbnb.mvrx.Loading
23 import com.airbnb.mvrx.Uninitialized
24 import com.airbnb.mvrx.compose.collectAsState
25 import com.airbnb.mvrx.compose.mavericksViewModel
26 
27 @Composable
28 fun ShowcasePage(navController: NavController) {
29     val viewModel: ShowcaseViewModel = mavericksViewModel()
30     val featuredAnimations by viewModel.collectAsState(ShowcaseState::animations)
31     Box(
32         modifier = Modifier.fillMaxSize()
33     ) {
34         LazyColumn {
35             item {
36                 Marquee("Showcase")
37             }
38             items(featuredAnimations()?.data.orEmpty()) { data ->
39                 AnimationRow(
40                     title = data.title,
41                     previewUrl = data.preview_url ?: "",
42                     previewBackgroundColor = data.bgColor,
43                 ) {
44                     navController.navigate(Route.Player.forUrl(data.file, backgroundColor = data.bg_color))
45                 }
46                 Divider(color = Color.LightGray)
47             }
48         }
49         if (featuredAnimations is Uninitialized || featuredAnimations is Loading) {
50             Loader(modifier = Modifier.align(Alignment.Center))
51         }
52     }
53 }
54 
55 @Preview(showBackground = true)
56 @Composable
DefaultPreviewnull57 fun DefaultPreview() {
58     val navController = rememberNavController()
59     LottieTheme {
60         ShowcasePage(navController)
61     }
62 }
63