Skip to content

Commit bcfdc7b

Browse files
committed
Create PsiKtFileFactory, update KtFile usages
1 parent 2e37bf7 commit bcfdc7b

File tree

13 files changed

+67
-65
lines changed

13 files changed

+67
-65
lines changed

sdk/intellij/psi/iconpack/api/iconpack.api

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ public final class io/github/composegears/valkyrie/sdk/intellij/psi/iconpack/Ico
1313

1414
public final class io/github/composegears/valkyrie/sdk/intellij/psi/iconpack/IconPackPsiParser {
1515
public static final field INSTANCE Lio/github/composegears/valkyrie/sdk/intellij/psi/iconpack/IconPackPsiParser;
16-
public final fun extractIconPack (Ljava/nio/file/Path;Lcom/intellij/openapi/project/Project;)Lio/github/composegears/valkyrie/sdk/intellij/psi/iconpack/IconPackInfo;
1716
public final fun parse (Lorg/jetbrains/kotlin/psi/KtFile;)Lio/github/composegears/valkyrie/sdk/intellij/psi/iconpack/IconPackInfo;
1817
}
1918

sdk/intellij/psi/iconpack/build.gradle.kts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ plugins {
88
}
99

1010
dependencies {
11-
implementation(projects.sdk.core.extensions)
1211
implementation(projects.components.generator.core)
1312

1413
testImplementation(testFixtures(projects.sdk.intellij.testFixtures))

sdk/intellij/psi/iconpack/src/main/kotlin/io/github/composegears/valkyrie/sdk/intellij/psi/iconpack/IconPackPsiParser.kt

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,6 @@
11
package io.github.composegears.valkyrie.sdk.intellij.psi.iconpack
22

3-
import com.intellij.openapi.project.Project
4-
import com.intellij.psi.PsiManager
5-
import com.intellij.testFramework.LightVirtualFile
63
import io.github.composegears.valkyrie.generator.core.IconPack
7-
import io.github.composegears.valkyrie.sdk.core.extensions.safeAs
8-
import java.nio.file.Path
9-
import kotlin.io.path.name
10-
import kotlin.io.path.readText
11-
import org.jetbrains.kotlin.idea.KotlinFileType
124
import org.jetbrains.kotlin.psi.KtFile
135
import org.jetbrains.kotlin.psi.KtObjectDeclaration
146

@@ -47,13 +39,4 @@ object IconPackPsiParser {
4739
nested = nestedObjects,
4840
)
4941
}
50-
51-
@Deprecated("Use ktFile version instead")
52-
fun extractIconPack(path: Path, project: Project): IconPackInfo? {
53-
val ktFile = PsiManager.getInstance(project)
54-
.findFile(LightVirtualFile(path.name, KotlinFileType.INSTANCE, path.readText()))
55-
.safeAs<KtFile>() ?: return null
56-
57-
return parse(ktFile)
58-
}
5942
}

tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/editor/VirtualFile.kt

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

tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/editor/ui/VirtualFileImageVector.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@ import com.composegears.leviathan.compose.inject
1414
import com.intellij.openapi.application.readAction
1515
import com.intellij.openapi.vfs.VirtualFile
1616
import io.github.composegears.valkyrie.compose.core.rememberMutableState
17-
import io.github.composegears.valkyrie.editor.toKtFile
1817
import io.github.composegears.valkyrie.psi.imagevector.ImageVectorPsiParser
1918
import io.github.composegears.valkyrie.sdk.ir.core.IrImageVector
2019
import io.github.composegears.valkyrie.ui.di.DI
2120
import io.github.composegears.valkyrie.ui.foundation.components.previewer.ImageVectorPreviewPanel
2221
import io.github.composegears.valkyrie.ui.foundation.compositionlocal.LocalProject
22+
import io.github.composegears.valkyrie.util.extension.resolveKtFile
2323
import org.jetbrains.kotlin.psi.KtFile
2424

