diff --git a/app/src/main/kotlin/com/aliucord/manager/ui/components/BackButton.kt b/app/src/main/kotlin/com/aliucord/manager/ui/components/BackButton.kt index a378b58..52ab3e0 100644 --- a/app/src/main/kotlin/com/aliucord/manager/ui/components/BackButton.kt +++ b/app/src/main/kotlin/com/aliucord/manager/ui/components/BackButton.kt @@ -1,10 +1,10 @@ package com.aliucord.manager.ui.components import android.app.Activity +import androidx.activity.compose.LocalActivity import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.runtime.Composable -import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalInspectionMode import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource @@ -19,7 +19,7 @@ import com.aliucord.manager.ui.screens.home.HomeScreen @Composable fun BackButton() { // Support rendering in @Preview - val context = if (LocalInspectionMode.current) null else LocalContext.current as Activity + val context = if (LocalInspectionMode.current) null else LocalActivity.current val navigator = LocalNavigator.current IconButton( diff --git a/app/src/main/kotlin/com/aliucord/manager/ui/previews/screens/about/AboutScreenFailedPreview.kt b/app/src/main/kotlin/com/aliucord/manager/ui/previews/screens/about/AboutScreenFailedPreview.kt new file mode 100644 index 0000000..d73e2c8 --- /dev/null +++ b/app/src/main/kotlin/com/aliucord/manager/ui/previews/screens/about/AboutScreenFailedPreview.kt @@ -0,0 +1,19 @@ +package com.aliucord.manager.ui.previews.screens.about + +import android.content.res.Configuration +import androidx.compose.runtime.* +import androidx.compose.ui.tooling.preview.Preview +import com.aliucord.manager.ui.components.ManagerTheme +import com.aliucord.manager.ui.screens.about.AboutScreenContent +import com.aliucord.manager.ui.screens.about.AboutScreenState + +@Composable +@Preview(uiMode = Configuration.UI_MODE_NIGHT_YES) +@Preview(uiMode = Configuration.UI_MODE_NIGHT_NO) +private fun AboutScreenFailedPreview() { + ManagerTheme { + AboutScreenContent( + state = remember { mutableStateOf(AboutScreenState.Failure) }, + ) + } +} diff --git a/app/src/main/kotlin/com/aliucord/manager/ui/previews/screens/about/AboutScreenLoadedPreview.kt b/app/src/main/kotlin/com/aliucord/manager/ui/previews/screens/about/AboutScreenLoadedPreview.kt new file mode 100644 index 0000000..657b356 --- /dev/null +++ b/app/src/main/kotlin/com/aliucord/manager/ui/previews/screens/about/AboutScreenLoadedPreview.kt @@ -0,0 +1,48 @@ +package com.aliucord.manager.ui.previews.screens.about + +import android.content.res.Configuration +import androidx.compose.runtime.* +import androidx.compose.ui.tooling.preview.* +import com.aliucord.manager.network.models.Contributor +import com.aliucord.manager.ui.components.ManagerTheme +import com.aliucord.manager.ui.screens.about.AboutScreenContent +import com.aliucord.manager.ui.screens.about.AboutScreenState +import com.aliucord.manager.ui.util.emptyImmutableList +import com.aliucord.manager.util.ImmutableListSerializer +import kotlinx.collections.immutable.* +import kotlinx.serialization.json.Json + +// This preview has scrollable content that cannot be properly viewed from an IDE preview + +@Composable +@Preview(uiMode = Configuration.UI_MODE_NIGHT_YES) +@Preview(uiMode = Configuration.UI_MODE_NIGHT_NO) +private fun AboutScreenLoadedPreview( + @PreviewParameter(ContributorsProvider::class) + contributors: ImmutableList, +) { + ManagerTheme { + AboutScreenContent( + state = remember { mutableStateOf(AboutScreenState.Loaded(contributors)) }, + ) + } +} + +private class ContributorsProvider : PreviewParameterProvider> { + private val realDataRaw = + "[{\"username\":\"Juby210\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/31005896?v=4\",\"commits\":334,\"repositories\":[{\"name\":\"Aliucord\",\"commits\":184},{\"name\":\"Aliucord-backend\",\"commits\":65},{\"name\":\"DiscordRN\",\"commits\":17},{\"name\":\"AliucordRN\",\"commits\":12},{\"name\":\"DiscordThemer\",\"commits\":8},{\"name\":\"buildtool\",\"commits\":7},{\"name\":\"plugins-template\",\"commits\":7},{\"name\":\"libzip\",\"commits\":5},{\"name\":\"Manager\",\"commits\":5},{\"name\":\"hook\",\"commits\":5},{\"name\":\"dokka\",\"commits\":4},{\"name\":\"gradle\",\"commits\":4},{\"name\":\"plugin-requests\",\"commits\":3},{\"name\":\"rollup-plugin-hermes\",\"commits\":3},{\"name\":\"rollup-plugin-aliucord\",\"commits\":2},{\"name\":\"debug-ws-server\",\"commits\":1},{\"name\":\"AliucordRNXposed\",\"commits\":1},{\"name\":\"AliucordNative\",\"commits\":1}]},{\"username\":\"rushiiMachine\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/33725716?v=4\",\"commits\":311,\"repositories\":[{\"name\":\"Manager\",\"commits\":184},{\"name\":\"Aliucord\",\"commits\":50},{\"name\":\"binary-resources\",\"commits\":27},{\"name\":\"plugins-webhook\",\"commits\":18},{\"name\":\"hook\",\"commits\":7},{\"name\":\"AliucordRN\",\"commits\":5},{\"name\":\"plugins\",\"commits\":4},{\"name\":\"gradle\",\"commits\":3},{\"name\":\"rollup-plugin-hermes\",\"commits\":3},{\"name\":\"Aliucord-backend\",\"commits\":2},{\"name\":\"ban-appeals\",\"commits\":2},{\"name\":\"AliucordNative\",\"commits\":2},{\"name\":\"rollup-plugin-aliucord\",\"commits\":2},{\"name\":\".github\",\"commits\":2}]},{\"username\":\"Vendicated\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/45497981?v=4\",\"commits\":229,\"repositories\":[{\"name\":\"Aliucord\",\"commits\":123},{\"name\":\"AliucordRN\",\"commits\":19},{\"name\":\"hook\",\"commits\":19},{\"name\":\"Aliucord-backend\",\"commits\":15},{\"name\":\"plugins-template\",\"commits\":11},{\"name\":\"Manager\",\"commits\":8},{\"name\":\"AliucordNative\",\"commits\":6},{\"name\":\"documentation\",\"commits\":5},{\"name\":\"rollup-plugin-aliucord\",\"commits\":5},{\"name\":\"buildtool\",\"commits\":4},{\"name\":\"ban-appeals\",\"commits\":3},{\"name\":\"AliucordRNBootstrap\",\"commits\":3},{\"name\":\"plugin-template-rn\",\"commits\":3},{\"name\":\"AliuTube\",\"commits\":2},{\"name\":\"plugin-requests\",\"commits\":1},{\"name\":\"dokka\",\"commits\":1},{\"name\":\"debug-ws-server\",\"commits\":1}]},{\"username\":\"js6pak\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/35262707?v=4\",\"commits\":121,\"repositories\":[{\"name\":\"DiscordRN\",\"commits\":68},{\"name\":\"gradle\",\"commits\":26},{\"name\":\"AliucordRN\",\"commits\":10},{\"name\":\"Aliucord\",\"commits\":9},{\"name\":\"rollup-plugin-aliucord\",\"commits\":4},{\"name\":\"AliucordNative\",\"commits\":2},{\"name\":\"AliucordRNXposed\",\"commits\":1},{\"name\":\"rollup-plugin-hermes\",\"commits\":1}]},{\"username\":\"zt64\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/31907977?v=4\",\"commits\":66,\"repositories\":[{\"name\":\"Manager\",\"commits\":48},{\"name\":\"Aliucord\",\"commits\":18}]},{\"username\":\"TymanWasTaken\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/32660892?v=4\",\"commits\":31,\"repositories\":[{\"name\":\"aliucordrn-cli\",\"commits\":13},{\"name\":\"plugins\",\"commits\":6},{\"name\":\"AliucordRN\",\"commits\":4},{\"name\":\"Aliucord\",\"commits\":2},{\"name\":\"Manager\",\"commits\":1},{\"name\":\"debug-ws-server\",\"commits\":1},{\"name\":\"rollup-plugin-hermes\",\"commits\":1},{\"name\":\"AliucordNative\",\"commits\":1},{\"name\":\"rollup-plugin-aliucord\",\"commits\":1},{\"name\":\"plugin-template-rn\",\"commits\":1}]},{\"username\":\"X1nto\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/48173186?v=4\",\"commits\":16,\"repositories\":[{\"name\":\"Aliucord\",\"commits\":12},{\"name\":\"buildtool\",\"commits\":2},{\"name\":\"Manager\",\"commits\":1},{\"name\":\"DiscordRN\",\"commits\":1}]},{\"username\":\"Drownbywind\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/29250530?v=4\",\"commits\":12,\"repositories\":[{\"name\":\"documentation\",\"commits\":12}]},{\"username\":\"nikosszzz\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/53112175?v=4\",\"commits\":12,\"repositories\":[{\"name\":\"AliucordRN\",\"commits\":9},{\"name\":\"rollup-plugin-hermes\",\"commits\":1},{\"name\":\"AliucordNative\",\"commits\":1},{\"name\":\"rollup-plugin-aliucord\",\"commits\":1}]},{\"username\":\"wingio\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/44992537?v=4\",\"commits\":12,\"repositories\":[{\"name\":\"Aliucord\",\"commits\":9},{\"name\":\"Manager\",\"commits\":2},{\"name\":\"AliucordRN\",\"commits\":1}]},{\"username\":\"GangsterFox\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/84905506?v=4\",\"commits\":11,\"repositories\":[{\"name\":\"documentation\",\"commits\":11}]},{\"username\":\"mantikafasi\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/67705577?v=4\",\"commits\":11,\"repositories\":[{\"name\":\"Aliucord\",\"commits\":11}]},{\"username\":\"janisslsm\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/97699850?v=4\",\"commits\":11,\"repositories\":[{\"name\":\"AliucordRN\",\"commits\":4},{\"name\":\"AliucordNative\",\"commits\":3},{\"name\":\"hook\",\"commits\":2},{\"name\":\"Manager\",\"commits\":1},{\"name\":\"rollup-plugin-aliucord\",\"commits\":1}]},{\"username\":\"C10udburst\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/18114966?v=4\",\"commits\":9,\"repositories\":[{\"name\":\"AliucordRN\",\"commits\":6},{\"name\":\"plugins-template\",\"commits\":1},{\"name\":\"AliucordNative\",\"commits\":1},{\"name\":\"plugin-template-rn\",\"commits\":1}]},{\"username\":\"Kyza\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/40003440?v=4\",\"commits\":8,\"repositories\":[{\"name\":\"plugins-template\",\"commits\":8}]},{\"username\":\"pylixonly\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/82711525?v=4\",\"commits\":8,\"repositories\":[{\"name\":\"AliucordRN\",\"commits\":6},{\"name\":\"AliucordNative\",\"commits\":1},{\"name\":\"rollup-plugin-aliucord\",\"commits\":1}]},{\"username\":\"LampDelivery\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/158360149?v=4\",\"commits\":8,\"repositories\":[{\"name\":\"documentation\",\"commits\":8}]},{\"username\":\"Ushie\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/79272171?v=4\",\"commits\":7,\"repositories\":[{\"name\":\"Manager\",\"commits\":7}]},{\"username\":\"nyakowint\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/24845294?v=4\",\"commits\":6,\"repositories\":[{\"name\":\"Aliucord\",\"commits\":3},{\"name\":\"plugin-requests\",\"commits\":1},{\"name\":\"documentation\",\"commits\":1},{\"name\":\"Manager\",\"commits\":1}]},{\"username\":\"hairyfred\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/30961255?v=4\",\"commits\":5,\"repositories\":[{\"name\":\"Aliucord\",\"commits\":4},{\"name\":\"Aliucord-backend\",\"commits\":1}]},{\"username\":\"OmegaSunkey\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/94485936?v=4\",\"commits\":5,\"repositories\":[{\"name\":\"Aliucord-backend\",\"commits\":3},{\"name\":\"Aliucord\",\"commits\":1},{\"name\":\"AliucordRN\",\"commits\":1}]},{\"username\":\"Swishilicous\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/52143580?v=4\",\"commits\":3,\"repositories\":[{\"name\":\"AliucordRN\",\"commits\":2},{\"name\":\"Aliucord\",\"commits\":1}]},{\"username\":\"MrSpidercat\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/41306077?v=4\",\"commits\":3,\"repositories\":[{\"name\":\"documentation\",\"commits\":3}]},{\"username\":\"RhyMegu\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/95598076?v=4\",\"commits\":3,\"repositories\":[{\"name\":\"documentation\",\"commits\":3}]},{\"username\":\"terabyte25\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/23338617?v=4\",\"commits\":2,\"repositories\":[{\"name\":\"Aliucord\",\"commits\":2}]},{\"username\":\"scrazzz\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/70033559?v=4\",\"commits\":2,\"repositories\":[{\"name\":\"Aliucord\",\"commits\":2}]},{\"username\":\"kasefuchs\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/64592097?v=4\",\"commits\":2,\"repositories\":[{\"name\":\"Aliucord\",\"commits\":1},{\"name\":\"gradle\",\"commits\":1}]},{\"username\":\"Kyiro\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/54126666?v=4\",\"commits\":1,\"repositories\":[{\"name\":\"Aliucord\",\"commits\":1}]},{\"username\":\"Aunali321\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/48486084?v=4\",\"commits\":1,\"repositories\":[{\"name\":\"Manager\",\"commits\":1}]},{\"username\":\"Cynosphere\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/1606710?v=4\",\"commits\":1,\"repositories\":[{\"name\":\"AliucordRN\",\"commits\":1}]},{\"username\":\"Alvari-Kupari\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/138302953?v=4\",\"commits\":1,\"repositories\":[{\"name\":\"Aliucord\",\"commits\":1}]},{\"username\":\"FieryFlames\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/30497388?v=4\",\"commits\":1,\"repositories\":[{\"name\":\"AliucordRN\",\"commits\":1}]},{\"username\":\"maisymoe\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/61095277?v=4\",\"commits\":1,\"repositories\":[{\"name\":\"AliucordRN\",\"commits\":1}]},{\"username\":\"Wolfkid200444\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/32025746?v=4\",\"commits\":1,\"repositories\":[{\"name\":\"Aliucord\",\"commits\":1}]},{\"username\":\"unxcepted\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/28658966?v=4\",\"commits\":1,\"repositories\":[{\"name\":\"Aliucord\",\"commits\":1}]},{\"username\":\"sravan1946\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/57430307?v=4\",\"commits\":1,\"repositories\":[{\"name\":\"Aliucord\",\"commits\":1}]},{\"username\":\"Enovale\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/17408285?v=4\",\"commits\":1,\"repositories\":[{\"name\":\"Manager\",\"commits\":1}]},{\"username\":\"ScrubN\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/72096833?v=4\",\"commits\":1,\"repositories\":[{\"name\":\"Aliucord\",\"commits\":1}]},{\"username\":\"aarondoet\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/42084688?v=4\",\"commits\":1,\"repositories\":[{\"name\":\"Aliucord\",\"commits\":1}]},{\"username\":\"sepruko\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/33651534?v=4\",\"commits\":1,\"repositories\":[{\"name\":\"Aliucord\",\"commits\":1}]},{\"username\":\"adntaha\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/63275405?v=4\",\"commits\":1,\"repositories\":[{\"name\":\"AliucordRN\",\"commits\":1}]},{\"username\":\"danik4985\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/82022495?v=4\",\"commits\":1,\"repositories\":[{\"name\":\"Aliucord\",\"commits\":1}]},{\"username\":\"myumichi\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/156945548?v=4\",\"commits\":1,\"repositories\":[{\"name\":\"documentation\",\"commits\":1}]},{\"username\":\"tacohitbox\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/87399016?v=4\",\"commits\":1,\"repositories\":[{\"name\":\"AliuTube\",\"commits\":1}]},{\"username\":\"Martinz64\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/24656265?v=4\",\"commits\":1,\"repositories\":[{\"name\":\"AliucordRN\",\"commits\":1}]}]" + private val realData = Json.decodeFromString(ImmutableListSerializer(Contributor.serializer()), realDataRaw) + + override val values = sequenceOf( + emptyImmutableList(), + persistentListOf( + Contributor( + username = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz", + avatarUrl = "UNUSED", + commits = Int.MAX_VALUE, + repositories = (realData[0].repositories + realData[0].repositories).toImmutableList(), + ) + ), + realData, + ) +} diff --git a/app/src/main/kotlin/com/aliucord/manager/ui/previews/screens/about/AboutScreenLoadingPreview.kt b/app/src/main/kotlin/com/aliucord/manager/ui/previews/screens/about/AboutScreenLoadingPreview.kt new file mode 100644 index 0000000..1c803a2 --- /dev/null +++ b/app/src/main/kotlin/com/aliucord/manager/ui/previews/screens/about/AboutScreenLoadingPreview.kt @@ -0,0 +1,22 @@ +package com.aliucord.manager.ui.previews.screens.about + +import android.content.res.Configuration +import androidx.compose.runtime.* +import androidx.compose.ui.tooling.preview.Preview +import com.aliucord.manager.ui.components.ManagerTheme +import com.aliucord.manager.ui.screens.about.AboutScreenContent +import com.aliucord.manager.ui.screens.about.AboutScreenState + +// This preview cannot be properly viewed from an IDE + +@Composable +@Preview(uiMode = Configuration.UI_MODE_NIGHT_YES) +@Preview(uiMode = Configuration.UI_MODE_NIGHT_NO) +private fun AboutScreenFailedPreview() { + ManagerTheme { + AboutScreenContent( + state = remember { mutableStateOf(AboutScreenState.Loading) }, + ) + } +} + diff --git a/app/src/main/kotlin/com/aliucord/manager/ui/previews/screens/home/HomeScreenLoadedPreview.kt b/app/src/main/kotlin/com/aliucord/manager/ui/previews/screens/home/HomeScreenLoadedPreview.kt index b018f1f..dafd358 100644 --- a/app/src/main/kotlin/com/aliucord/manager/ui/previews/screens/home/HomeScreenLoadedPreview.kt +++ b/app/src/main/kotlin/com/aliucord/manager/ui/previews/screens/home/HomeScreenLoadedPreview.kt @@ -14,7 +14,7 @@ import com.aliucord.manager.ui.util.DiscordVersion import io.ktor.util.decodeBase64Bytes import kotlinx.collections.immutable.persistentListOf -// This preview has animations that cannot be properly viewed from an IDE +// This preview has animations that cannot be properly viewed from an IDE preview @Composable @Preview(uiMode = Configuration.UI_MODE_NIGHT_YES) diff --git a/app/src/main/kotlin/com/aliucord/manager/ui/previews/screens/home/HomeScreenLoadingPreview.kt b/app/src/main/kotlin/com/aliucord/manager/ui/previews/screens/home/HomeScreenLoadingPreview.kt index acdb4b2..5c2e7ce 100644 --- a/app/src/main/kotlin/com/aliucord/manager/ui/previews/screens/home/HomeScreenLoadingPreview.kt +++ b/app/src/main/kotlin/com/aliucord/manager/ui/previews/screens/home/HomeScreenLoadingPreview.kt @@ -8,7 +8,7 @@ import com.aliucord.manager.ui.components.ManagerTheme import com.aliucord.manager.ui.screens.home.HomeScreenLoadingContent import com.aliucord.manager.ui.screens.home.components.HomeAppBar -// This preview cannot be properly viewed from an IDE +// This preview cannot be properly viewed from an IDE preview @Composable @Preview(uiMode = Configuration.UI_MODE_NIGHT_YES) diff --git a/app/src/main/kotlin/com/aliucord/manager/ui/screens/about/AboutScreen.kt b/app/src/main/kotlin/com/aliucord/manager/ui/screens/about/AboutScreen.kt index e4e9643..2977ca3 100644 --- a/app/src/main/kotlin/com/aliucord/manager/ui/screens/about/AboutScreen.kt +++ b/app/src/main/kotlin/com/aliucord/manager/ui/screens/about/AboutScreen.kt @@ -33,78 +33,82 @@ class AboutScreen : Screen, Parcelable { @Composable override fun Content() { val model = getScreenModel() - val state by model.state.collectAsState() - Scaffold( - topBar = { - TopAppBar( - title = { Text(stringResource(R.string.navigation_about)) }, - navigationIcon = { BackButton() }, + AboutScreenContent(state = model.state.collectAsState()) + } +} + +@Composable +fun AboutScreenContent(state: State) { + Scaffold( + topBar = { + TopAppBar( + title = { Text(stringResource(R.string.navigation_about)) }, + navigationIcon = { BackButton() }, + ) + } + ) { paddingValues -> + LazyColumn( + verticalArrangement = Arrangement.spacedBy(2.dp), + horizontalAlignment = Alignment.CenterHorizontally, + contentPadding = paddingValues + .exclude(PaddingValuesSides.Horizontal + PaddingValuesSides.Top), + modifier = Modifier + .padding(paddingValues.exclude(PaddingValuesSides.Bottom)) + .padding(16.dp), + ) { + item(key = "PROJECT_HEADER") { + ProjectHeader() + } + + item(key = "HEADER_DIVIDER") { + TextDivider( + text = stringResource(R.string.contributors_lead), + modifier = Modifier.padding(top = 18.dp, bottom = 20.dp), ) } - ) { paddingValues -> - LazyColumn( - verticalArrangement = Arrangement.spacedBy(2.dp), - horizontalAlignment = Alignment.CenterHorizontally, - contentPadding = paddingValues - .exclude(PaddingValuesSides.Horizontal + PaddingValuesSides.Top), - modifier = Modifier - .padding(paddingValues.exclude(PaddingValuesSides.Bottom)) - .padding(16.dp), - ) { - item(key = "PROJECT_HEADER") { - ProjectHeader() - } - item(key = "HEADER_DIVIDER") { - TextDivider( - text = stringResource(R.string.contributors_lead), - modifier = Modifier.padding(top = 18.dp, bottom = 30.dp), + item(key = "MAIN_CONTRIBUTORS") { + Row( + horizontalArrangement = Arrangement.SpaceEvenly, + verticalAlignment = Alignment.CenterVertically, + modifier = Modifier.fillMaxWidth(), + ) { + LeadContributor("Vendicated", "the ven") + LeadContributor("Juby210", "Fox") + LeadContributor("rushii", "explod", "rushiiMachine") + } + } + + item(key = "CONTRIBUTORS_DIVIDER") { + TextDivider( + text = stringResource(R.string.contributors), + modifier = Modifier.padding(top = 16.dp, bottom = 6.dp) + ) + } + + when (val state = state.value) { + AboutScreenState.Loading -> item(key = "CONTRIBUTIONS_LOADING") { + Box( + contentAlignment = Alignment.Center, + content = { CircularProgressIndicator() }, + modifier = Modifier + .fillMaxWidth() + .padding(vertical = 38.dp), ) } - item(key = "MAIN_CONTRIBUTORS") { - Row( - horizontalArrangement = Arrangement.SpaceEvenly, - verticalAlignment = Alignment.CenterVertically, - modifier = Modifier.fillMaxWidth(), - ) { - LeadContributor("Vendicated", "the ven") - LeadContributor("Juby210", "Fox") - LeadContributor("rushii", "explod", "rushiiMachine") - } - } - - item(key = "CONTRIBUTORS_DIVIDER") { - TextDivider( - text = stringResource(R.string.contributors), - modifier = Modifier.padding(vertical = 18.dp) + AboutScreenState.Failure -> item(key = "LOAD_FAILURE") { + LoadFailure( + modifier = Modifier + .fillMaxSize() + .padding(vertical = 38.dp) ) } - when (val state = state) { - AboutScreenState.Loading -> item(key = "CONTRIBUTIONS_LOADING") { - Box( - contentAlignment = Alignment.Center, - content = { CircularProgressIndicator() }, - modifier = Modifier - .fillMaxWidth() - .padding(vertical = 38.dp), - ) - } - - AboutScreenState.Failure -> item(key = "LOAD_FAILURE") { - LoadFailure( - modifier = Modifier - .fillMaxSize() - .padding(vertical = 38.dp) - ) - } - - is AboutScreenState.Loaded -> { - items(state.contributors, key = { it.username }) { user -> - ContributorCommitsItem(user) - } + is AboutScreenState.Loaded -> { + items(state.contributors, key = { it.username }) { user -> + ContributorCommitsItem(user) } } }