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

Commit 322c8be4 authored by cketti's avatar cketti
Browse files

Avoid crash when trying to open non-existent folder

For now we load the default folder instead.
parent 6c325f11
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -1639,6 +1639,11 @@ open class MessageList :
        permissionUiHelper.requestPermission(permission)
    }

    override fun onFolderNotFoundError() {
        val defaultFolderId = defaultFolderProvider.getDefaultFolder(account!!)
        openFolderImmediately(defaultFolderId)
    }

    private enum class DisplayMode {
        MESSAGE_LIST, MESSAGE_VIEW, SPLIT_VIEW
    }
+15 −11
Original line number Diff line number Diff line
@@ -147,7 +147,7 @@ class MessageListFragment :
        super.onCreate(savedInstanceState)

        restoreInstanceState(savedInstanceState)
        decodeArguments()
        decodeArguments() ?: return

        viewModel.getMessageListLiveData().observe(this) { messageListInfo: MessageListInfo ->
            setMessageList(messageListInfo)
@@ -177,7 +177,7 @@ class MessageListFragment :
        listView.onRestoreInstanceState(savedListState)
    }

    private fun decodeArguments() {
    private fun decodeArguments(): MessageListFragment? {
        val arguments = requireArguments()
        showingThreadedList = arguments.getBoolean(ARG_THREADED_LIST, false)
        isThreadDisplay = arguments.getBoolean(ARG_IS_THREAD_DISPLAY, false)
@@ -198,12 +198,19 @@ class MessageListFragment :

        isSingleFolderMode = false
        if (isSingleAccountMode && localSearch.folderIds.size == 1) {
            isSingleFolderMode = true
            try {
                val folderId = localSearch.folderIds[0]
                currentFolder = getFolderInfoHolder(folderId, account!!)
                isSingleFolderMode = true
            } catch (e: MessagingException) {
                fragmentListener.onFolderNotFoundError()
                return null
            }
        }

        return this
    }

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        return inflater.inflate(R.layout.message_list_fragment, container, false).apply {
            initializeSwipeRefreshLayout(this)
@@ -458,12 +465,8 @@ class MessageListFragment :
        )

    private fun getFolderInfoHolder(folderId: Long, account: Account): FolderInfoHolder {
        return try {
        val localFolder = MlfUtils.getOpenFolder(folderId, account)
            FolderInfoHolder(folderNameFormatter, localFolder, account)
        } catch (e: MessagingException) {
            throw RuntimeException(e)
        }
        return FolderInfoHolder(folderNameFormatter, localFolder, account)
    }

    override fun onResume() {
@@ -1926,6 +1929,7 @@ class MessageListFragment :
        fun remoteSearchStarted()
        fun goBack()
        fun updateMenu()
        fun onFolderNotFoundError()

        companion object {
            const val MAX_PROGRESS = 10000