Skip to content

Commit 7d34d96

Browse files
committed
feature: servers plugin redesign
1 parent 8f3dee4 commit 7d34d96

7 files changed

Lines changed: 382 additions & 209 deletions

File tree

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
package com.redmadrobot.debug.uikit.components
2+
3+
import androidx.compose.foundation.background
4+
import androidx.compose.foundation.layout.Box
5+
import androidx.compose.foundation.layout.Column
6+
import androidx.compose.foundation.layout.ColumnScope
7+
import androidx.compose.foundation.layout.fillMaxWidth
8+
import androidx.compose.foundation.layout.padding
9+
import androidx.compose.foundation.layout.size
10+
import androidx.compose.foundation.shape.RoundedCornerShape
11+
import androidx.compose.material3.ExperimentalMaterial3Api
12+
import androidx.compose.material3.ModalBottomSheet
13+
import androidx.compose.material3.Text
14+
import androidx.compose.material3.rememberModalBottomSheetState
15+
import androidx.compose.runtime.Composable
16+
import androidx.compose.ui.Modifier
17+
import androidx.compose.ui.unit.dp
18+
import com.redmadrobot.debug.uikit.theme.DebugPanelTheme
19+
import com.redmadrobot.debug.uikit.theme.SystemBarsColors
20+
import com.redmadrobot.debug.uikit.theme.SystemBarsEffect
21+
22+
@OptIn(ExperimentalMaterial3Api::class)
23+
@Composable
24+
public fun PanelBottomSheet(
25+
title: String,
26+
onDismiss: () -> Unit,
27+
modifier: Modifier = Modifier,
28+
content: @Composable ColumnScope.() -> Unit,
29+
) {
30+
val sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true)
31+
32+
ModalBottomSheet(
33+
onDismissRequest = onDismiss,
34+
sheetState = sheetState,
35+
shape = RoundedCornerShape(topStart = 20.dp, topEnd = 20.dp),
36+
containerColor = DebugPanelTheme.colors.surface.secondary,
37+
modifier = modifier,
38+
dragHandle = { SheetHandle() },
39+
) {
40+
SystemBarsEffect(
41+
systemBarsColors = SystemBarsColors(
42+
statusBarColor = DebugPanelTheme.colors.background.primary,
43+
navigationBarColor = DebugPanelTheme.colors.surface.secondary,
44+
),
45+
)
46+
47+
Column(
48+
modifier = Modifier
49+
.fillMaxWidth()
50+
.padding(horizontal = 20.dp),
51+
) {
52+
Text(
53+
text = title,
54+
style = DebugPanelTheme.typography.titleLarge,
55+
color = DebugPanelTheme.colors.content.primary,
56+
modifier = Modifier.padding(bottom = 20.dp),
57+
)
58+
content()
59+
}
60+
}
61+
}
62+
63+
@Composable
64+
private fun SheetHandle(modifier: Modifier = Modifier) {
65+
Box(
66+
modifier = modifier
67+
.padding(top = 12.dp, bottom = 20.dp)
68+
.size(width = 32.dp, height = 4.dp)
69+
.background(
70+
color = DebugPanelTheme.colors.stroke.secondary,
71+
shape = RoundedCornerShape(2.dp),
72+
),
73+
)
74+
}

plugins/plugin-servers/src/main/kotlin/com/redmadrobot/debug/plugin/servers/ServersPluginContainer.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,10 @@ internal class ServersPluginContainer(
2020
)
2121
}
2222

23-
fun createServersViewModel(): ServersViewModel {
23+
fun createServersViewModel(isEditMode: Boolean): ServersViewModel {
2424
return ServersViewModel(
25-
serversRepository,
25+
isEditMode = isEditMode,
26+
serversRepository = serversRepository,
2627
)
2728
}
2829
}

plugins/plugin-servers/src/main/kotlin/com/redmadrobot/debug/plugin/servers/data/DebugServerRepository.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,10 @@ internal class DebugServerRepository(
2323

2424
suspend fun getServers(): List<DebugServer> = serversDataStore.getAll()
2525

26-
suspend fun removeServer(server: DebugServer) = serversDataStore.remove(server)
26+
suspend fun removeServer(server: DebugServer) {
27+
if (server == getSelectedServer()) saveSelectedServer(getDefault())
28+
serversDataStore.remove(server)
29+
}
2730

2831
suspend fun updateServer(oldServer: DebugServer, newServer: DebugServer) =
2932
serversDataStore.update(oldServer, newServer)

0 commit comments

Comments
 (0)