Skip to content

Commit 97f8e77

Browse files
committed
create upload button for downloaded json/txt files
1 parent e964c42 commit 97f8e77

File tree

4 files changed

+89
-26
lines changed

4 files changed

+89
-26
lines changed

gradle/libs.versions.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ timber = "5.0.1"
9191
truth = "1.4.4"
9292
turbine = "1.0.0"
9393
vanniktech-publish = "0.32.0"
94+
uiGraphicsAndroidVersion = "1.8.2"
9495

9596
[plugins]
9697

@@ -268,5 +269,6 @@ truth = { module = "com.google.truth:truth", version.ref = "truth" }
268269
turbine = { module = "app.cash.turbine:turbine", version.ref = "turbine" }
269270

270271
vanniktech-publish = { module = "com.vanniktech:gradle-maven-publish-plugin", version.ref = "vanniktech-publish" }
272+
androidx-ui-graphics-android = { group = "androidx.compose.ui", name = "ui-graphics-android", version.ref = "uiGraphicsAndroidVersion" }
271273

272274
[bundles]

workflow-trace-viewer/src/jvmMain/kotlin/com/squareup/workflow1/traceviewer/App.kt

Lines changed: 34 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,52 @@
11
package com.squareup.workflow1.traceviewer
22

3+
import androidx.compose.foundation.background
4+
import androidx.compose.foundation.layout.Box
5+
import androidx.compose.foundation.layout.fillMaxSize
6+
import androidx.compose.foundation.layout.padding
7+
import androidx.compose.foundation.layout.size
8+
import androidx.compose.foundation.shape.CircleShape
9+
import androidx.compose.material.Button
10+
import androidx.compose.material.ButtonDefaults.buttonColors
311
import androidx.compose.material.Text
412
import androidx.compose.runtime.Composable
13+
import androidx.compose.runtime.LaunchedEffect
514
import androidx.compose.runtime.mutableStateOf
615
import androidx.compose.runtime.remember
7-
import com.squareup.workflow1.traceviewer.FileReader.fetchFile
16+
import androidx.compose.ui.Alignment
17+
import androidx.compose.ui.graphics.Color
18+
import androidx.compose.ui.unit.dp
19+
import androidx.compose.ui.Modifier
20+
import androidx.compose.ui.unit.sp
821
import io.github.vinceglb.filekit.PlatformFile
22+
import io.github.vinceglb.filekit.dialogs.FileKitType
23+
import io.github.vinceglb.filekit.dialogs.compose.rememberFilePickerLauncher
24+
import io.github.vinceglb.filekit.readString
925

1026
@Composable
11-
fun App() {
12-
val jsonString = fetchFile()
13-
val root = jsonString?.let { FetchRoot(it) }
27+
public fun App() {
28+
Box {
29+
val selectedFile = remember { mutableStateOf<PlatformFile?>(null)}
1430

15-
var selectedFile = remember { mutableStateOf<PlatformFile?>(null)}
31+
if (selectedFile.value != null){
32+
SandboxBackground { WorkflowContent(selectedFile.value) }
33+
}
1634

17-
// UploadFile { selectedFile.value = it }
35+
UploadFile{ selectedFile.value = it}
36+
}
37+
}
38+
39+
@Composable
40+
private fun WorkflowContent(file: PlatformFile?) {
41+
val jsonString = remember { mutableStateOf<String?>(null) }
42+
LaunchedEffect(file){
43+
jsonString.value = file?.readString()
44+
}
45+
val root = jsonString.value?.let { FetchRoot(it) }
1846

1947
if (root != null) {
2048
DrawWorkflowTree(root)
2149
} else {
2250
Text("Empty data or failed to parse data") // TODO: proper handling of error
2351
}
2452
}
25-
26-
27-
object FileReader {
28-
fun fetchFile() : String?{
29-
return javaClass.getResource("/workflow-simple.json")?.readText()
30-
}
31-
}
32-
33-
//
34-
// @Composable
35-
// private fun UploadFile(onFileSelected: (PlatformFile?) -> Unit) {
36-
// val launcher = rememberFilePickerLauncher(
37-
// type = FileKitType.Custom(listOf("json","txt")),
38-
// title = "Select Workflow Trace File"
39-
// ) {
40-
// onFileSelected(it)
41-
// }
42-
// }

workflow-trace-viewer/src/jvmMain/kotlin/com/squareup/workflow1/traceviewer/Main.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@ package com.squareup.workflow1.traceviewer
33
import androidx.compose.ui.window.singleWindowApplication
44

55
fun main() {
6-
// FileKit.init(appId = "com.squareup.workflow1.traceviewer")
76
singleWindowApplication(title = "Workflow Trace Viewer") {
8-
SandboxBackground { App() }
7+
App()
98
}
109
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package com.squareup.workflow1.traceviewer
2+
3+
import androidx.compose.foundation.background
4+
import androidx.compose.foundation.layout.Box
5+
import androidx.compose.foundation.layout.fillMaxSize
6+
import androidx.compose.foundation.layout.padding
7+
import androidx.compose.foundation.layout.size
8+
import androidx.compose.foundation.shape.CircleShape
9+
import androidx.compose.material.Button
10+
import androidx.compose.material.ButtonDefaults.buttonColors
11+
import androidx.compose.material.Text
12+
import androidx.compose.runtime.Composable
13+
import androidx.compose.runtime.LaunchedEffect
14+
import androidx.compose.runtime.mutableStateOf
15+
import androidx.compose.runtime.remember
16+
import androidx.compose.ui.Alignment
17+
import androidx.compose.ui.graphics.Color
18+
import androidx.compose.ui.unit.dp
19+
import androidx.compose.ui.Modifier
20+
import androidx.compose.ui.unit.sp
21+
import io.github.vinceglb.filekit.PlatformFile
22+
import io.github.vinceglb.filekit.dialogs.FileKitType
23+
import io.github.vinceglb.filekit.dialogs.compose.rememberFilePickerLauncher
24+
25+
@Composable
26+
public fun UploadFile(onFileSelected: (PlatformFile?) -> Unit) {
27+
Box (modifier = Modifier
28+
.padding(16.dp)
29+
.fillMaxSize()
30+
){
31+
val launcher = rememberFilePickerLauncher(
32+
type = FileKitType.File(listOf("json","txt")),
33+
title = "Select Workflow Trace File"
34+
) {
35+
onFileSelected(it)
36+
}
37+
Button(
38+
onClick = { launcher.launch() },
39+
modifier = Modifier
40+
.align(Alignment.BottomEnd),
41+
shape = CircleShape,
42+
colors = buttonColors(Color.Black)
43+
) {
44+
Text(
45+
text = "+",
46+
color = Color.White,
47+
fontSize = 24.sp,
48+
fontWeight = androidx.compose.ui.text.font.FontWeight.Bold
49+
)
50+
}
51+
}
52+
}

0 commit comments

Comments
 (0)