Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Unverified Commit 8d34ada1 authored by Wolf-Martell Montwé's avatar Wolf-Martell Montwé
Browse files

Add FolderList

parent 7b473d64
Loading
Loading
Loading
Loading
+4 −2
Original line number Original line Diff line number Diff line
@@ -4,6 +4,7 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.Preview
import app.k9mail.core.ui.compose.designsystem.PreviewWithTheme
import app.k9mail.core.ui.compose.designsystem.PreviewWithTheme
import app.k9mail.feature.navigation.drawer.ui.FakeData.DISPLAY_ACCOUNT
import app.k9mail.feature.navigation.drawer.ui.FakeData.DISPLAY_ACCOUNT
import kotlinx.collections.immutable.persistentListOf


@Composable
@Composable
@Preview(showBackground = true)
@Preview(showBackground = true)
@@ -11,8 +12,9 @@ internal fun DrawerContentPreview() {
    PreviewWithTheme {
    PreviewWithTheme {
        DrawerContent(
        DrawerContent(
            state = DrawerContract.State(
            state = DrawerContract.State(
                accounts = emptyList(),
                currentAccount = null,
                currentAccount = null,
                accounts = persistentListOf(),
                folders = persistentListOf(),
            ),
            ),
        )
        )
    }
    }
@@ -24,7 +26,7 @@ fun DrawerContentWithAccountPreview() {
    PreviewWithTheme {
    PreviewWithTheme {
        DrawerContent(
        DrawerContent(
            state = DrawerContract.State(
            state = DrawerContract.State(
                accounts = listOf(DISPLAY_ACCOUNT),
                accounts = persistentListOf(DISPLAY_ACCOUNT),
                currentAccount = DISPLAY_ACCOUNT,
                currentAccount = DISPLAY_ACCOUNT,
            ),
            ),
        )
        )
+1 −0
Original line number Original line Diff line number Diff line
@@ -49,6 +49,7 @@ val navigationDrawerModule: Module = module {
    viewModel {
    viewModel {
        DrawerViewModel(
        DrawerViewModel(
            getDisplayAccounts = get(),
            getDisplayAccounts = get(),
            getDisplayFoldersForAccount = get(),
        )
        )
    }
    }
}
}
+7 −28
Original line number Original line Diff line number Diff line
@@ -4,16 +4,15 @@ import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.runtime.Composable
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.platform.testTag
import app.k9mail.core.ui.compose.designsystem.atom.DividerHorizontal
import app.k9mail.core.ui.compose.designsystem.atom.DividerHorizontal
import app.k9mail.core.ui.compose.designsystem.atom.Surface
import app.k9mail.core.ui.compose.designsystem.atom.Surface
import app.k9mail.core.ui.compose.designsystem.organism.drawer.NavigationDrawerItem
import app.k9mail.core.ui.compose.theme2.MainTheme
import app.k9mail.core.ui.compose.theme2.MainTheme
import app.k9mail.feature.navigation.drawer.ui.DrawerContract.State
import app.k9mail.feature.navigation.drawer.ui.DrawerContract.State
import app.k9mail.feature.navigation.drawer.ui.account.AccountView
import app.k9mail.feature.navigation.drawer.ui.account.AccountView
import app.k9mail.feature.navigation.drawer.ui.folder.FolderList


@Composable
@Composable
fun DrawerContent(
fun DrawerContent(
@@ -42,32 +41,12 @@ fun DrawerContent(


                DividerHorizontal()
                DividerHorizontal()
            }
            }
            LazyColumn(
            FolderList(
                modifier = Modifier
                folders = state.folders,
                    .fillMaxSize(),
                selectedFolder = state.folders.firstOrNull(), // TODO Use selected folder from state
            ) {
                onFolderClick = { },
                item {
                showStarredCount = state.showStarredCount,
                    NavigationDrawerItem(
                        label = "Folder1",
                        selected = true,
                        onClick = {},
                    )
                }
                item {
                    NavigationDrawerItem(
                        label = "Folder2",
                        selected = false,
                        onClick = {},
            )
            )
        }
        }
                item {
                    NavigationDrawerItem(
                        label = "Folder3",
                        selected = false,
                        onClick = {},
                    )
                }
            }
        }
    }
    }
}
}
+9 −1
Original line number Original line Diff line number Diff line
package app.k9mail.feature.navigation.drawer.ui
package app.k9mail.feature.navigation.drawer.ui


import androidx.compose.runtime.Stable
import app.k9mail.core.ui.compose.common.mvi.UnidirectionalViewModel
import app.k9mail.core.ui.compose.common.mvi.UnidirectionalViewModel
import app.k9mail.feature.navigation.drawer.domain.entity.DisplayAccount
import app.k9mail.feature.navigation.drawer.domain.entity.DisplayAccount
import app.k9mail.legacy.ui.folder.DisplayFolder
import kotlinx.collections.immutable.ImmutableList
import kotlinx.collections.immutable.immutableListOf
import kotlinx.collections.immutable.persistentListOf


interface DrawerContract {
interface DrawerContract {


    interface ViewModel : UnidirectionalViewModel<State, Event, Effect>
    interface ViewModel : UnidirectionalViewModel<State, Event, Effect>


    @Stable
    data class State(
    data class State(
        val currentAccount: DisplayAccount? = null,
        val currentAccount: DisplayAccount? = null,
        val accounts: List<DisplayAccount> = emptyList(),
        val accounts: ImmutableList<DisplayAccount> = persistentListOf(),
        val folders: ImmutableList<DisplayFolder> = persistentListOf(),
        val showStarredCount: Boolean = false,
        val isLoading: Boolean = false,
        val isLoading: Boolean = false,
    )
    )


+4 −2
Original line number Original line Diff line number Diff line
@@ -4,16 +4,18 @@ import androidx.compose.runtime.Composable
import app.k9mail.core.ui.compose.common.mvi.observe
import app.k9mail.core.ui.compose.common.mvi.observe
import app.k9mail.core.ui.compose.designsystem.molecule.PullToRefreshBox
import app.k9mail.core.ui.compose.designsystem.molecule.PullToRefreshBox
import org.koin.androidx.compose.koinViewModel
import org.koin.androidx.compose.koinViewModel
import app.k9mail.feature.navigation.drawer.ui.DrawerContract.Event
import app.k9mail.feature.navigation.drawer.ui.DrawerContract.ViewModel


@Composable
@Composable
fun DrawerView(
fun DrawerView(
    viewModel: DrawerContract.ViewModel = koinViewModel<DrawerViewModel>(),
    viewModel: ViewModel = koinViewModel<DrawerViewModel>(),
) {
) {
    val (state, dispatch) = viewModel.observe { }
    val (state, dispatch) = viewModel.observe { }


    PullToRefreshBox(
    PullToRefreshBox(
        isRefreshing = state.value.isLoading,
        isRefreshing = state.value.isLoading,
        onRefresh = { dispatch(DrawerContract.Event.OnRefresh) },
        onRefresh = { dispatch(Event.OnRefresh) },
    ) {
    ) {
        DrawerContent(
        DrawerContent(
            state = state.value,
            state = state.value,
Loading