Skip to content

Commit

Permalink
small ui changes
Browse files Browse the repository at this point in the history
  • Loading branch information
DatL4g committed May 25, 2024
1 parent bf096cd commit f9d7675
Show file tree
Hide file tree
Showing 5 changed files with 72 additions and 108 deletions.
1 change: 0 additions & 1 deletion composeApp/src/commonMain/kotlin/dev/datlag/aniflow/App.kt
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@ val LocalDarkMode = compositionLocalOf<Boolean> { error("No dark mode state prov
val LocalEdgeToEdge = staticCompositionLocalOf<Boolean> { false }
val LocalDI = compositionLocalOf<DI> { error("No dependency injection provided") }
val LocalHaze = compositionLocalOf<HazeState> { error("No Haze state provided") }
val LocalPaddingValues = compositionLocalOf<PaddingValues?> { null }

@Composable
internal fun App(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ import androidx.compose.ui.unit.LayoutDirection
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.max
import com.kmpalette.DominantColorState
import dev.datlag.aniflow.LocalPaddingValues

fun Modifier.bottomShadowBrush(color: Color, alpha: Float = 1F): Modifier {
val maxAlpha = kotlin.math.min(alpha, 1F)
Expand Down Expand Up @@ -76,55 +75,6 @@ fun PaddingValues.merge(other: PaddingValues): PaddingValues {
)
}

@Composable
fun Modifier.localPadding(additional: PaddingValues = PaddingValues(0.dp)): Modifier {
return this.padding(LocalPaddingValues.current?.plus(additional) ?: additional)
}

@Composable
fun Modifier.localPadding(all: Dp): Modifier {
return this.localPadding(PaddingValues(all))
}

@Composable
fun Modifier.localPadding(horizontal: Dp, vertical: Dp = 0.dp): Modifier {
return this.localPadding(PaddingValues(horizontal = horizontal, vertical = vertical))
}

@Composable
fun LocalPadding(additional: PaddingValues = PaddingValues(0.dp)): PaddingValues {
return LocalPaddingValues.current?.plus(additional) ?: additional
}

@Composable
fun LocalPadding(additional: Dp): PaddingValues {
return LocalPaddingValues.current?.plus(PaddingValues(additional)) ?: PaddingValues(additional)
}

@Composable
fun LocalPadding(horizontal: Dp = 0.dp, vertical: Dp = 0.dp): PaddingValues {
return LocalPaddingValues.current?.plus(
PaddingValues(horizontal = horizontal, vertical = vertical)
) ?: PaddingValues(horizontal = horizontal, vertical = vertical)
}

@Composable
fun LocalPadding(top: Dp = 0.dp, start: Dp = 0.dp, bottom: Dp = 0.dp, end: Dp = 0.dp): PaddingValues {
return LocalPaddingValues.current?.plus(
PaddingValues(top = top, start = start, bottom = bottom, end = end)
) ?: PaddingValues(top = top, start = start, bottom = bottom, end = end)
}

@Composable
fun Modifier.mergedLocalPadding(other: PaddingValues, additional: PaddingValues = PaddingValues(0.dp)): Modifier {
return this.padding((LocalPaddingValues.current?.merge(other) ?: other).plus(additional))
}

@Composable
fun Modifier.mergedLocalPadding(other: PaddingValues, additional: Dp): Modifier {
return this.mergedLocalPadding(other, PaddingValues(additional))
}

@Composable
fun LazyListState.isScrollingUp(): Boolean {
var previousIndex by remember(this) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ import dev.chrisbanes.haze.hazeChild
import dev.chrisbanes.haze.materials.ExperimentalHazeMaterialsApi
import dev.chrisbanes.haze.materials.HazeMaterials
import dev.datlag.aniflow.LocalHaze
import dev.datlag.aniflow.LocalPaddingValues
import dev.datlag.aniflow.SharedRes
import dev.datlag.aniflow.anilist.type.MediaType
import dev.datlag.aniflow.common.*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,15 @@ import androidx.compose.foundation.background
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.*
import androidx.compose.material.icons.rounded.GetApp
import androidx.compose.material3.*
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.input.pointer.pointerInput
Expand All @@ -37,8 +39,8 @@ import dev.chrisbanes.haze.materials.ExperimentalHazeMaterialsApi
import dev.chrisbanes.haze.materials.HazeMaterials
import dev.datlag.aniflow.LocalDI
import dev.datlag.aniflow.LocalHaze
import dev.datlag.aniflow.LocalPaddingValues
import dev.datlag.aniflow.SharedRes
import dev.datlag.aniflow.anilist.MediumRepository
import dev.datlag.aniflow.anilist.type.MediaListStatus
import dev.datlag.aniflow.anilist.type.MediaStatus
import dev.datlag.aniflow.common.*
Expand Down Expand Up @@ -91,66 +93,80 @@ fun MediumScreen(component: MediumComponent) {
component = component
)
}
) {
CompositionLocalProvider(
LocalPaddingValues provides LocalPadding().merge(it)
) { padding ->
val smoothPadding by animatePaddingAsState(padding)
val mediumState by component.mediumState.collectAsStateWithLifecycle(null)
val isLoading = remember(mediumState) {
mediumState == null || mediumState is MediumRepository.State.None
}

LazyColumn(
state = listState,
modifier = Modifier.fillMaxSize().haze(state = LocalHaze.current),
verticalArrangement = Arrangement.spacedBy(8.dp),
contentPadding = smoothPadding.plus(PaddingValues(top = 16.dp))
) {
LazyColumn(
state = listState,
modifier = Modifier.fillMaxSize().haze(state = LocalHaze.current),
verticalArrangement = Arrangement.spacedBy(8.dp),
contentPadding = LocalPadding(top = 16.dp)
) {
item {
CoverSection(
coverImage = coverImage,
component = component,
modifier = Modifier.fillParentMaxWidth().padding(horizontal = 16.dp)
)
}
item {
RatingSection(
initialMedium = component.initialMedium,
ratedFlow = component.rated,
popularFlow = component.popular,
scoreFlow = component.score,
modifier = Modifier.fillParentMaxWidth().padding(horizontal = 16.dp).padding(top = 16.dp)
)
}
item {
GenreSection(
initialMedium = component.initialMedium,
genreFlow = component.genres,
modifier = Modifier.fillParentMaxWidth()
)
item {
CoverSection(
coverImage = coverImage,
component = component,
modifier = Modifier.fillParentMaxWidth().padding(horizontal = 16.dp)
)
}
item {
RatingSection(
initialMedium = component.initialMedium,
ratedFlow = component.rated,
popularFlow = component.popular,
scoreFlow = component.score,
modifier = Modifier.fillParentMaxWidth().padding(horizontal = 16.dp).padding(top = 16.dp)
)
}
item {
GenreSection(
initialMedium = component.initialMedium,
genreFlow = component.genres,
modifier = Modifier.fillParentMaxWidth()
)
}
item {
DescriptionSection(
initialMedium = component.initialMedium,
descriptionFlow = component.description,
translatedDescriptionFlow = component.translatedDescription,
modifier = Modifier.fillParentMaxWidth()
) { translated ->
component.descriptionTranslation(translated)
}
item {
DescriptionSection(
initialMedium = component.initialMedium,
descriptionFlow = component.description,
translatedDescriptionFlow = component.translatedDescription,
modifier = Modifier.fillParentMaxWidth()
) { translated ->
component.descriptionTranslation(translated)
}
}
item {
CharacterSection(
initialMedium = component.initialMedium,
characterFlow = component.characters,
charLanguage = component.charLanguage,
modifier = Modifier.fillParentMaxWidth().animateItemPlacement()
) { char ->
component.showCharacter(char)
}
}
item {
TrailerSection(
initialMedium = component.initialMedium,
trailerFlow = component.trailer,
modifier = Modifier.fillParentMaxWidth().animateItemPlacement()
)
}
if (isLoading) {
item {
CharacterSection(
initialMedium = component.initialMedium,
characterFlow = component.characters,
charLanguage = component.charLanguage,
modifier = Modifier.fillParentMaxWidth().animateItemPlacement()
) { char ->
component.showCharacter(char)
Box(
modifier = Modifier.fillParentMaxWidth().padding(vertical = 32.dp),
contentAlignment = Alignment.Center
) {
LinearProgressIndicator(
modifier = Modifier.fillMaxWidth(fraction = 0.2F).clip(CircleShape)
)
}
}
item {
TrailerSection(
initialMedium = component.initialMedium,
trailerFlow = component.trailer,
modifier = Modifier.fillParentMaxWidth().animateItemPlacement()
)
}
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion composeApp/src/commonMain/moko-resources/de-DE/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
<string name="media_format_novel">Roman</string>
<string name="media_format_one_shot">Einmalig</string>
<string name="media_status_finished">Beendet</string>
<string name="media_status_releasing">In Veröffentlichung</string>
<string name="media_status_releasing">Wird veröffentlicht</string>
<string name="media_status_not_yet_released">Noch nicht veröffentlicht</string>
<string name="media_status_cancelled">Abgesagt</string>
<string name="media_status_hiatus">Pausiert</string>
Expand Down

0 comments on commit f9d7675

Please sign in to comment.