Paul N
05/02/2025, 12:30 PMOleksandr Karpovich [JB]
05/02/2025, 3:42 PMPaul N
05/06/2025, 12:03 PMRes.allStringResources
but when you use it that also brings back empty strings in WASM only:
object AllResources {
var allStringsCache: Map<String, String> = mutableMapOf()
var allResourcesCache: Map<String, StringResource> = mutableMapOf()
@OptIn(ExperimentalResourceApi::class)
@Composable
fun getAllResources(): Map<String, String> {
return allStringsCache.ifEmpty {
allResourcesCache = Res.allStringResources
val all = allResourcesCache.map { stringRes ->
stringRes.key to stringResource(stringRes.value)
}.toMap()
allStringsCache = all
allStringsCache
}.also {
allStringsCache.forEach {
println("Key: ${it.key}, Value: ${it.value}")
}
}
}
fun getStringResource(key: String): String {
return allStringsCache[key] ?: ""
}
@Composable
fun getStringResource(stringRes: StringResource): String {
return allResourcesCache[stringRes.key]?.let { stringResource(it) } ?: ""
}
}
Paul N
05/06/2025, 12:26 PMOleksandr Karpovich [JB]
05/06/2025, 1:21 PMstringResource(...)
, it will return a value from the cache.Paul N
05/07/2025, 7:28 AMOleksandr Karpovich [JB]
05/07/2025, 8:32 AMLaunchedEffect(Unit) {
Res.allStringResources.forEach {
launch {
org.jetbrains.compose.resources.getString(it.value)
}
}
}
Paul N
05/07/2025, 8:40 AMPaul N
05/07/2025, 1:16 PMOleksandr Karpovich [JB]
05/07/2025, 1:35 PMPaul N
05/07/2025, 1:44 PMOleksandr Karpovich [JB]
05/07/2025, 1:51 PMLaunchedEffect(Unit) {
Res.allStringResources.forEach {
// launch { // no launch for now
org.jetbrains.compose.resources.getString(it.value)
// }
}
}
Call it somewhere at the initialization. The sooner - the betterPaul N
05/07/2025, 2:12 PMPaul N
05/07/2025, 2:58 PMOleksandr Karpovich [JB]
05/08/2025, 9:59 AMPluralStringResource
or StringArrayResource
?Oleksandr Karpovich [JB]
05/09/2025, 4:15 PM