Skip to content

Commit 5ce3abe

Browse files
authored
Merge pull request #325 from code-payments/feat/x-connect-success-snackbar
feat: convert X connection success to a snackbar
2 parents 59d2161 + d356d26 commit 5ce3abe

7 files changed

Lines changed: 264 additions & 230 deletions

File tree

app/src/main/java/com/getcode/ui/components/Scaffold.kt renamed to app/src/main/java/com/getcode/ui/components/CodeScaffold.kt

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import androidx.compose.foundation.layout.ColumnScope
44
import androidx.compose.foundation.layout.PaddingValues
55
import androidx.compose.material.DrawerDefaults
66
import androidx.compose.material.FabPosition
7-
import androidx.compose.material.MaterialTheme
87
import androidx.compose.material.Scaffold
98
import androidx.compose.material.ScaffoldState
109
import androidx.compose.material.SnackbarHost
@@ -18,18 +17,22 @@ import androidx.compose.ui.unit.Dp
1817
import com.getcode.theme.CodeTheme
1918
import com.getcode.theme.extraLarge
2019

21-
2220
@Composable
2321
fun CodeScaffold(
2422
modifier: Modifier = Modifier,
2523
scaffoldState: ScaffoldState = rememberScaffoldState(),
26-
topBar: @Composable (() -> Unit) = {},
27-
bottomBar: @Composable (() -> Unit) = {},
28-
snackbarHost: @Composable (SnackbarHostState) -> Unit = { SnackbarHost(it) },
29-
floatingActionButton: @Composable (() -> Unit) = {},
24+
topBar: @Composable () -> Unit = {},
25+
bottomBar: @Composable () -> Unit = {},
26+
snackbarHost: @Composable (SnackbarHostState) -> Unit = {
27+
SnackbarHost(it) { data ->
28+
CodeSnackbar(snackbarData = data)
29+
}
30+
},
31+
floatingActionButton: @Composable () -> Unit = {},
3032
floatingActionButtonPosition: FabPosition = FabPosition.End,
3133
isFloatingActionButtonDocked: Boolean = false,
3234
drawerContent: @Composable (ColumnScope.() -> Unit)? = null,
35+
drawerGesturesEnabled: Boolean = true,
3336
drawerShape: Shape = CodeTheme.shapes.extraLarge,
3437
drawerElevation: Dp = DrawerDefaults.Elevation,
3538
drawerBackgroundColor: Color = CodeTheme.colors.background,
@@ -49,6 +52,7 @@ fun CodeScaffold(
4952
floatingActionButtonPosition = floatingActionButtonPosition,
5053
isFloatingActionButtonDocked = isFloatingActionButtonDocked,
5154
drawerContent = drawerContent,
55+
drawerGesturesEnabled = drawerGesturesEnabled,
5256
drawerShape = drawerShape,
5357
drawerElevation = drawerElevation,
5458
drawerBackgroundColor = drawerBackgroundColor,
@@ -58,4 +62,4 @@ fun CodeScaffold(
5862
contentColor = contentColor,
5963
content = content
6064
)
61-
}
65+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package com.getcode.ui.components
2+
3+
import androidx.compose.material.Snackbar
4+
import androidx.compose.material.SnackbarData
5+
import androidx.compose.runtime.Composable
6+
import androidx.compose.ui.Modifier
7+
import androidx.compose.ui.graphics.Color
8+
import androidx.compose.ui.graphics.Shape
9+
import androidx.compose.ui.unit.Dp
10+
import androidx.compose.ui.unit.dp
11+
import com.getcode.theme.BrandMuted
12+
import com.getcode.theme.CodeTheme
13+
import com.getcode.theme.green
14+
15+
@Composable
16+
fun CodeSnackbar(
17+
snackbarData: SnackbarData,
18+
modifier: Modifier = Modifier,
19+
actionOnNewLine: Boolean = false,
20+
shape: Shape = CodeTheme.shapes.small,
21+
backgroundColor: Color = BrandMuted,
22+
contentColor: Color = CodeTheme.colors.onBackground,
23+
actionColor: Color = green,
24+
elevation: Dp = 6.dp
25+
) {
26+
Snackbar(
27+
snackbarData = snackbarData,
28+
modifier = modifier,
29+
actionOnNewLine = actionOnNewLine,
30+
shape = shape,
31+
backgroundColor = backgroundColor,
32+
contentColor = contentColor,
33+
actionColor = actionColor,
34+
elevation = elevation
35+
)
36+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.getcode.ui.components
2+
3+
import androidx.compose.material.SnackbarDuration
4+
import androidx.compose.material.SnackbarHostState
5+
import androidx.compose.material.SnackbarResult
6+
7+
data class SnackData(
8+
val message: String,
9+
val actionLabel: String? = null,
10+
val duration: SnackbarDuration = SnackbarDuration.Short
11+
)
12+
13+
suspend fun SnackbarHostState.showSnackbar(data: SnackData): SnackbarResult {
14+
return showSnackbar(
15+
message = data.message,
16+
actionLabel = data.actionLabel,
17+
duration = data.duration
18+
)
19+
}

0 commit comments

Comments
 (0)