Skip to content

Commit 787e7f3

Browse files
committed
fix: couldn't load theme with over 200 anchors and aliases
1 parent e29b360 commit 787e7f3

File tree

4 files changed

+8
-39
lines changed

4 files changed

+8
-39
lines changed

app/src/main/java/com/osfans/trime/data/theme/Theme.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,15 @@ import timber.log.Timber
1515
/** 主题和样式配置 */
1616
class Theme(
1717
val configId: String,
18+
parseOnly: Boolean = false,
1819
) {
1920
private val config: Config
2021

2122
init {
22-
if (!Rime.deployRimeConfigFile(configId, CONFIG_VERSION_KEY)) {
23-
throw IllegalArgumentException("Failed to deploy theme config file '$configId'")
23+
if (!parseOnly) {
24+
if (!Rime.deployRimeConfigFile(configId, CONFIG_VERSION_KEY)) {
25+
throw IllegalArgumentException("Failed to deploy theme config file '$configId'")
26+
}
2427
}
2528
config = Config.create(configId)
2629
}

app/src/main/java/com/osfans/trime/data/theme/ThemeFilesManager.kt

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -5,36 +5,18 @@
55

66
package com.osfans.trime.data.theme
77

8-
import com.charleskorn.kaml.AnchorsAndAliases
9-
import com.charleskorn.kaml.Yaml
10-
import com.charleskorn.kaml.YamlConfiguration
118
import timber.log.Timber
129
import java.io.File
1310

1411
object ThemeFilesManager {
15-
private val yaml =
16-
Yaml(
17-
configuration =
18-
YamlConfiguration(
19-
strictMode = false,
20-
anchorsAndAliases = AnchorsAndAliases.Permitted(200u),
21-
),
22-
)
23-
24-
fun listThemes(dir: File): MutableList<ThemeStub> {
12+
fun listThemes(dir: File): MutableList<Theme> {
2513
val files = dir.listFiles { _, name -> name.endsWith("trime.yaml") } ?: return mutableListOf()
2614
return files
2715
.sortedByDescending { it.lastModified() }
2816
.mapNotNull decode@{
2917
val theme =
3018
runCatching {
31-
yaml
32-
.decodeFromString(
33-
ThemeStub.serializer(),
34-
it.inputStream().bufferedReader().readText(),
35-
).apply {
36-
configId = it.nameWithoutExtension
37-
}
19+
Theme(it.nameWithoutExtension, parseOnly = true)
3820
}.getOrElse { e ->
3921
Timber.w("Failed to decode theme file ${it.absolutePath}: ${e.message}")
4022
return@decode null

app/src/main/java/com/osfans/trime/data/theme/ThemeManager.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ object ThemeManager {
1515
fun onThemeChange(theme: Theme)
1616
}
1717

18-
fun getAllThemes(): List<ThemeStub> {
18+
fun getAllThemes(): List<Theme> {
1919
val sharedThemes = ThemeFilesManager.listThemes(DataManager.sharedDataDir)
2020
val userThemes = ThemeFilesManager.listThemes(DataManager.userDataDir)
2121
return sharedThemes + userThemes

app/src/main/java/com/osfans/trime/data/theme/ThemeStub.kt

Lines changed: 0 additions & 16 deletions
This file was deleted.

0 commit comments

Comments
 (0)