All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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