StudyDistractor/sdp

View on GitHub
app/src/main/java/com/github/studydistractor/sdp/ui/DistractionListScreen.kt

Summary

Maintainability
A
2 hrs
Test Coverage
A
91%
package com.github.studydistractor.sdp.ui

import android.util.Log
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.runtime.*
import com.github.studydistractor.sdp.data.Distraction
import com.github.studydistractor.sdp.distractionList.DistractionListViewModel
import com.github.studydistractor.sdp.ui.components.DistractionListFilterPanel
import com.github.studydistractor.sdp.ui.components.ListedDistraction

/**
 * Screens that represent a list of scrollable distraction that we can then filter
 */
@Composable
fun DistractionListScreen(
    onDistractionClicked: (Distraction) -> Unit,
    distractionListViewModel: DistractionListViewModel
) {
    distractionListViewModel.allDistractions()
    val distractions = distractionListViewModel.distractions
    distractionListViewModel.fetchDistractionsData()
    val uiState by distractionListViewModel.uiState.collectAsState()

    Column {
        DistractionListFilterPanel(
            isExpanded = uiState.filtersExpanded,
            availableTags = uiState.filtersAvailableTags,
            selectedTags = uiState.filtersSelectedTags,
            selectedLength = uiState.filtersSelectedLength,
            bookmarksOnly = uiState.bookmarksOnly,
            addTag = { distractionListViewModel.addFiltersSelectedTag(it) },
            removeTag = { distractionListViewModel.removeFiltersSelectedTag(it) },
            updateLength = { distractionListViewModel.updateFiltersSelectedLength(it) },
            updateExpansion = { distractionListViewModel.updateFiltersExpanded(it) },
            updateBookmarksOnly = {distractionListViewModel.updateBookmarksFilter(it)}
        )
        LazyColumn {
            items(uiState.distractionList) {distraction->
                ListedDistraction(
                    distraction = distraction,
                    onClick = { onDistractionClicked(distraction) },
                    isBookmarked = { distractionListViewModel.isBookmarked(it) }
                )
            }
        }
    }
}