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

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

Change selectAccount to also trigger open account

parent 937bb3da
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@ import org.koin.core.component.inject

class FolderDrawer(
    override val parent: AppCompatActivity,
    private val openAccount: (account: Account) -> Unit,
    private val openFolder: (folderId: Long) -> Unit,
    createDrawerListener: () -> DrawerLayout.DrawerListener,
) : NavigationDrawer, KoinComponent {
@@ -35,6 +36,7 @@ class FolderDrawer(
        drawerView.setContent {
            themeProvider.WithTheme {
                DrawerView(
                    openAccount = openAccount,
                    openFolder = openFolder,
                    closeDrawer = { close() },
                )
+2 −0
Original line number Diff line number Diff line
@@ -3,6 +3,7 @@ package app.k9mail.feature.navigation.drawer.ui
import androidx.compose.runtime.Stable
import app.k9mail.core.ui.compose.common.mvi.UnidirectionalViewModel
import app.k9mail.feature.navigation.drawer.domain.entity.DisplayAccount
import app.k9mail.legacy.account.Account
import app.k9mail.legacy.ui.folder.DisplayFolder
import kotlinx.collections.immutable.ImmutableList
import kotlinx.collections.immutable.persistentListOf
@@ -29,6 +30,7 @@ interface DrawerContract {
    }

    sealed interface Effect {
        data class OpenAccount(val account: Account) : Effect
        data class OpenFolder(val folderId: Long) : Effect
        data object CloseDrawer : Effect
    }
+3 −0
Original line number Diff line number Diff line
@@ -6,16 +6,19 @@ import app.k9mail.core.ui.compose.designsystem.molecule.PullToRefreshBox
import app.k9mail.feature.navigation.drawer.ui.DrawerContract.Effect
import app.k9mail.feature.navigation.drawer.ui.DrawerContract.Event
import app.k9mail.feature.navigation.drawer.ui.DrawerContract.ViewModel
import app.k9mail.legacy.account.Account
import org.koin.androidx.compose.koinViewModel

@Composable
fun DrawerView(
    openAccount: (account: Account) -> Unit,
    openFolder: (folderId: Long) -> Unit,
    closeDrawer: () -> Unit,
    viewModel: ViewModel = koinViewModel<DrawerViewModel>(),
) {
    val (state, dispatch) = viewModel.observe { effect ->
        when (effect) {
            is Effect.OpenAccount -> openAccount(effect.account)
            is Effect.OpenFolder -> openFolder(effect.folderId)
            Effect.CloseDrawer -> closeDrawer()
        }
+2 −0
Original line number Diff line number Diff line
@@ -95,6 +95,8 @@ class DrawerViewModel(
                )
            }
        }

        emitEffect(Effect.OpenAccount(account.account))
    }

    private fun ImmutableList<DisplayAccount>.nextOrFirst(account: DisplayAccount): DisplayAccount? {
+10 −0
Original line number Diff line number Diff line
@@ -18,27 +18,36 @@ class DrawerViewKtTest : ComposeTest() {
    fun `should delegate effects`() = runTest {
        val initialState = State()
        val viewModel = FakeDrawerViewModel(initialState)
        var openAccountCounter = 0
        var openFolderCounter = 0
        var closeDrawerCounter = 0

        setContentWithTheme {
            DrawerView(
                openAccount = { openAccountCounter++ },
                openFolder = { openFolderCounter++ },
                closeDrawer = { closeDrawerCounter++ },
                viewModel = viewModel,
            )
        }

        assertThat(openAccountCounter).isEqualTo(0)
        assertThat(openFolderCounter).isEqualTo(0)
        assertThat(closeDrawerCounter).isEqualTo(0)

        viewModel.effect(Effect.OpenAccount(FakeData.ACCOUNT))

        assertThat(openAccountCounter).isEqualTo(1)

        viewModel.effect(Effect.OpenFolder(1))

        assertThat(openAccountCounter).isEqualTo(1)
        assertThat(openFolderCounter).isEqualTo(1)
        assertThat(closeDrawerCounter).isEqualTo(0)

        viewModel.effect(Effect.CloseDrawer)

        assertThat(openAccountCounter).isEqualTo(1)
        assertThat(openFolderCounter).isEqualTo(1)
        assertThat(closeDrawerCounter).isEqualTo(1)
    }
@@ -52,6 +61,7 @@ class DrawerViewKtTest : ComposeTest() {

        setContentWithTheme {
            DrawerView(
                openAccount = {},
                openFolder = {},
                closeDrawer = {},
                viewModel = viewModel,
Loading