Skip to content

Commit 08431fb

Browse files
committed
feat(javascript): add serialization to DsComponent
Add kotlinx.serialization.Serializable annotation to DsComponent class to enable serialization and deserialization of objects. Also, load ds.json file from project root to retrieve design system components.
1 parent 7d9ef32 commit 08431fb

File tree

2 files changed

+17
-3
lines changed

2 files changed

+17
-3
lines changed

javascript/src/main/kotlin/cc/unitmesh/ide/javascript/flow/DsComponent.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
package cc.unitmesh.ide.javascript.flow
22

3+
import kotlinx.serialization.Serializable
4+
35
/**
46
* the Design System Component
57
*/
8+
@Serializable
69
data class DsComponent(
710
val name: String,
811
val props: List<String>,

javascript/src/main/kotlin/cc/unitmesh/ide/javascript/flow/ReactFlow.kt

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@ package cc.unitmesh.ide.javascript.flow
33
import com.intellij.lang.ecmascript6.JSXHarmonyFileType
44
import com.intellij.lang.javascript.JavaScriptFileType
55
import com.intellij.lang.javascript.TypeScriptJSXFileType
6-
import com.intellij.lang.javascript.frameworks.react.ReactFrameworkIndexingHandler
76
import com.intellij.lang.javascript.psi.JSFile
87
import com.intellij.openapi.editor.Editor
98
import com.intellij.openapi.project.Project
10-
import com.intellij.openapi.vfs.VirtualFile
9+
import com.intellij.openapi.project.guessProjectDir
1110
import com.intellij.psi.search.FileTypeIndex
1211
import com.intellij.psi.search.GlobalSearchScope
1312
import com.intellij.psi.search.ProjectScope
13+
import kotlinx.serialization.json.Json
1414

1515
enum class RouterFile(val filename: String) {
1616
UMI(".umirc.ts"),
@@ -83,8 +83,19 @@ class ReactFlow(
8383
TODO("Not yet implemented")
8484
}
8585

86+
// load prompts/context/ds.json from project root
8687
override fun getDesignSystemComponents(): List<DsComponent> {
87-
TODO("Not yet implemented")
88+
val rootConfig = project.guessProjectDir()
89+
?.findChild("prompts")
90+
?.findChild("context")
91+
?.findChild("ds.json") ?: return emptyList()
92+
93+
val json = rootConfig.inputStream.reader().readText()
94+
return try {
95+
Json.decodeFromString(json)
96+
} catch (e: Exception) {
97+
emptyList()
98+
}
8899
}
89100

90101
override fun sampleRemoteCall(): String {

0 commit comments

Comments
 (0)