mirror of
https://github.com/bitfireAT/davx5-ose
synced 2024-09-30 00:11:02 +00:00
Moved IntroActivity.Model to IntroModel
Signed-off-by: Arnau Mora Gras <arnyminerz@proton.me>
This commit is contained in:
parent
0935bca1a2
commit
d44cfdf437
|
@ -16,19 +16,15 @@ import androidx.appcompat.app.AppCompatActivity
|
|||
import androidx.compose.foundation.ExperimentalFoundationApi
|
||||
import androidx.compose.foundation.pager.rememberPagerState
|
||||
import androidx.compose.runtime.rememberCoroutineScope
|
||||
import androidx.lifecycle.ViewModel
|
||||
import at.bitfire.davdroid.log.Logger
|
||||
import at.bitfire.davdroid.ui.AppTheme
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import javax.inject.Inject
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
@AndroidEntryPoint
|
||||
@OptIn(ExperimentalFoundationApi::class)
|
||||
class IntroActivity : AppCompatActivity() {
|
||||
|
||||
val model by viewModels<Model>()
|
||||
val model by viewModels<IntroModel>()
|
||||
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
|
@ -77,49 +73,4 @@ class IntroActivity : AppCompatActivity() {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
@HiltViewModel
|
||||
class Model @Inject constructor(
|
||||
introPageFactory: IntroPageFactory
|
||||
): ViewModel() {
|
||||
|
||||
private val introPages = introPageFactory.introPages
|
||||
|
||||
private var _pages: List<IntroPage>? = null
|
||||
val pages: List<IntroPage>
|
||||
@Synchronized
|
||||
get() {
|
||||
_pages?.let { return it }
|
||||
|
||||
val newPages = calculatePages()
|
||||
_pages = newPages
|
||||
|
||||
return newPages
|
||||
}
|
||||
|
||||
private fun calculatePages(): List<IntroPage> {
|
||||
for (page in introPages)
|
||||
Logger.log.fine("Found intro page ${page::class.java} with order ${page.getShowPolicy()}")
|
||||
|
||||
val activePages: Map<IntroPage, IntroPage.ShowPolicy> = introPages
|
||||
.associateWith { page ->
|
||||
page.getShowPolicy().also { policy ->
|
||||
Logger.log.fine("IntroActivity: found intro page ${page::class.java} with $policy")
|
||||
}
|
||||
}
|
||||
.filterValues { it != IntroPage.ShowPolicy.DONT_SHOW }
|
||||
|
||||
val anyShowAlways = activePages.values.any { it == IntroPage.ShowPolicy.SHOW_ALWAYS }
|
||||
return if (anyShowAlways) {
|
||||
val pages = mutableListOf<IntroPage>()
|
||||
activePages.filterValues { it != IntroPage.ShowPolicy.DONT_SHOW }.forEach { page, _ ->
|
||||
pages += page
|
||||
}
|
||||
pages
|
||||
} else
|
||||
emptyList()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,49 @@
|
|||
package at.bitfire.davdroid.ui.intro
|
||||
|
||||
import androidx.lifecycle.ViewModel
|
||||
import at.bitfire.davdroid.log.Logger
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import javax.inject.Inject
|
||||
|
||||
@HiltViewModel
|
||||
class IntroModel @Inject constructor(
|
||||
introPageFactory: IntroPageFactory
|
||||
): ViewModel() {
|
||||
|
||||
private val introPages = introPageFactory.introPages
|
||||
|
||||
private var _pages: List<IntroPage>? = null
|
||||
val pages: List<IntroPage>
|
||||
@Synchronized
|
||||
get() {
|
||||
_pages?.let { return it }
|
||||
|
||||
val newPages = calculatePages()
|
||||
_pages = newPages
|
||||
|
||||
return newPages
|
||||
}
|
||||
|
||||
private fun calculatePages(): List<IntroPage> {
|
||||
for (page in introPages)
|
||||
Logger.log.fine("Found intro page ${page::class.java} with order ${page.getShowPolicy()}")
|
||||
|
||||
val activePages: Map<IntroPage, IntroPage.ShowPolicy> = introPages
|
||||
.associateWith { page ->
|
||||
page.getShowPolicy().also { policy ->
|
||||
Logger.log.fine("IntroActivity: found intro page ${page::class.java} with $policy")
|
||||
}
|
||||
}
|
||||
.filterValues { it != IntroPage.ShowPolicy.DONT_SHOW }
|
||||
|
||||
val anyShowAlways = activePages.values.any { it == IntroPage.ShowPolicy.SHOW_ALWAYS }
|
||||
return if (anyShowAlways) {
|
||||
val pages = mutableListOf<IntroPage>()
|
||||
activePages.filterValues { it != IntroPage.ShowPolicy.DONT_SHOW }.forEach { page, _ ->
|
||||
pages += page
|
||||
}
|
||||
pages
|
||||
} else
|
||||
emptyList()
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue