Skip to content

Commit

Permalink
Merge pull request #949 from Corvus400/enhancement/implement_loading_…
Browse files Browse the repository at this point in the history
…ui_state_staff_screen

♻️ [StaffScreen]Added loading indicator since it is missing.
  • Loading branch information
takahirom authored Sep 4, 2024
2 parents 5f1bee8 + 06c8101 commit 9a3cf6f
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 14 deletions.
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
package io.github.droidkaigi.confsched.staff

import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Scaffold
import androidx.compose.material3.SnackbarHost
Expand All @@ -14,6 +16,7 @@ import androidx.compose.material3.Surface
import androidx.compose.material3.TopAppBarDefaults
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.testTag
Expand Down Expand Up @@ -51,10 +54,18 @@ fun NavGraphBuilder.staffScreens(
}
}

data class StaffUiState(
val staff: PersistentList<Staff>,
val userMessageStateHolder: UserMessageStateHolder,
)
sealed interface StaffUiState {
val userMessageStateHolder: UserMessageStateHolder

data class Loading(
override val userMessageStateHolder: UserMessageStateHolder,
) : StaffUiState

data class Exists(
override val userMessageStateHolder: UserMessageStateHolder,
val staff: PersistentList<Staff>,
) : StaffUiState
}

@Composable
fun StaffScreen(
Expand Down Expand Up @@ -126,14 +137,28 @@ fun StaffScreen(
.testTag(StaffScreenLazyColumnTestTag),
contentPadding = PaddingValues(bottom = padding.calculateBottomPadding()),
) {
items(uiState.staff) { staff ->
StaffItem(
staff = staff,
onStaffItemClick = onStaffItemClick,
modifier = Modifier
.fillMaxWidth()
.testTag(StaffItemTestTagPrefix.plus(staff.id)),
)
when (uiState) {
is StaffUiState.Exists -> {
items(uiState.staff) { staff ->
StaffItem(
staff = staff,
onStaffItemClick = onStaffItemClick,
modifier = Modifier
.fillMaxWidth()
.testTag(StaffItemTestTagPrefix.plus(staff.id)),
)
}
}
is StaffUiState.Loading -> {
item {
Box(
contentAlignment = Alignment.Center,
modifier = Modifier.padding(padding).fillMaxSize(),
) {
CircularProgressIndicator()
}
}
}
}
}
}
Expand All @@ -145,7 +170,7 @@ fun StaffScreenPreview() {
KaigiTheme {
Surface {
StaffScreen(
uiState = StaffUiState(
uiState = StaffUiState.Exists(
staff = Staff.fakes(),
userMessageStateHolder = UserMessageStateHolderImpl(),
),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@ fun staffScreenPresenter(
val staff by rememberUpdatedState(staffRepository.staff())
EventEffect(events) { event ->
}
StaffUiState(
if (staff.isEmpty()) return@providePresenterDefaults StaffUiState.Loading(userMessageStateHolder)
StaffUiState.Exists(
staff = staff,
userMessageStateHolder = userMessageStateHolder,
)
Expand Down

0 comments on commit 9a3cf6f

Please sign in to comment.