add previews for feed
This commit is contained in:
parent
6ba0018765
commit
366f236f98
3 changed files with 80 additions and 41 deletions
|
@ -16,34 +16,11 @@ import androidx.compose.ui.unit.sp
|
|||
import be.ugent.sel.studeez.common.composable.DateText
|
||||
import be.ugent.sel.studeez.data.local.models.FeedEntry
|
||||
import be.ugent.sel.studeez.data.local.models.timer_functional.HoursMinutesSeconds
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.coroutines.flow.flowOf
|
||||
|
||||
data class FeedActions(
|
||||
val getFeedEntries: () -> Flow<Map<String, List<FeedEntry>>>,
|
||||
val continueTask: (String, String) -> Unit,
|
||||
)
|
||||
|
||||
fun getFeedActions(
|
||||
viewmodel: FeedViewModel,
|
||||
open: (String) -> Unit,
|
||||
): FeedActions {
|
||||
return FeedActions(
|
||||
getFeedEntries = viewmodel::getFeedEntries,
|
||||
continueTask = { subjectId, taskId ->
|
||||
viewmodel.continueTask(
|
||||
open,
|
||||
subjectId,
|
||||
taskId,
|
||||
)
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun Feed(
|
||||
feedActions: FeedActions,
|
||||
uiState: FeedUiState,
|
||||
continueTask: (String, String) -> Unit,
|
||||
) {
|
||||
when (uiState) {
|
||||
FeedUiState.Loading -> {
|
||||
|
@ -58,7 +35,6 @@ fun Feed(
|
|||
}
|
||||
}
|
||||
is FeedUiState.Succes -> {
|
||||
// val feedEntries = feedActions.getFeedEntries().collectAsState(initial = emptyMap())
|
||||
val feedEntries = uiState.feedEntries
|
||||
LazyColumn {
|
||||
items(feedEntries.toList()) { (date, feedEntries) ->
|
||||
|
@ -79,7 +55,7 @@ fun Feed(
|
|||
}
|
||||
feedEntries.forEach { feedEntry ->
|
||||
FeedEntry(feedEntry = feedEntry) {
|
||||
feedActions.continueTask(feedEntry.subjectId, feedEntry.taskId)
|
||||
continueTask(feedEntry.subjectId, feedEntry.taskId)
|
||||
}
|
||||
}
|
||||
Spacer(modifier = Modifier.height(20.dp))
|
||||
|
@ -89,11 +65,49 @@ fun Feed(
|
|||
}
|
||||
}
|
||||
|
||||
@Preview
|
||||
@Composable
|
||||
fun FeedLoadingPreview() {
|
||||
Feed(
|
||||
uiState = FeedUiState.Loading,
|
||||
continueTask = { _, _ -> run {} },
|
||||
)
|
||||
}
|
||||
|
||||
@Preview
|
||||
@Composable
|
||||
fun FeedPreview() {
|
||||
Feed(
|
||||
feedActions = FeedActions({ flowOf() }, { _, _ -> run {} }),
|
||||
uiState = FeedUiState.Loading,
|
||||
uiState = FeedUiState.Succes(
|
||||
mapOf(
|
||||
"08 May 2023" to listOf(
|
||||
FeedEntry(
|
||||
argb_color = 0xFFFFD200,
|
||||
subJectName = "Test Subject",
|
||||
taskName = "Test Task",
|
||||
totalStudyTime = 600,
|
||||
),
|
||||
FeedEntry(
|
||||
argb_color = 0xFFFFD200,
|
||||
subJectName = "Test Subject",
|
||||
taskName = "Test Task",
|
||||
totalStudyTime = 20,
|
||||
),
|
||||
),
|
||||
"09 May 2023" to listOf(
|
||||
FeedEntry(
|
||||
argb_color = 0xFFFD1200,
|
||||
subJectName = "Test Subject",
|
||||
taskName = "Test Task",
|
||||
),
|
||||
FeedEntry(
|
||||
argb_color = 0xFFFFD200,
|
||||
subJectName = "Test Subject",
|
||||
taskName = "Test Task",
|
||||
),
|
||||
)
|
||||
)
|
||||
),
|
||||
continueTask = { _, _ -> run {} },
|
||||
)
|
||||
}
|
|
@ -21,8 +21,6 @@ class FeedViewModel @Inject constructor(
|
|||
logService: LogService
|
||||
) : StudeezViewModel(logService) {
|
||||
|
||||
private val entries: Flow<Map<String, List<FeedEntry>>> = feedDAO.getFeedEntries()
|
||||
|
||||
val uiState: StateFlow<FeedUiState> = feedDAO.getFeedEntries()
|
||||
.map { FeedUiState.Succes(it) }
|
||||
.stateIn(
|
||||
|
@ -31,10 +29,6 @@ class FeedViewModel @Inject constructor(
|
|||
started = SharingStarted.Eagerly,
|
||||
)
|
||||
|
||||
fun getFeedEntries(): Flow<Map<String, List<FeedEntry>>> {
|
||||
return entries
|
||||
}
|
||||
|
||||
fun continueTask(open: (String) -> Unit, subjectId: String, taskId: String) {
|
||||
viewModelScope.launch {
|
||||
val task = taskDAO.getTask(subjectId, taskId)
|
||||
|
|
|
@ -11,10 +11,12 @@ import androidx.compose.ui.tooling.preview.Preview
|
|||
import be.ugent.sel.studeez.R
|
||||
import be.ugent.sel.studeez.common.composable.PrimaryScreenTemplate
|
||||
import be.ugent.sel.studeez.common.composable.drawer.DrawerActions
|
||||
import be.ugent.sel.studeez.common.composable.feed.*
|
||||
import be.ugent.sel.studeez.common.composable.feed.Feed
|
||||
import be.ugent.sel.studeez.common.composable.feed.FeedUiState
|
||||
import be.ugent.sel.studeez.common.composable.feed.FeedViewModel
|
||||
import be.ugent.sel.studeez.common.composable.navbar.NavigationBarActions
|
||||
import be.ugent.sel.studeez.data.local.models.FeedEntry
|
||||
import be.ugent.sel.studeez.resources
|
||||
import kotlinx.coroutines.flow.flowOf
|
||||
|
||||
@Composable
|
||||
fun HomeRoute(
|
||||
|
@ -28,8 +30,8 @@ fun HomeRoute(
|
|||
drawerActions = drawerActions,
|
||||
open = open,
|
||||
navigationBarActions = navigationBarActions,
|
||||
feedActions = getFeedActions(feedViewModel, open),
|
||||
feedUiState = feedUiState,
|
||||
continueTask = { subjectId, taskId -> feedViewModel.continueTask(open, subjectId, taskId) },
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -38,8 +40,8 @@ fun HomeScreen(
|
|||
open: (String) -> Unit,
|
||||
drawerActions: DrawerActions,
|
||||
navigationBarActions: NavigationBarActions,
|
||||
feedActions: FeedActions,
|
||||
feedUiState: FeedUiState,
|
||||
continueTask: (String, String) -> Unit,
|
||||
) {
|
||||
PrimaryScreenTemplate(
|
||||
title = resources().getString(R.string.home),
|
||||
|
@ -47,7 +49,7 @@ fun HomeScreen(
|
|||
navigationBarActions = navigationBarActions,
|
||||
// TODO barAction = { FriendsAction() }
|
||||
) {
|
||||
Feed(feedActions, feedUiState)
|
||||
Feed(feedUiState, continueTask)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -68,7 +70,36 @@ fun HomeScreenPreview() {
|
|||
drawerActions = DrawerActions({}, {}, {}, {}, {}),
|
||||
navigationBarActions = NavigationBarActions({ false }, {}, {}, {}, {}, {}, {}, {}),
|
||||
open = {},
|
||||
feedActions = FeedActions({ flowOf() }, { _, _ -> run {} }),
|
||||
feedUiState = FeedUiState.Loading,
|
||||
feedUiState = FeedUiState.Succes(
|
||||
mapOf(
|
||||
"08 May 2023" to listOf(
|
||||
FeedEntry(
|
||||
argb_color = 0xFFABD200,
|
||||
subJectName = "Test Subject",
|
||||
taskName = "Test Task",
|
||||
totalStudyTime = 600,
|
||||
),
|
||||
FeedEntry(
|
||||
argb_color = 0xFFFFD200,
|
||||
subJectName = "Test Subject",
|
||||
taskName = "Test Task",
|
||||
totalStudyTime = 20,
|
||||
),
|
||||
),
|
||||
"09 May 2023" to listOf(
|
||||
FeedEntry(
|
||||
argb_color = 0xFFFD1200,
|
||||
subJectName = "Test Subject",
|
||||
taskName = "Test Task",
|
||||
),
|
||||
FeedEntry(
|
||||
argb_color = 0xFFFF5C89,
|
||||
subJectName = "Test Subject",
|
||||
taskName = "Test Task",
|
||||
),
|
||||
)
|
||||
)
|
||||
),
|
||||
continueTask = { _, _ -> run {} },
|
||||
)
|
||||
}
|
||||
|
|
Reference in a new issue