2525
@Composable
@@ -35,7 +35,7 @@ fun VirtualFileImageVector(
3535

3636
val ktFile by produceState<KtFile?>(null) {
3737
value = readAction {
38-
file.toKtFile(project.current)
38+
file.resolveKtFile(project.current)
3939
}
4040
}
4141

tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/platform/picker/FilePicker.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import kotlinx.coroutines.Dispatchers
1717
import kotlinx.coroutines.withContext
1818

1919
@Composable
20-
fun rememberKtFilePicker(): Picker<Path?> {
20+
fun rememberKtPathPicker(): Picker<Path?> {
2121
if (LocalInspectionMode.current) return StubFilePicker
2222

2323
val project = LocalProject.current
@@ -31,7 +31,7 @@ fun rememberKtFilePicker(): Picker<Path?> {
3131
}
3232

3333
@Composable
34-
fun rememberFilePicker(): Picker<Path?> {
34+
fun rememberSvgXmlPathPicker(): Picker<Path?> {
3535
if (LocalInspectionMode.current) return StubFilePicker
3636

3737
val project = LocalProject.current

tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/mode/iconpack/existingpack/ui/foundation/ChooseExistingPackFile.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import io.github.composegears.valkyrie.ui.foundation.TextWithIcon
2121
import io.github.composegears.valkyrie.ui.foundation.compositionlocal.LocalProject
2222
import io.github.composegears.valkyrie.ui.foundation.icons.KotlinLogo
2323
import io.github.composegears.valkyrie.ui.foundation.theme.PreviewTheme
24-
import io.github.composegears.valkyrie.ui.platform.picker.rememberKtFilePicker
24+
import io.github.composegears.valkyrie.ui.platform.picker.rememberKtPathPicker
2525
import io.github.composegears.valkyrie.ui.platform.rememberFileDragAndDropHandler
2626
import io.github.composegears.valkyrie.ui.screen.mode.iconpack.existingpack.ui.model.ExistingPackAction
2727
import kotlin.io.path.isRegularFile
@@ -49,7 +49,7 @@ fun ChooseExistingPackFile(
4949
val isDragging by rememberMutableState(dragAndDropHandler.isDragging) { dragAndDropHandler.isDragging }
5050

5151
val scope = rememberCoroutineScope()
52-
val ktFilePicker = rememberKtFilePicker()
52+
val ktPathPicker = rememberKtPathPicker()
5353

5454
Column(modifier = modifier) {
5555
DragAndDropBox(
@@ -59,7 +59,7 @@ fun ChooseExistingPackFile(
5959
isDragging = isDragging,
6060
onChoose = {
6161
scope.launch {
62-
val path = ktFilePicker.launch()
62+
val path = ktPathPicker.launch()
6363

6464
if (path != null) {
6565
onAction(

tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/mode/iconpack/existingpack/ui/viewmodel/ExistingPackViewModel.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import io.github.composegears.valkyrie.ui.screen.mode.iconpack.existingpack.ui.m
3030
import io.github.composegears.valkyrie.ui.screen.mode.iconpack.existingpack.ui.model.ExistingPackModeState
3131
import io.github.composegears.valkyrie.ui.screen.mode.iconpack.existingpack.ui.model.ExistingPackModeState.ChooserState
3232
import io.github.composegears.valkyrie.ui.screen.mode.iconpack.existingpack.ui.model.ExistingPackModeState.ExistingPackEditState
33+
import io.github.composegears.valkyrie.util.extension.resolveKtFile
3334
import java.nio.file.Path
3435
import kotlin.io.path.absolutePathString
3536
import kotlinx.coroutines.flow.MutableSharedFlow
@@ -84,8 +85,9 @@ class ExistingPackViewModel : ViewModel() {
8485
}
8586
}
8687

87-
private fun onChooseFile(path: Path, project: Project) {
88-
val iconPackInfo = IconPackPsiParser.extractIconPack(path, project) ?: return
88+
private fun onChooseFile(path: Path, project: Project) = viewModelScope.launch {
89+
val ktFile = path.resolveKtFile(project) ?: return@launch
90+
val iconPackInfo = IconPackPsiParser.parse(ktFile) ?: return@launch
8991

9092
val inputFieldState = iconPackInfo.toInputFieldState()
9193
inputHandler.updateState(inputFieldState)

tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/mode/imagevectortoxml/conversion/ImageVectorToXmlViewModel.kt

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,23 +7,20 @@ import com.composegears.tiamat.navigation.asStateFlow
77
import com.composegears.tiamat.navigation.recordOf
88
import com.intellij.openapi.application.readAction
99
import com.intellij.openapi.project.Project
10-
import com.intellij.openapi.vfs.VfsUtil
11-
import com.intellij.psi.PsiFileFactory
12-
import io.github.composegears.valkyrie.editor.toKtFile
1310
import io.github.composegears.valkyrie.psi.imagevector.ImageVectorPsiParser
14-
import io.github.composegears.valkyrie.sdk.core.extensions.safeAs
1511
import io.github.composegears.valkyrie.sdk.ir.xml.toVectorXmlString
1612
import io.github.composegears.valkyrie.ui.screen.mode.imagevectortoxml.conversion.model.ImageVectorSource
1713
import io.github.composegears.valkyrie.ui.screen.mode.imagevectortoxml.conversion.model.ImageVectorToXmlParams
1814
import io.github.composegears.valkyrie.ui.screen.mode.imagevectortoxml.conversion.model.ImageVectorToXmlState
1915
import io.github.composegears.valkyrie.ui.screen.mode.imagevectortoxml.conversion.model.XmlContent
16+
import io.github.composegears.valkyrie.util.extension.PsiKtFileFactory
17+
import io.github.composegears.valkyrie.util.extension.resolveKtFile
2018
import java.nio.file.Path
2119
import kotlinx.coroutines.Dispatchers
2220
import kotlinx.coroutines.flow.MutableSharedFlow
2321
import kotlinx.coroutines.flow.asSharedFlow
2422
import kotlinx.coroutines.launch
2523
import kotlinx.coroutines.withContext
26-
import org.jetbrains.kotlin.idea.KotlinFileType
2724
import org.jetbrains.kotlin.psi.KtFile
2825

2926
class ImageVectorToXmlViewModel(
@@ -49,10 +46,7 @@ class ImageVectorToXmlViewModel(
4946
}
5047

5148
private fun convertFromPath(path: Path) = viewModelScope.launch(Dispatchers.IO) {
52-
val ktFile = readAction {
53-
val virtualFile = VfsUtil.findFile(path, true)
54-
virtualFile?.toKtFile(project)
55-
}
49+
val ktFile = path.resolveKtFile(project)
5650

5751
if (ktFile == null) {
5852
_events.emit("Failed to read Kotlin file")
@@ -72,13 +66,11 @@ class ImageVectorToXmlViewModel(
7266
}
7367

7468
private fun convertFromText(kotlinCode: String) = viewModelScope.launch(Dispatchers.IO) {
75-
val ktFile = withContext(Dispatchers.Default) {
76-
readAction {
77-
PsiFileFactory.getInstance(project)
78-
.createFileFromText("ImageVector.kt", KotlinFileType.INSTANCE, kotlinCode)
79-
.safeAs<KtFile>()
80-
}
81-
}
69+
val ktFile = PsiKtFileFactory.createFromText(
70+
project = project,
71+
name = "ImageVector.kt",
72+
text = kotlinCode,
73+
)
8274

8375
if (ktFile == null) {
8476
_events.emit("Failed to parse Kotlin code")

tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/mode/imagevectortoxml/picker/ImageVectorPickerScreen.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import com.composegears.tiamat.compose.navController
88
import com.composegears.tiamat.compose.navDestination
99
import com.composegears.tiamat.compose.navigate
1010
import io.github.composegears.valkyrie.ui.foundation.picker.GenericPickerScreen
11-
import io.github.composegears.valkyrie.ui.platform.picker.rememberKtFilePicker
11+
import io.github.composegears.valkyrie.ui.platform.picker.rememberKtPathPicker
1212
import io.github.composegears.valkyrie.ui.screen.mode.imagevectortoxml.conversion.ImageVectorToXmlScreen
1313
import io.github.composegears.valkyrie.ui.screen.mode.imagevectortoxml.picker.model.ImageVectorPickerAction
1414
import io.github.composegears.valkyrie.ui.screen.mode.imagevectortoxml.picker.model.ImageVectorPickerEvent
@@ -19,7 +19,7 @@ import kotlinx.coroutines.launch
1919
val ImageVectorPickerScreen by navDestination {
2020
val navController = navController()
2121
val coroutineScope = rememberCoroutineScope()
22-
val filePicker = rememberKtFilePicker()
22+
val filePicker = rememberKtPathPicker()
2323

2424
val viewModel = viewModel { ImageVectorPickerViewModel() }
2525

0 commit comments

Comments
 (0)