Skip to content

Commit c5fb4b7

Browse files
wip
1 parent 5fcae42 commit c5fb4b7

File tree

3 files changed

+92
-76
lines changed

3 files changed

+92
-76
lines changed

Library/lib/src/commonMain/kotlin/ui/DebuggerScreen.kt

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
package ui
22

33
import androidx.compose.foundation.layout.fillMaxSize
4-
import androidx.compose.foundation.layout.padding
5-
import androidx.compose.material3.*
4+
import androidx.compose.material3.ExperimentalMaterial3Api
5+
import androidx.compose.material3.MaterialTheme
6+
import androidx.compose.material3.darkColorScheme
67
import androidx.compose.runtime.Composable
78
import androidx.compose.ui.Modifier
89
import androidx.navigation.NavType
@@ -55,7 +56,10 @@ fun MainNavigation(
5556
) {
5657
val id = it.savedStateHandle.get<String>("id") ?: return@composable
5758
RequestPane(
58-
id = id
59+
id = id,
60+
onBack = {
61+
controller.popBackStack()
62+
}
5963
)
6064
}
6165
}

Library/lib/src/commonMain/kotlin/ui/component/RequestItem.kt

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ fun ErrorItem(
4242
contentPadding: PaddingValues = PaddingValues(horizontal = 16.dp, vertical = 16.dp),
4343
onDelete: (() -> Unit)? = null,
4444
onShare: (() -> Unit)? = null,
45-
onClick: () -> Unit,
45+
onClick: (() -> Unit)? = null,
4646
) {
4747
CompositionLocalProvider(LocalContentColor provides Color(colorError)) {
4848
StatusItem(
@@ -84,7 +84,7 @@ fun ExecutingItem(
8484
contentPadding: PaddingValues = PaddingValues(horizontal = 16.dp, vertical = 16.dp),
8585
onDelete: (() -> Unit)? = null,
8686
onShare: (() -> Unit)? = null,
87-
onClick: () -> Unit,
87+
onClick: (() -> Unit)? = null,
8888
) {
8989
CompositionLocalProvider(LocalContentColor provides Color.White) {
9090
StatusItem(
@@ -126,7 +126,7 @@ fun SpoofedItem(
126126
contentPadding: PaddingValues = PaddingValues(horizontal = 16.dp, vertical = 16.dp),
127127
onDelete: (() -> Unit)? = null,
128128
onShare: (() -> Unit)? = null,
129-
onClick: () -> Unit,
129+
onClick: (() -> Unit)? = null,
130130
) {
131131
CompositionLocalProvider(LocalContentColor provides Color(colorSpoofed)) {
132132
StatusItem(
@@ -168,7 +168,7 @@ fun SuccessItem(
168168
contentPadding: PaddingValues = PaddingValues(horizontal = 16.dp, vertical = 16.dp),
169169
onDelete: (() -> Unit)? = null,
170170
onShare: (() -> Unit)? = null,
171-
onClick: () -> Unit,
171+
onClick: (() -> Unit)? = null,
172172
) {
173173
CompositionLocalProvider(LocalContentColor provides Color(colorSuccess)) {
174174
StatusItem(
@@ -192,16 +192,20 @@ fun StatusItem(
192192
status: String,
193193
url: String,
194194
method: String,
195-
onClick: () -> Unit,
195+
onClick: (() -> Unit)? = null,
196196
onDelete: (() -> Unit)? = null,
197197
onShare: (() -> Unit)? = null,
198198
contentPadding: PaddingValues,
199199
) {
200200
Column(
201201
modifier = modifier
202-
.clickable {
203-
onClick.invoke()
204-
},
202+
.then(
203+
other = if (onClick != null)
204+
Modifier.clickable {
205+
onClick.invoke()
206+
}
207+
else Modifier
208+
),
205209
) {
206210
Spacer(modifier.height(contentPadding.calculateTopPadding()))
207211
Row(

Library/lib/src/commonMain/kotlin/ui/pane/RequestPane.kt

Lines changed: 73 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -11,101 +11,109 @@ import androidx.compose.ui.unit.dp
1111
import androidx.lifecycle.compose.collectAsStateWithLifecycle
1212
import data.HttpRequestState
1313
import data.SnifferDB
14+
import io.github.stefanusayudha.spoof.lib.generated.resources.Res
15+
import io.github.stefanusayudha.spoof.lib.generated.resources.ic_arrow_back_24
16+
import org.jetbrains.compose.resources.painterResource
1417
import ui.component.*
1518

1619
@OptIn(ExperimentalMaterial3Api::class)
1720
@Composable
1821
fun RequestPane(
19-
modifier: Modifier = Modifier,
20-
id: String
22+
id: String,
23+
onBack: () -> Unit
2124
) {
2225
val record by SnifferDB.httpRequests.collectAsStateWithLifecycle(emptyList())
2326
val transaction by rememberUpdatedState(record.firstOrNull { it.id == id } as? HttpRequestState ?: return)
2427

2528
Scaffold(
2629
topBar = {
27-
Column(
28-
modifier = Modifier.statusBarsPadding()
29-
) {
30-
when (val tr = transaction) {
31-
is HttpRequestState.Error -> {
32-
ErrorItem(
33-
modifier = Modifier.fillMaxWidth(),
34-
contentPadding = PaddingValues(top = 16.dp, start = 16.dp, end = 16.dp),
35-
item = ErrorItemDisplay.from(tr),
36-
onShare = {
37-
38-
},
39-
onDelete = {
30+
TopAppBar(
31+
navigationIcon = {
32+
IconButton(
33+
onClick = onBack
34+
) {
35+
Icon(
36+
painter = painterResource(Res.drawable.ic_arrow_back_24),
37+
contentDescription = null
38+
)
39+
}
40+
},
41+
title = {
42+
Text("Transaction")
43+
}
44+
)
45+
},
46+
bottomBar = {
47+
Box(modifier = Modifier.navigationBarsPadding())
48+
}
49+
) {
50+
Column (
51+
modifier = Modifier
52+
.fillMaxSize()
53+
.padding(it)
54+
) {
55+
when (val tr = transaction) {
56+
is HttpRequestState.Error -> {
57+
ErrorItem(
58+
modifier = Modifier.fillMaxWidth(),
59+
contentPadding = PaddingValues(start = 16.dp, end = 16.dp),
60+
item = ErrorItemDisplay.from(tr),
61+
onShare = {
4062

41-
}
42-
) {
63+
},
64+
onDelete = {
4365

4466
}
45-
}
46-
47-
is HttpRequestState.Executing -> {
48-
ExecutingItem(
49-
modifier = Modifier.fillMaxWidth(),
50-
contentPadding = PaddingValues(top = 16.dp, start = 16.dp, end = 16.dp),
51-
item = ExecutingItemDisplay.from(tr),
52-
onShare = {
67+
)
68+
}
5369

54-
},
55-
onDelete = {
70+
is HttpRequestState.Executing -> {
71+
ExecutingItem(
72+
modifier = Modifier.fillMaxWidth(),
73+
contentPadding = PaddingValues(start = 16.dp, end = 16.dp),
74+
item = ExecutingItemDisplay.from(tr),
75+
onShare = {
5676

57-
}
58-
) {
77+
},
78+
onDelete = {
5979

6080
}
61-
}
62-
63-
is HttpRequestState.Spoofed -> {
64-
SpoofedItem(
65-
modifier = Modifier.fillMaxWidth(),
66-
contentPadding = PaddingValues(top = 16.dp, start = 16.dp, end = 16.dp),
67-
item = SpoofedItemDisplay.from(tr),
68-
onShare = {
81+
)
82+
}
6983

70-
},
71-
onDelete = {
84+
is HttpRequestState.Spoofed -> {
85+
SpoofedItem(
86+
modifier = Modifier.fillMaxWidth(),
87+
contentPadding = PaddingValues(start = 16.dp, end = 16.dp),
88+
item = SpoofedItemDisplay.from(tr),
89+
onShare = {
7290

73-
}
74-
) {
91+
},
92+
onDelete = {
7593

7694
}
77-
}
95+
) {
7896

79-
is HttpRequestState.Success -> {
80-
SuccessItem(
81-
modifier = Modifier.fillMaxWidth(),
82-
contentPadding = PaddingValues(top = 16.dp, start = 16.dp, end = 16.dp),
83-
item = SuccessItemDisplay.from(tr),
84-
onShare = {
97+
}
98+
}
8599

86-
},
87-
onDelete = {
100+
is HttpRequestState.Success -> {
101+
SuccessItem(
102+
modifier = Modifier.fillMaxWidth(),
103+
contentPadding = PaddingValues(start = 16.dp, end = 16.dp),
104+
item = SuccessItemDisplay.from(tr),
105+
onShare = {
88106

89-
}
90-
) {
107+
},
108+
onDelete = {
91109

92110
}
93-
}
111+
)
94112
}
95113
}
96-
},
97-
bottomBar = {
98-
Box(modifier = Modifier.navigationBarsPadding())
99-
}
100-
) {
101-
Surface(
102-
modifier = Modifier
103-
.fillMaxSize()
104-
.padding(it)
105-
) {
106114
LazyColumn(
107-
modifier = Modifier
108-
.padding(horizontal = 16.dp),
115+
modifier = Modifier,
116+
contentPadding = PaddingValues(horizontal = 16.dp)
109117
) {
110118
stickyHeader {
111119
Surface {

0 commit comments

Comments
 (0)