Add APICache + splashscreen init.
This commit is contained in:
parent
e9cb8cd0ac
commit
2ad8d5953a
16 changed files with 309 additions and 15 deletions
|
|
@ -15,7 +15,7 @@ import com.google.android.gms.common.api.ApiException
|
|||
import com.pixelized.biblib.network.data.query.AuthLoginQuery
|
||||
import com.pixelized.biblib.network.client.IBibLibClient
|
||||
import com.pixelized.biblib.repository.credential.ICredentialRepository
|
||||
import com.pixelized.biblib.repository.googlesignin.IGoogleSingInRepository
|
||||
import com.pixelized.biblib.repository.googleSignIn.IGoogleSingInRepository
|
||||
import com.pixelized.biblib.ui.viewmodel.authentication.IAuthentication.State
|
||||
import com.pixelized.biblib.utils.exception.MissingTokenException
|
||||
import com.pixelized.biblib.utils.injection.inject
|
||||
|
|
|
|||
|
|
@ -4,8 +4,9 @@ import androidx.compose.runtime.*
|
|||
import androidx.lifecycle.ViewModel
|
||||
import com.pixelized.biblib.network.client.IBibLibClient
|
||||
import com.pixelized.biblib.network.data.query.AuthLoginQuery
|
||||
import com.pixelized.biblib.repository.apiCache.IAPICacheRepository
|
||||
import com.pixelized.biblib.repository.credential.ICredentialRepository
|
||||
import com.pixelized.biblib.repository.googlesignin.IGoogleSingInRepository
|
||||
import com.pixelized.biblib.repository.googleSignIn.IGoogleSingInRepository
|
||||
import com.pixelized.biblib.ui.viewmodel.initialisation.IInitialisation.State.*
|
||||
import com.pixelized.biblib.utils.injection.inject
|
||||
import kotlinx.coroutines.delay
|
||||
|
|
@ -14,6 +15,7 @@ class InitialisationViewModel : ViewModel(), IInitialisation {
|
|||
private val credentialRepository: ICredentialRepository by inject()
|
||||
private val googleSignIn: IGoogleSingInRepository by inject()
|
||||
private val client: IBibLibClient by inject()
|
||||
private val apiCache: IAPICacheRepository by inject()
|
||||
|
||||
@Composable
|
||||
override fun LoadApplication(content: @Composable (IInitialisation.State) -> Unit) {
|
||||
|
|
@ -24,6 +26,9 @@ class InitialisationViewModel : ViewModel(), IInitialisation {
|
|||
delay(2000)
|
||||
|
||||
val loggedIn = loginWithGoogle() || loginWithCredential()
|
||||
if (loggedIn) {
|
||||
loadNewBooks() && loadAllBooks()
|
||||
}
|
||||
state.value = Finished(needLogin = loggedIn.not())
|
||||
}
|
||||
|
||||
|
|
@ -71,4 +76,20 @@ class InitialisationViewModel : ViewModel(), IInitialisation {
|
|||
false
|
||||
}
|
||||
}
|
||||
|
||||
private suspend fun loadNewBooks(): Boolean {
|
||||
val cached = apiCache.new
|
||||
val updated = client.service.new()
|
||||
return if (cached != updated) {
|
||||
apiCache.new = updated
|
||||
true
|
||||
} else {
|
||||
false
|
||||
}
|
||||
}
|
||||
|
||||
private suspend fun loadAllBooks(): Boolean {
|
||||
apiCache.list = client.service.list()
|
||||
return true
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue