![JAR search and dependency download from the Maven repository](/logo.png)
commonMain.com.paoapps.fifi.auth.model.AuthModelImpl.kt Maven / Gradle / Ivy
package com.paoapps.fifi.auth.model
import com.paoapps.fifi.auth.IdentifiableClaims
import com.paoapps.fifi.auth.TokenStore
import com.paoapps.fifi.auth.api.AuthClientApi
import com.paoapps.fifi.di.API_FLOW_QUALIFIER
import com.paoapps.fifi.domain.auth.Tokens
import com.paoapps.fifi.model.Model
import com.paoapps.fifi.model.ModelEnvironment
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.flatMapLatest
import kotlinx.coroutines.flow.map
import org.koin.core.component.KoinComponent
import org.koin.core.component.inject
open class AuthModelImpl, Environment: ModelEnvironment, Api: AuthClientApi, UserId>(
override val model: Model
): KoinComponent, AuthModel {
private val apiFlow: Flow by inject(API_FLOW_QUALIFIER)
override val userIdFlow: Flow by lazy { apiFlow.flatMapLatest { it.claimsFlow }.map { it?.id }.distinctUntilChanged() }
override fun storeTokens(tokens: Tokens) {
getKoin().get().saveTokens(tokens, model.currentEnvironment)
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy