Skip to content

Commit

Permalink
improve performance
Browse files Browse the repository at this point in the history
  • Loading branch information
DatL4g committed May 1, 2024
1 parent 0480268 commit dd9debb
Show file tree
Hide file tree
Showing 17 changed files with 111 additions and 221 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -74,9 +74,7 @@ data object StateSaver {
_popularNextState
) { t1, t2, t3, t4 ->
t1.isLoadingOrWaiting && t2.isLoadingOrWaiting && t3.isLoadingOrWaiting && t4.isLoadingOrWaiting
}.flowOn(
context = ioDispatcher()
).distinctUntilChanged()
}.distinctUntilChanged()

fun updateAiring(state: AiringTodayStateMachine.State) = _airingState.updateAndGet {
state
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import dev.datlag.tooling.decompose.defaultScope
import dev.datlag.tooling.decompose.ioScope
import dev.datlag.tooling.decompose.mainScope
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.coroutineScope
import org.kodein.di.DIAware

interface Component : DIAware, ComponentContext {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ class RootComponent(
}

fun onLogin(accessToken: String, expiresIn: Int?) {
launchIO {
launchDefault {
userHelper.saveLogin(accessToken, expiresIn)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ private fun MainView(component: HomeComponent, modifier: Modifier = Modifier) {
it?.let(component::trace)
}
val traceState by component.traceState.collectAsStateWithLifecycle(TraceStateMachine.State.Waiting)
val titleLanguage by component.titleLanguage.collectAsStateWithLifecycle(null)

LaunchedEffect(listState, traceState) {
FABConfig.state.value = FABConfig.Scan(
Expand All @@ -105,7 +106,6 @@ private fun MainView(component: HomeComponent, modifier: Modifier = Modifier) {
)
}
val useCase = rememberUseCaseState(visible = results.isNotEmpty())
val titleLanguage by component.titleLanguage.collectAsStateWithLifecycle(null)

OptionDialog(
state = useCase,
Expand Down Expand Up @@ -152,7 +152,7 @@ private fun MainView(component: HomeComponent, modifier: Modifier = Modifier) {
item {
AiringOverview(
state = component.airingState,
titleLanguage = component.titleLanguage,
titleLanguage = titleLanguage,
onClick = component::details
)
}
Expand All @@ -167,7 +167,7 @@ private fun MainView(component: HomeComponent, modifier: Modifier = Modifier) {
item {
TrendingOverview(
state = component.trendingState,
titleLanguage = component.titleLanguage,
titleLanguage = titleLanguage,
onClick = component::details
)
}
Expand All @@ -183,7 +183,7 @@ private fun MainView(component: HomeComponent, modifier: Modifier = Modifier) {
PopularSeasonOverview(
state = component.popularSeasonState,
current = true,
titleLanguage = component.titleLanguage,
titleLanguage = titleLanguage,
onClick = component::details,
)
}
Expand All @@ -199,7 +199,7 @@ private fun MainView(component: HomeComponent, modifier: Modifier = Modifier) {
PopularSeasonOverview(
state = component.popularNextSeasonState,
current = false,
titleLanguage = component.titleLanguage,
titleLanguage = titleLanguage,
onClick = component::details
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ class HomeScreenComponent(
) : HomeComponent, ComponentContext by componentContext {

private val appSettings by di.instance<Settings.PlatformAppSettings>()
override val titleLanguage: Flow<AppSettings.TitleLanguage?> = appSettings.titleLanguage.flowOn(ioDispatcher())
override val titleLanguage: Flow<AppSettings.TitleLanguage?> = appSettings.titleLanguage

private val airingTodayStateMachine by di.instance<AiringTodayStateMachine>()
override val airingState: Flow<AiringTodayStateMachine.State> = airingTodayStateMachine.state.map {
Expand Down Expand Up @@ -87,7 +87,7 @@ class HomeScreenComponent(
}

override fun trace(channel: ByteArray) {
launchIO {
launchDefault {
traceStateMachine.dispatch(TraceStateMachine.Action.Load(channel))
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ import org.kodein.di.instanceOrNull
@Composable
fun AiringCard(
airing: AiringQuery.AiringSchedule,
titleLanguageFlow: Flow<AppSettings.TitleLanguage?>,
titleLanguage: AppSettings.TitleLanguage?,
modifier: Modifier = Modifier,
onClick: (Medium) -> Unit
) {
Expand All @@ -49,8 +49,6 @@ fun AiringCard(
modifier = Modifier.fillMaxWidth(),
horizontalArrangement = Arrangement.spacedBy(8.dp)
) {
val titleLanguage by titleLanguageFlow.collectAsStateWithLifecycle(null)

AsyncImage(
modifier = Modifier.widthIn(min = 100.dp, max = 120.dp).fillMaxHeight().clip(MaterialTheme.shapes.medium),
model = media.coverImage.extraLarge,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ import kotlinx.coroutines.flow.StateFlow
@Composable
fun AiringOverview(
state: Flow<AiringTodayStateMachine.State>,
titleLanguage: Flow<AppSettings.TitleLanguage?>,
titleLanguage: AppSettings.TitleLanguage?,
onClick: (Medium) -> Unit
) {
val loadingState by state.collectAsStateWithLifecycle(StateSaver.Home.airingState)
Expand Down Expand Up @@ -67,7 +67,7 @@ private fun Loading() {
@Composable
private fun SuccessContent(
data: List<AiringQuery.AiringSchedule>,
titleLanguage: Flow<AppSettings.TitleLanguage?>,
titleLanguage: AppSettings.TitleLanguage?,
onClick: (Medium) -> Unit
) {
val state = rememberLazyListState(
Expand All @@ -85,7 +85,7 @@ private fun SuccessContent(
items(data, key = { it.episode to it.media?.id }) { media ->
AiringCard(
airing = media,
titleLanguageFlow = titleLanguage,
titleLanguage = titleLanguage,
modifier = Modifier
.height(150.dp)
.fillParentMaxWidth(fraction = 0.9F)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ import kotlinx.coroutines.flow.Flow
@Composable
fun MediumCard(
medium: Medium,
titleLanguageFlow: Flow<AppSettings.TitleLanguage?>,
titleLanguage: AppSettings.TitleLanguage?,
modifier: Modifier = Modifier,
onClick: (Medium) -> Unit
) {
Expand Down Expand Up @@ -100,8 +100,6 @@ fun MediumCard(
.padding(top = 16.dp),
verticalArrangement = Arrangement.spacedBy(8.dp)
) {
val titleLanguage by titleLanguageFlow.collectAsStateWithLifecycle(null)

Text(
text = medium.preferred(titleLanguage),
style = MaterialTheme.typography.titleLarge,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ import kotlinx.coroutines.flow.distinctUntilChanged
fun PopularSeasonOverview(
state: Flow<SeasonState>,
current: Boolean,
titleLanguage: Flow<AppSettings.TitleLanguage?>,
titleLanguage: AppSettings.TitleLanguage?,
onClick: (Medium) -> Unit,
) {
val loadingState by state.collectAsStateWithLifecycle(
Expand Down Expand Up @@ -76,7 +76,7 @@ private fun Loading() {
private fun SuccessContent(
data: List<SeasonQuery.Medium>,
current: Boolean,
titleLanguage: Flow<AppSettings.TitleLanguage?>,
titleLanguage: AppSettings.TitleLanguage?,
onClick: (Medium) -> Unit
) {
val listState = rememberLazyListState(
Expand All @@ -101,7 +101,7 @@ private fun SuccessContent(
itemsIndexed(data, key = { _, it -> it.id }) { _, medium ->
MediumCard(
medium = Medium(medium),
titleLanguageFlow = titleLanguage,
titleLanguage = titleLanguage,
modifier = Modifier
.width(200.dp)
.height(280.dp)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ import kotlinx.coroutines.flow.distinctUntilChanged
@Composable
fun TrendingOverview(
state: Flow<TrendingAnimeStateMachine.State>,
titleLanguage: Flow<AppSettings.TitleLanguage?>,
titleLanguage: AppSettings.TitleLanguage?,
onClick: (Medium) -> Unit,
) {
val loadingState by state.collectAsStateWithLifecycle(StateSaver.Home.trendingState)
Expand Down Expand Up @@ -65,7 +65,7 @@ private fun Loading() {
@Composable
private fun SuccessContent(
data: List<TrendingQuery.Medium>,
titleLanguage: Flow<AppSettings.TitleLanguage?>,
titleLanguage: AppSettings.TitleLanguage?,
onClick: (Medium) -> Unit
) {
val listState = rememberLazyListState(
Expand All @@ -82,7 +82,7 @@ private fun SuccessContent(
itemsIndexed(data, key = { _, it -> it.id }) { _, medium ->
MediumCard(
medium = Medium(medium),
titleLanguageFlow = titleLanguage,
titleLanguage = titleLanguage,
modifier = Modifier
.width(200.dp)
.height(280.dp)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,10 @@ class SettingsScreenComponent(
private val appSettings by di.instance<Settings.PlatformAppSettings>()
private val userHelper by di.instance<UserHelper>()

override val user: Flow<User?> = userHelper.user.flowOn(ioDispatcher())
override val adultContent: Flow<Boolean> = appSettings.adultContent.flowOn(ioDispatcher())
override val selectedColor: Flow<AppSettings.Color?> = appSettings.color.flowOn(ioDispatcher())
override val selectedTitleLanguage: Flow<AppSettings.TitleLanguage?> = appSettings.titleLanguage.flowOn(ioDispatcher())
override val user: Flow<User?> = userHelper.user
override val adultContent: Flow<Boolean> = appSettings.adultContent
override val selectedColor: Flow<AppSettings.Color?> = appSettings.color
override val selectedTitleLanguage: Flow<AppSettings.TitleLanguage?> = appSettings.titleLanguage

@Composable
override fun render() {
Expand All @@ -34,19 +34,19 @@ class SettingsScreenComponent(
}

override fun changeAdultContent(value: Boolean) {
launchIO {
launchDefault {
userHelper.updateAdultSetting(value)
}
}

override fun changeProfileColor(value: AppSettings.Color?) {
launchIO {
launchDefault {
userHelper.updateProfileColorSetting(value)
}
}

override fun changeTitleLanguage(value: AppSettings.TitleLanguage?) {
launchIO {
launchDefault {
userHelper.updateTitleLanguage(value)
}
}
Expand Down
Loading

0 comments on commit dd9debb

Please sign in to comment.