diff --git a/app/src/main/java/com/itsaky/androidide/viewmodel/FileTreeViewModel.kt b/app/src/main/java/com/itsaky/androidide/viewmodel/FileTreeViewModel.kt index fde86670a..2f0e958b4 100644 --- a/app/src/main/java/com/itsaky/androidide/viewmodel/FileTreeViewModel.kt +++ b/app/src/main/java/com/itsaky/androidide/viewmodel/FileTreeViewModel.kt @@ -20,6 +20,7 @@ package com.itsaky.androidide.viewmodel import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import com.itsaky.androidide.tasks.executeAsync +import com.itsaky.androidide.tasks.runOnUiThread import com.unnamed.b.atv.view.AndroidTreeView /** @@ -36,10 +37,14 @@ internal class FileTreeViewModel : ViewModel() { fun saveState(treeView: AndroidTreeView?) { treeView?.let { tree -> - executeAsync { + executeAsync({ // if a large number of directories have been expanded in the tree // this could block teh UI thread - treeState.value = tree.saveState + return@executeAsync tree.saveState + }) { result -> + runOnUiThread { + treeState.value = result + } } } } diff --git a/common/src/main/java/com/itsaky/androidide/tasks/TaskExecutor.kt b/common/src/main/java/com/itsaky/androidide/tasks/TaskExecutor.kt index facd80dcc..320670dd2 100755 --- a/common/src/main/java/com/itsaky/androidide/tasks/TaskExecutor.kt +++ b/common/src/main/java/com/itsaky/androidide/tasks/TaskExecutor.kt @@ -98,3 +98,7 @@ fun executeAsyncProvideError( callback: (R?, Throwable?) -> Unit ): CompletableFuture = TaskExecutor.executeAsyncProvideError(callable, callback) + +fun runOnUiThread(action : () -> Unit) { + ThreadUtils.runOnUiThread(action) +}