@@ -25,6 +25,7 @@ import com.itsaky.androidide.utils.flashError
2525import com.itsaky.androidide.utils.viewLifecycleScope
2626import com.itsaky.androidide.viewmodel.MainViewModel
2727import com.itsaky.androidide.viewmodel.RecentProjectsViewModel
28+ import com.itsaky.androidide.preferences.internal.GeneralPreferences
2829import io.sentry.Sentry
2930import kotlinx.coroutines.Dispatchers
3031import kotlinx.coroutines.joinAll
@@ -53,7 +54,7 @@ class RecentProjectsFragment : BaseFragment() {
5354 setupRecyclerView()
5455 setupObservers()
5556 setupClickListeners()
56- bootstrapFromFixedFolderIfNeeded(autoOpenFirst = true )
57+ bootstrapFromFixedFolderIfNeeded()
5758 }
5859
5960 private fun setupRecyclerView () {
@@ -65,7 +66,7 @@ class RecentProjectsFragment : BaseFragment() {
6566
6667 private fun File.isProjectCandidateDir (): Boolean = isDirectory && canRead() && ! name.startsWith(" ." ) && ! isHidden
6768
68- private fun bootstrapFromFixedFolderIfNeeded (autoOpenFirst : Boolean ) {
69+ private fun bootstrapFromFixedFolderIfNeeded () {
6970 if (viewModel.didBootstrap) return
7071 viewModel.didBootstrap = true
7172
@@ -76,8 +77,23 @@ class RecentProjectsFragment : BaseFragment() {
7677
7778 loadProjectsIntoViewModel(validProjects)
7879
79- if (autoOpenFirst) withContext(Dispatchers .Main ) {
80- openProject(validProjects.first())
80+ if (GeneralPreferences .autoOpenProjects) {
81+ val lastOpenedPath = GeneralPreferences .lastOpenedProject
82+
83+ val projectToOpen = validProjects.find {
84+ it.absolutePath == lastOpenedPath
85+ }
86+
87+ if (projectToOpen != null ) {
88+ withContext(Dispatchers .Main ) { openProject(projectToOpen) }
89+ return @launch
90+ }
91+
92+ val lastCreated = validProjects.maxByOrNull { it.lastModified() }
93+
94+ if (lastCreated != null ) {
95+ withContext(Dispatchers .Main ) { openProject(lastCreated) }
96+ }
8197 }
8298 } catch (e: Throwable ) {
8399 Sentry .captureException(e)
0 commit comments