Browse Source

[resources] Add experimental getSystemResourceEnvironment function.

pull/4651/head
Konstantin Tskhovrebov 4 weeks ago
parent
commit
052066fb45
  1. 2
      components/resources/library/src/commonMain/kotlin/org/jetbrains/compose/resources/FontResources.kt
  2. 2
      components/resources/library/src/commonMain/kotlin/org/jetbrains/compose/resources/ImageResources.kt
  3. 6
      components/resources/library/src/commonMain/kotlin/org/jetbrains/compose/resources/PluralStringResources.kt
  4. 8
      components/resources/library/src/commonMain/kotlin/org/jetbrains/compose/resources/ResourceEnvironment.kt
  5. 3
      components/resources/library/src/commonMain/kotlin/org/jetbrains/compose/resources/StringArrayResources.kt
  6. 6
      components/resources/library/src/commonMain/kotlin/org/jetbrains/compose/resources/StringResources.kt

2
components/resources/library/src/commonMain/kotlin/org/jetbrains/compose/resources/FontResources.kt

@ -44,7 +44,7 @@ expect fun Font(
*/
@ExperimentalResourceApi
suspend fun getFontResourceBytes(
environment: ResourceEnvironment = getResourceEnvironment(),
environment: ResourceEnvironment = getSystemResourceEnvironment(),
resource: FontResource
): ByteArray {
val resourceItem = resource.getResourceItemByEnvironment(environment)

2
components/resources/library/src/commonMain/kotlin/org/jetbrains/compose/resources/ImageResources.kt

@ -118,7 +118,7 @@ private fun svgPainter(resource: DrawableResource): Painter {
*/
@ExperimentalResourceApi
suspend fun getDrawableResourceBytes(
environment: ResourceEnvironment = getResourceEnvironment(),
environment: ResourceEnvironment = getSystemResourceEnvironment(),
resource: DrawableResource
): ByteArray {
val resourceItem = resource.getResourceItemByEnvironment(environment)

6
components/resources/library/src/commonMain/kotlin/org/jetbrains/compose/resources/PluralStringResources.kt

@ -42,8 +42,9 @@ fun pluralStringResource(resource: PluralStringResource, quantity: Int): String
*
* @throws IllegalArgumentException If the provided ID or the pluralization is not found in the resource file.
*/
@OptIn(ExperimentalResourceApi::class)
suspend fun getPluralString(resource: PluralStringResource, quantity: Int): String =
loadPluralString(resource, quantity, DefaultResourceReader, getResourceEnvironment())
loadPluralString(resource, quantity, DefaultResourceReader, getSystemResourceEnvironment())
/**
* Loads a string using the specified string resource.
@ -110,12 +111,13 @@ fun pluralStringResource(resource: PluralStringResource, quantity: Int, vararg f
*
* @throws IllegalArgumentException If the provided ID or the pluralization is not found in the resource file.
*/
@OptIn(ExperimentalResourceApi::class)
suspend fun getPluralString(resource: PluralStringResource, quantity: Int, vararg formatArgs: Any): String =
loadPluralString(
resource, quantity,
formatArgs.map { it.toString() },
DefaultResourceReader,
getResourceEnvironment(),
getSystemResourceEnvironment(),
)
/**

8
components/resources/library/src/commonMain/kotlin/org/jetbrains/compose/resources/ResourceEnvironment.kt

@ -56,11 +56,15 @@ fun rememberResourceEnvironment(): ResourceEnvironment {
internal expect fun getSystemEnvironment(): ResourceEnvironment
//the function reference will be overridden for tests
//@TestOnly
internal var getResourceEnvironment = ::getSystemEnvironment
/**
* Provides the resource environment for non-composable access to string resources.
* Provides the resource environment for non-composable access to resources.
* It is an expensive operation! Don't use it in composable functions with no cache!
*/
internal var getResourceEnvironment = ::getSystemEnvironment
@ExperimentalResourceApi
fun getSystemResourceEnvironment(): ResourceEnvironment = getResourceEnvironment()
@OptIn(InternalResourceApi::class)
internal fun Resource.getResourceItemByEnvironment(environment: ResourceEnvironment): ResourceItem {

3
components/resources/library/src/commonMain/kotlin/org/jetbrains/compose/resources/StringArrayResources.kt

@ -45,8 +45,9 @@ fun stringArrayResource(resource: StringArrayResource): List<String> {
*
* @throws IllegalStateException if the string array with the given ID is not found.
*/
@OptIn(ExperimentalResourceApi::class)
suspend fun getStringArray(resource: StringArrayResource): List<String> =
loadStringArray(resource, DefaultResourceReader, getResourceEnvironment())
loadStringArray(resource, DefaultResourceReader, getSystemResourceEnvironment())
/**
* Loads a list of strings using the specified string array resource.

6
components/resources/library/src/commonMain/kotlin/org/jetbrains/compose/resources/StringResources.kt

@ -38,8 +38,9 @@ fun stringResource(resource: StringResource): String {
*
* @throws IllegalArgumentException If the provided ID is not found in the resource file.
*/
@OptIn(ExperimentalResourceApi::class)
suspend fun getString(resource: StringResource): String =
loadString(resource, DefaultResourceReader, getResourceEnvironment())
loadString(resource, DefaultResourceReader, getSystemResourceEnvironment())
/**
* Loads a string using the specified string resource.
@ -91,11 +92,12 @@ fun stringResource(resource: StringResource, vararg formatArgs: Any): String {
*
* @throws IllegalArgumentException If the provided ID is not found in the resource file.
*/
@OptIn(ExperimentalResourceApi::class)
suspend fun getString(resource: StringResource, vararg formatArgs: Any): String = loadString(
resource,
formatArgs.map { it.toString() },
DefaultResourceReader,
getResourceEnvironment()
getSystemResourceEnvironment()
)
/**

Loading…
Cancel
Save