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

Unverified Commit 870dfab4 authored by Philipp Kewisch's avatar Philipp Kewisch Committed by GitHub
Browse files

Merge pull request #9161 from wmontwe/fix-issue-8548

Fix crash while configuring the drawer
parents 6a0d53ee 44eb34ac
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -24,7 +24,7 @@ internal data class FolderDrawerState(
class DropDownDrawer(
    override val parent: AppCompatActivity,
    private val openAccount: (accountId: String) -> Unit,
    private val openFolder: (folderId: Long) -> Unit,
    private val openFolder: (accountId: String, folderId: Long) -> Unit,
    private val openUnifiedFolder: () -> Unit,
    private val openManageFolders: () -> Unit,
    private val openSettings: () -> Unit,
+1 −1
Original line number Diff line number Diff line
@@ -49,7 +49,7 @@ internal interface DrawerContract {

    sealed interface Effect {
        data class OpenAccount(val accountId: String) : Effect
        data class OpenFolder(val folderId: Long) : Effect
        data class OpenFolder(val accountId: String, val folderId: Long) : Effect
        data object OpenUnifiedFolder : Effect
        data object OpenManageFolders : Effect
        data object OpenSettings : Effect
+5 −2
Original line number Diff line number Diff line
@@ -14,7 +14,7 @@ import org.koin.androidx.compose.koinViewModel
internal fun DrawerView(
    drawerState: FolderDrawerState,
    openAccount: (accountId: String) -> Unit,
    openFolder: (folderId: Long) -> Unit,
    openFolder: (accountId: String, folderId: Long) -> Unit,
    openUnifiedFolder: () -> Unit,
    openManageFolders: () -> Unit,
    openSettings: () -> Unit,
@@ -24,7 +24,10 @@ internal fun DrawerView(
    val (state, dispatch) = viewModel.observe { effect ->
        when (effect) {
            is Effect.OpenAccount -> openAccount(effect.accountId)
            is Effect.OpenFolder -> openFolder(effect.folderId)
            is Effect.OpenFolder -> openFolder(
                effect.accountId,
                effect.folderId,
            )
            Effect.OpenUnifiedFolder -> openUnifiedFolder()
            is Effect.OpenManageFolders -> openManageFolders()
            is Effect.OpenSettings -> openSettings()
+6 −1
Original line number Diff line number Diff line
@@ -173,7 +173,12 @@ internal class DrawerViewModel(

    private fun openFolder(folder: DisplayFolder) {
        if (folder is DisplayAccountFolder) {
            emitEffect(Effect.OpenFolder(folder.folder.id))
            emitEffect(
                Effect.OpenFolder(
                    accountId = folder.accountId,
                    folderId = folder.folder.id,
                ),
            )
        } else if (folder is DisplayUnifiedFolder) {
            emitEffect(Effect.OpenUnifiedFolder)
        }
+9 −4
Original line number Diff line number Diff line
@@ -29,7 +29,7 @@ internal class DrawerViewKtTest : ComposeTest() {
            DrawerView(
                drawerState = FolderDrawerState(),
                openAccount = { counter.openAccountCount++ },
                openFolder = { counter.openFolderCount++ },
                openFolder = { _, _ -> counter.openFolderCount++ },
                openUnifiedFolder = { counter.openUnifiedFolderCount++ },
                openManageFolders = { counter.openManageFoldersCount++ },
                openSettings = { counter.openSettingsCount++ },
@@ -46,7 +46,12 @@ internal class DrawerViewKtTest : ComposeTest() {
        assertThat(counter).isEqualTo(verifyCounter)

        verifyCounter.openFolderCount++
        viewModel.effect(Effect.OpenFolder(1))
        viewModel.effect(
            Effect.OpenFolder(
                accountId = "accountId",
                folderId = 1,
            ),
        )

        verifyCounter.openUnifiedFolderCount++
        viewModel.effect(Effect.OpenUnifiedFolder)
@@ -74,7 +79,7 @@ internal class DrawerViewKtTest : ComposeTest() {
            DrawerView(
                drawerState = state.value,
                openAccount = { },
                openFolder = { },
                openFolder = { _, _ -> },
                openUnifiedFolder = { },
                openManageFolders = { },
                openSettings = { },
@@ -111,7 +116,7 @@ internal class DrawerViewKtTest : ComposeTest() {
            DrawerView(
                drawerState = FolderDrawerState(),
                openAccount = {},
                openFolder = {},
                openFolder = { _, _ -> },
                openUnifiedFolder = {},
                openManageFolders = {},
                openSettings = {},
Loading