secant-android-wallet/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/compat/FontCompat.kt

33 lines
1.1 KiB
Kotlin

package co.electriccoin.zcash.ui.design.compat
import android.content.Context
import androidx.annotation.FontRes
import androidx.core.content.res.ResourcesCompat
import co.electriccoin.zcash.spackle.AndroidApiVersion
import co.electriccoin.zcash.ui.design.R
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
object FontCompat {
fun isFontPrefetchNeeded() = !AndroidApiVersion.isAtLeastO
suspend fun prefetchFontsLegacy(context: Context) {
prefetchFontLegacy(context, R.font.rubik_medium)
prefetchFontLegacy(context, R.font.rubik_regular)
}
/**
* Pre-fetches fonts on Android N (API 25) and below.
*/
/*
* ResourcesCompat is used implicitly by Compose on older Android versions.
* The backwards compatibility library performs disk IO and then
* caches the results. This moves that IO off the main thread, to prevent ANRs and
* jank during app startup.
*/
private suspend fun prefetchFontLegacy(context: Context, @FontRes fontRes: Int) =
withContext(Dispatchers.IO) {
ResourcesCompat.getFont(context, fontRes)
}
}