Skip to content

Commit 2dd9657

Browse files
committed
[#100] Add support for dark theme and minor code improvements
1 parent 76fa7b8 commit 2dd9657

File tree

4 files changed

+41
-45
lines changed

4 files changed

+41
-45
lines changed

app/src/main/java/co/nimblehq/compose/crypto/ui/common/AppDialogPopUp.kt

+28-36
Original file line numberDiff line numberDiff line change
@@ -1,59 +1,51 @@
11
package co.nimblehq.compose.crypto.ui.common
22

3-
import androidx.annotation.StringRes
4-
import androidx.compose.foundation.background
53
import androidx.compose.foundation.layout.*
64
import androidx.compose.material.*
75
import androidx.compose.runtime.Composable
6+
import androidx.compose.ui.Alignment
87
import androidx.compose.ui.Modifier
9-
import androidx.compose.ui.graphics.Color
10-
import androidx.compose.ui.res.stringResource
118
import androidx.compose.ui.tooling.preview.Preview
129
import androidx.compose.ui.window.Dialog
13-
import co.nimblehq.compose.crypto.R
1410
import co.nimblehq.compose.crypto.ui.theme.*
1511

1612
@Composable
1713
fun AppDialogPopUp(
1814
onDismiss: () -> Unit,
1915
onClick: () -> Unit,
20-
@StringRes title: Int,
21-
@StringRes message: Int,
22-
@StringRes actionText: Int,
16+
title: String,
17+
message: String,
18+
actionText: String,
2319
) {
2420
Dialog(
2521
onDismissRequest = onDismiss
2622
) {
27-
Column(
28-
modifier = Modifier
29-
.background(Color.White)
30-
.width(DialogWidth)
31-
) {
32-
Text(
33-
text = stringResource(id = title),
34-
style = AppTheme.typography.h6,
35-
color = Color.Black,
36-
modifier = Modifier.padding(top = Dp16, start = Dp16, end = Dp16)
37-
)
38-
Text(
39-
text = stringResource(id = message),
40-
style = AppTheme.typography.body1,
41-
color = Color.Black,
42-
modifier = Modifier.padding(Dp16)
43-
)
44-
Row(
45-
horizontalArrangement = Arrangement.End,
46-
modifier = Modifier
47-
.fillMaxWidth()
48-
.padding(bottom = Dp16, end = Dp8)
23+
Surface {
24+
Column(
25+
modifier = Modifier.width(DialogWidth)
4926
) {
27+
Text(
28+
text = title,
29+
style = AppTheme.typography.h6,
30+
color = AppTheme.colors.text,
31+
modifier = Modifier.padding(top = Dp16, start = Dp16, end = Dp16)
32+
)
33+
Text(
34+
text = message,
35+
style = AppTheme.typography.body1,
36+
color = AppTheme.colors.text,
37+
modifier = Modifier.padding(Dp16)
38+
)
5039
TextButton(
51-
onClick = onClick
40+
onClick = onClick,
41+
modifier = Modifier
42+
.align(Alignment.End)
43+
.padding(bottom = Dp16, end = Dp8)
5244
) {
5345
Text(
54-
text = stringResource(id = actionText),
46+
text = actionText,
5547
style = AppTheme.styles.semiBold16,
56-
color = Color.Blue,
48+
color = AppTheme.colors.dialogText,
5749
)
5850
}
5951
}
@@ -69,9 +61,9 @@ fun AppDialogPopUpPreview() {
6961
AppDialogPopUp(
7062
onDismiss = { /*TODO*/ },
7163
onClick = { /*TODO*/ },
72-
message = R.string.no_internet_message,
73-
actionText = android.R.string.ok,
74-
title = R.string.no_internet_title
64+
message = "No internet connection was found. Please check your internet connection and try again.",
65+
actionText = "OK",
66+
title = "Oops!"
7567
)
7668
}
7769
}

app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/HomeScreen.kt

+4-4
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ fun HomeScreen(
5858
}
5959

6060
// TODO remove in integration ticket
61-
val isNetworkConnected by viewModel.hasConnection.collectAsState()
61+
val isNetworkConnected by viewModel.isNetworkConnected.collectAsState()
6262

6363
val showMyCoinsLoading: IsLoading by viewModel.output.showMyCoinsLoading.collectAsState()
6464
val showTrendingCoinsLoading: LoadingState by viewModel.output.showTrendingCoinsLoading.collectAsState()
@@ -96,9 +96,9 @@ fun HomeScreen(
9696
AppDialogPopUp(
9797
onDismiss = { /*TODO*/ },
9898
onClick = { /*TODO*/ },
99-
message = R.string.no_internet_message,
100-
actionText = android.R.string.ok,
101-
title = R.string.no_internet_title
99+
message = stringResource(id = R.string.no_internet_message),
100+
actionText = stringResource(id = android.R.string.ok),
101+
title = stringResource(id = R.string.no_internet_title)
102102
)
103103
}
104104
}

app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/HomeViewModel.kt

+3-3
Original file line numberDiff line numberDiff line change
@@ -85,16 +85,16 @@ class HomeViewModel @Inject constructor(
8585
private var trendingCoinsPage = MY_COINS_INITIAL_PAGE
8686

8787
// TODO remove in integration ticket
88-
private val _hasConnection = MutableStateFlow<Boolean?>(null)
89-
val hasConnection: StateFlow<Boolean?> = _hasConnection
88+
private val _isNetworkConnected = MutableStateFlow<Boolean?>(null)
89+
val isNetworkConnected: StateFlow<Boolean?> = _isNetworkConnected
9090

9191
init {
9292
loadData()
9393
// TODO remove in integration ticket
9494
execute {
9595
isNetworkConnectedUseCase()
9696
.collect {
97-
_hasConnection.emit(it)
97+
_isNetworkConnected.emit(it)
9898
}
9999
}
100100
}

app/src/main/java/co/nimblehq/compose/crypto/ui/theme/AppColors.kt

+6-2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package co.nimblehq.compose.crypto.ui.theme
33
import androidx.compose.material.*
44
import androidx.compose.runtime.staticCompositionLocalOf
55
import androidx.compose.ui.graphics.Color
6+
import androidx.compose.ui.graphics.Color.Companion.Blue
67

78
/**
89
* Extend final [Colors] class to provide more custom app colors.
@@ -35,6 +36,7 @@ data class AppColors(
3536
val pullRefreshContent: Color = CaribbeanGreen,
3637

3738
val text: Color,
39+
val dialogText: Color,
3840
val textSectionLink: Color = TiffanyBlue,
3941
)
4042

@@ -47,7 +49,8 @@ internal val LightColorPalette = AppColors(
4749
coinItemBackground = White,
4850
coinNameText = SonicSilver,
4951
pullRefreshBackground = White,
50-
text = DarkJungleGreen
52+
text = DarkJungleGreen,
53+
dialogText = Blue
5154
)
5255

5356
internal val DarkColorPalette = AppColors(
@@ -59,7 +62,8 @@ internal val DarkColorPalette = AppColors(
5962
coinItemBackground = QuartzAlpha20,
6063
coinNameText = LightSilver,
6164
pullRefreshBackground = DarkJungleGreen,
62-
text = White
65+
text = White,
66+
dialogText = White
6367
)
6468

6569
internal val LocalColors = staticCompositionLocalOf { LightColorPalette }

0 commit comments

Comments
 (0)