From 74ae53eeba79c136810da9301eb5629dbabec874 Mon Sep 17 00:00:00 2001 From: machiav3lli Date: Mon, 10 Oct 2022 01:28:53 +0200 Subject: [PATCH] Add: ScreenshotsPage composable --- .../fdroid/ui/pages/ScreenshotsPage.kt | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 src/main/kotlin/com/machiav3lli/fdroid/ui/pages/ScreenshotsPage.kt diff --git a/src/main/kotlin/com/machiav3lli/fdroid/ui/pages/ScreenshotsPage.kt b/src/main/kotlin/com/machiav3lli/fdroid/ui/pages/ScreenshotsPage.kt new file mode 100644 index 00000000..96ec9a23 --- /dev/null +++ b/src/main/kotlin/com/machiav3lli/fdroid/ui/pages/ScreenshotsPage.kt @@ -0,0 +1,51 @@ +package com.machiav3lli.fdroid.ui.pages + +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.SideEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Modifier +import com.google.accompanist.pager.ExperimentalPagerApi +import com.google.accompanist.pager.HorizontalPager +import com.google.accompanist.pager.rememberPagerState +import com.machiav3lli.fdroid.network.CoilDownloader +import com.machiav3lli.fdroid.ui.compose.components.ScreenshotItem +import com.machiav3lli.fdroid.ui.compose.utils.ZoomableImage + +@OptIn(ExperimentalPagerApi::class) +@Composable +fun ScreenshotsPage( + screenshots: List, + page: Int, +) { + val pagerState = rememberPagerState() + + HorizontalPager(count = screenshots.size, state = pagerState) { page -> + val screenshot = screenshots[page] + var image by remember { mutableStateOf(null) } + + SideEffect { + image = CoilDownloader.createScreenshotUri( + screenshot.repository, + screenshot.packageName, + screenshot.screenShot + ).toString() + } + + Box { + ZoomableImage( + data = image, + modifier = Modifier.fillMaxSize(), + ) + } + } + + LaunchedEffect(page) { + pagerState.scrollToPage(page) + } +} \ No newline at end of file