|
|
@ -8,9 +8,7 @@ import androidx.compose.material3.ExperimentalMaterial3Api |
|
|
|
import androidx.compose.material3.MaterialTheme |
|
|
|
import androidx.compose.material3.MaterialTheme |
|
|
|
import androidx.compose.material3.Surface |
|
|
|
import androidx.compose.material3.Surface |
|
|
|
import androidx.compose.material3.Text |
|
|
|
import androidx.compose.material3.Text |
|
|
|
import androidx.compose.runtime.Composable |
|
|
|
import androidx.compose.runtime.* |
|
|
|
import androidx.compose.runtime.getValue |
|
|
|
|
|
|
|
import androidx.compose.runtime.remember |
|
|
|
|
|
|
|
import androidx.compose.ui.Alignment.Companion.CenterHorizontally |
|
|
|
import androidx.compose.ui.Alignment.Companion.CenterHorizontally |
|
|
|
import androidx.compose.ui.Modifier |
|
|
|
import androidx.compose.ui.Modifier |
|
|
|
import androidx.compose.ui.res.painterResource |
|
|
|
import androidx.compose.ui.res.painterResource |
|
|
@ -26,6 +24,8 @@ import com.google.accompanist.pager.HorizontalPager |
|
|
|
import com.google.accompanist.pager.HorizontalPagerIndicator |
|
|
|
import com.google.accompanist.pager.HorizontalPagerIndicator |
|
|
|
import com.google.accompanist.pager.rememberPagerState |
|
|
|
import com.google.accompanist.pager.rememberPagerState |
|
|
|
import io.element.android.x.designsystem.components.VectorButton |
|
|
|
import io.element.android.x.designsystem.components.VectorButton |
|
|
|
|
|
|
|
import kotlinx.coroutines.delay |
|
|
|
|
|
|
|
import kotlinx.coroutines.launch |
|
|
|
|
|
|
|
|
|
|
|
@Composable |
|
|
|
@Composable |
|
|
|
fun OnBoardingScreen( |
|
|
|
fun OnBoardingScreen( |
|
|
@ -36,6 +36,7 @@ fun OnBoardingScreen( |
|
|
|
val state: OnBoardingViewState by viewModel.collectAsState() |
|
|
|
val state: OnBoardingViewState by viewModel.collectAsState() |
|
|
|
OnBoardingContent( |
|
|
|
OnBoardingContent( |
|
|
|
state, |
|
|
|
state, |
|
|
|
|
|
|
|
onPageChanged = viewModel::onPageChanged, |
|
|
|
onSignUp = onSignUp, |
|
|
|
onSignUp = onSignUp, |
|
|
|
onSignIn = onSignIn, |
|
|
|
onSignIn = onSignIn, |
|
|
|
) |
|
|
|
) |
|
|
@ -46,10 +47,13 @@ fun OnBoardingScreen( |
|
|
|
@Composable |
|
|
|
@Composable |
|
|
|
fun OnBoardingContent( |
|
|
|
fun OnBoardingContent( |
|
|
|
state: OnBoardingViewState, |
|
|
|
state: OnBoardingViewState, |
|
|
|
|
|
|
|
onPageChanged: (Int) -> Unit, |
|
|
|
onSignUp: () -> Unit, |
|
|
|
onSignUp: () -> Unit, |
|
|
|
onSignIn: () -> Unit, |
|
|
|
onSignIn: () -> Unit, |
|
|
|
) { |
|
|
|
) { |
|
|
|
val carrouselState = remember { SplashCarouselStateFactory().create() } |
|
|
|
val carrouselState = remember { SplashCarouselStateFactory().create() } |
|
|
|
|
|
|
|
val nbOfPages = carrouselState.items.size |
|
|
|
|
|
|
|
var key by remember { mutableStateOf(false) } |
|
|
|
Surface( |
|
|
|
Surface( |
|
|
|
color = MaterialTheme.colorScheme.background, |
|
|
|
color = MaterialTheme.colorScheme.background, |
|
|
|
) { |
|
|
|
) { |
|
|
@ -62,10 +66,23 @@ fun OnBoardingContent( |
|
|
|
modifier = Modifier.fillMaxSize(), |
|
|
|
modifier = Modifier.fillMaxSize(), |
|
|
|
) { |
|
|
|
) { |
|
|
|
val pagerState = rememberPagerState() |
|
|
|
val pagerState = rememberPagerState() |
|
|
|
// pagerState.scrollToPage(state.currentPage) |
|
|
|
LaunchedEffect(key) { |
|
|
|
|
|
|
|
launch { |
|
|
|
|
|
|
|
delay(3_000) |
|
|
|
|
|
|
|
pagerState.animateScrollToPage((pagerState.currentPage + 1) % nbOfPages) |
|
|
|
|
|
|
|
// https://stackoverflow.com/questions/73714228/accompanist-pager-animatescrolltopage-doesnt-scroll-to-next-page-correctly |
|
|
|
|
|
|
|
key = !key |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
LaunchedEffect(pagerState) { |
|
|
|
|
|
|
|
// Collect from the pager state a snapshotFlow reading the currentPage |
|
|
|
|
|
|
|
snapshotFlow { pagerState.currentPage }.collect { page -> |
|
|
|
|
|
|
|
onPageChanged(page) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
HorizontalPager( |
|
|
|
HorizontalPager( |
|
|
|
modifier = Modifier.weight(1f), |
|
|
|
modifier = Modifier.weight(1f), |
|
|
|
count = carrouselState.items.size, |
|
|
|
count = nbOfPages, |
|
|
|
state = pagerState, |
|
|
|
state = pagerState, |
|
|
|
) { page -> |
|
|
|
) { page -> |
|
|
|
// Our page content |
|
|
|
// Our page content |
|
|
|