Skip to content

Commit e1e5711

Browse files
authored
Merge pull request #192 from synonymdev/feat/settings-about
Settings - About
2 parents 70e8dba + e1327ef commit e1e5711

File tree

6 files changed

+208
-114
lines changed

6 files changed

+208
-114
lines changed

app/src/main/java/to/bitkit/env/Env.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,4 +135,6 @@ internal object Env {
135135
const val BITKIT_TELEGRAM = "https://t.me/bitkitchat"
136136
const val BITKIT_GITHUB = "https://github.com/synonymdev"
137137
const val BITKIT_HELP_CENTER = "https://help.bitkit.to"
138+
139+
const val TERMS_OF_USE_URL = "https://bitkit.to/terms-of-use"
138140
}

app/src/main/java/to/bitkit/ui/ContentView.kt

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -769,7 +769,14 @@ private fun NavGraphBuilder.advancedSettings(navController: NavHostController) {
769769

770770
private fun NavGraphBuilder.aboutSettings(navController: NavHostController) {
771771
composableWithDefaultTransitions<Routes.AboutSettings> {
772-
AboutScreen(navController)
772+
AboutScreen(
773+
onBack = {
774+
navController.popBackStack()
775+
},
776+
onClose = {
777+
navController.navigateToHome()
778+
}
779+
)
773780
}
774781
}
775782

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
package to.bitkit.ui.components.settings
2+
3+
import android.content.Intent
4+
import androidx.compose.foundation.layout.Arrangement
5+
import androidx.compose.foundation.layout.FlowRow
6+
import androidx.compose.foundation.layout.fillMaxWidth
7+
import androidx.compose.foundation.layout.size
8+
import androidx.compose.material3.FloatingActionButton
9+
import androidx.compose.material3.Icon
10+
import androidx.compose.runtime.Composable
11+
import androidx.compose.ui.Modifier
12+
import androidx.compose.ui.platform.LocalContext
13+
import androidx.compose.ui.res.painterResource
14+
import androidx.compose.ui.unit.dp
15+
import androidx.core.net.toUri
16+
import to.bitkit.R
17+
import to.bitkit.env.Env
18+
import to.bitkit.ui.theme.Colors
19+
20+
@Composable
21+
fun Links(modifier: Modifier = Modifier) {
22+
val context = LocalContext.current
23+
24+
FlowRow(
25+
horizontalArrangement = Arrangement.SpaceBetween,
26+
modifier = modifier.fillMaxWidth()
27+
) {
28+
FloatingActionButton(
29+
onClick = {
30+
val intent = Intent(Intent.ACTION_VIEW, Env.BITKIT_WEBSITE.toUri())
31+
context.startActivity(intent)
32+
},
33+
containerColor = Colors.White16,
34+
modifier = Modifier.size(48.dp)
35+
) {
36+
Icon(
37+
painter = painterResource(R.drawable.ic_globe),
38+
contentDescription = null,
39+
tint = Colors.White
40+
)
41+
}
42+
FloatingActionButton(
43+
onClick = {
44+
val intent = Intent(Intent.ACTION_VIEW, Env.SYNONYM_MEDIUM.toUri())
45+
context.startActivity(intent)
46+
},
47+
containerColor = Colors.White16,
48+
modifier = Modifier.size(48.dp)
49+
) {
50+
Icon(
51+
painter = painterResource(R.drawable.ic_medium),
52+
contentDescription = null,
53+
tint = Colors.White
54+
)
55+
}
56+
FloatingActionButton(
57+
onClick = {
58+
val intent = Intent(Intent.ACTION_VIEW, Env.SYNONYM_X.toUri())
59+
context.startActivity(intent)
60+
},
61+
containerColor = Colors.White16,
62+
modifier = Modifier.size(48.dp)
63+
) {
64+
Icon(
65+
painter = painterResource(R.drawable.ic_x_twitter),
66+
contentDescription = null,
67+
tint = Colors.White
68+
)
69+
}
70+
FloatingActionButton(
71+
onClick = {
72+
val intent = Intent(Intent.ACTION_VIEW, Env.BITKIT_DISCORD.toUri())
73+
context.startActivity(intent)
74+
},
75+
containerColor = Colors.White16,
76+
modifier = Modifier.size(48.dp)
77+
) {
78+
Icon(
79+
painter = painterResource(R.drawable.ic_discord),
80+
contentDescription = null,
81+
tint = Colors.White
82+
)
83+
}
84+
FloatingActionButton(
85+
onClick = {
86+
val intent = Intent(Intent.ACTION_VIEW, Env.BITKIT_TELEGRAM.toUri())
87+
context.startActivity(intent)
88+
},
89+
containerColor = Colors.White16,
90+
modifier = Modifier.size(48.dp)
91+
) {
92+
Icon(
93+
painter = painterResource(R.drawable.ic_telegram),
94+
contentDescription = null,
95+
tint = Colors.White
96+
)
97+
}
98+
FloatingActionButton(
99+
onClick = {
100+
val intent = Intent(Intent.ACTION_VIEW, Env.BITKIT_GITHUB.toUri())
101+
context.startActivity(intent)
102+
},
103+
containerColor = Colors.White16,
104+
modifier = Modifier.size(48.dp)
105+
) {
106+
Icon(
107+
painter = painterResource(R.drawable.ic_github),
108+
contentDescription = null,
109+
tint = Colors.White
110+
)
111+
}
112+
}
113+
}

app/src/main/java/to/bitkit/ui/onboarding/TermsOfUseScreen.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ import androidx.compose.ui.text.AnnotatedString
3636
import androidx.compose.ui.tooling.preview.Preview
3737
import androidx.compose.ui.unit.dp
3838
import to.bitkit.R
39+
import to.bitkit.env.Env
3940
import to.bitkit.ui.components.BodyMSB
4041
import to.bitkit.ui.components.BodySSB
4142
import to.bitkit.ui.components.Display
@@ -98,7 +99,7 @@ fun TermsOfUseScreen(
9899
CheckButton(
99100
title = stringResource(R.string.onboarding__tos_checkbox),
100101
htmlText = stringResource(R.string.onboarding__tos_checkbox_value)
101-
.withAccentLink("https://bitkit.to/terms-of-use"),
102+
.withAccentLink(Env.TERMS_OF_USE_URL),
102103
isChecked = termsAccepted,
103104
onCheckedChange = { termsAccepted = it },
104105
modifier = Modifier.padding(horizontal = horizontalPadding)
Lines changed: 81 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,110 @@
11
package to.bitkit.ui.settings
22

3-
import androidx.compose.foundation.layout.Box
4-
import androidx.compose.foundation.layout.fillMaxSize
5-
import androidx.compose.material3.Text
3+
import android.content.Intent
4+
import androidx.compose.foundation.Image
5+
import androidx.compose.foundation.layout.Arrangement
6+
import androidx.compose.foundation.layout.Column
7+
import androidx.compose.foundation.layout.Row
8+
import androidx.compose.foundation.layout.fillMaxWidth
9+
import androidx.compose.foundation.layout.padding
10+
import androidx.compose.material3.HorizontalDivider
611
import androidx.compose.runtime.Composable
7-
import androidx.compose.ui.Alignment
812
import androidx.compose.ui.Modifier
13+
import androidx.compose.ui.platform.LocalContext
14+
import androidx.compose.ui.res.painterResource
915
import androidx.compose.ui.res.stringResource
1016
import androidx.compose.ui.tooling.preview.Preview
11-
import androidx.navigation.NavController
17+
import androidx.compose.ui.unit.dp
18+
import androidx.core.net.toUri
19+
import to.bitkit.BuildConfig
1220
import to.bitkit.R
13-
import to.bitkit.ui.navigateToHome
21+
import to.bitkit.env.Env
22+
import to.bitkit.ui.components.BodyM
23+
import to.bitkit.ui.components.VerticalSpacer
24+
import to.bitkit.ui.components.settings.Links
25+
import to.bitkit.ui.components.settings.SettingsButtonRow
1426
import to.bitkit.ui.scaffold.AppTopBar
1527
import to.bitkit.ui.scaffold.CloseNavIcon
1628
import to.bitkit.ui.scaffold.ScreenColumn
29+
import to.bitkit.ui.shared.util.shareText
1730
import to.bitkit.ui.theme.AppThemeSurface
31+
import to.bitkit.ui.theme.Colors
1832

1933
@Composable
2034
fun AboutScreen(
21-
navController: NavController,
35+
onBack: () -> Unit,
36+
onClose: () -> Unit,
2237
) {
23-
AboutContent(
24-
onBackClick = { navController.popBackStack() },
25-
onCloseClick = { navController.navigateToHome() },
26-
)
27-
}
38+
val context = LocalContext.current
2839

29-
@Composable
30-
private fun AboutContent(
31-
onBackClick: () -> Unit = {},
32-
onCloseClick: () -> Unit = {},
33-
) {
3440
ScreenColumn {
3541
AppTopBar(
36-
titleText = stringResource(R.string.settings__about_title),
37-
onBackClick = onBackClick,
38-
actions = { CloseNavIcon(onCloseClick) },
42+
titleText = stringResource(R.string.settings__about__title),
43+
onBackClick = onBack,
44+
actions = { CloseNavIcon(onClick = onClose) },
3945
)
40-
Box(modifier = Modifier.fillMaxSize()) {
41-
Text("TODO: About Screen", modifier = Modifier.align(Alignment.Center))
46+
47+
Column(
48+
modifier = Modifier.padding(horizontal = 16.dp)
49+
) {
50+
VerticalSpacer(32.dp)
51+
52+
BodyM(text = stringResource(R.string.settings__about__text), color = Colors.White64)
53+
54+
VerticalSpacer(32.dp)
55+
56+
SettingsButtonRow(title = stringResource(R.string.settings__about__legal), onClick = {
57+
val intent = Intent(Intent.ACTION_VIEW, Env.TERMS_OF_USE_URL.toUri())
58+
context.startActivity(intent)
59+
})
60+
61+
SettingsButtonRow(title = stringResource(R.string.settings__about__share), onClick = {
62+
shareText(
63+
context,
64+
context.getString(R.string.settings__about__shareText)
65+
.replace("{appStoreUrl}", Env.APP_STORE_URL)
66+
.replace("{playStoreUrl}", Env.PLAY_STORE_URL)
67+
)
68+
})
69+
70+
VerticalSpacer(14.dp)
71+
72+
Row(
73+
modifier = Modifier.fillMaxWidth(),
74+
horizontalArrangement = Arrangement.SpaceBetween
75+
) {
76+
BodyM(text = stringResource(R.string.settings__about__version))
77+
BodyM(text = "${BuildConfig.VERSION_NAME} (${BuildConfig.VERSION_CODE})", color = Colors.White50)
78+
}
79+
80+
VerticalSpacer(14.dp)
81+
82+
HorizontalDivider()
83+
84+
Image(
85+
painter = painterResource(R.drawable.bitkit_logo),
86+
contentDescription = null,
87+
modifier = Modifier
88+
.fillMaxWidth()
89+
.padding(horizontal = 32.dp)
90+
.weight(1f)
91+
)
92+
93+
Links(modifier = Modifier.fillMaxWidth())
94+
95+
VerticalSpacer(16.dp)
4296
}
4397
}
4498
}
4599

100+
46101
@Preview
47102
@Composable
48103
private fun Preview() {
49104
AppThemeSurface {
50-
AboutContent()
105+
AboutScreen(
106+
onBack = {},
107+
onClose = {}
108+
)
51109
}
52110
}

app/src/main/java/to/bitkit/ui/settings/support/SupportScreen.kt

Lines changed: 2 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import androidx.core.net.toUri
2323
import to.bitkit.R
2424
import to.bitkit.env.Env
2525
import to.bitkit.ui.components.BodyM
26+
import to.bitkit.ui.components.settings.Links
2627
import to.bitkit.ui.components.settings.SettingsButtonRow
2728
import to.bitkit.ui.scaffold.AppTopBar
2829
import to.bitkit.ui.scaffold.CloseNavIcon
@@ -71,95 +72,7 @@ fun SupportScreen(
7172
.weight(1f)
7273
)
7374

74-
FlowRow(
75-
horizontalArrangement = Arrangement.SpaceBetween,
76-
modifier = Modifier.fillMaxWidth()
77-
) {
78-
FloatingActionButton(
79-
onClick = {
80-
val intent = Intent(Intent.ACTION_VIEW, Env.BITKIT_WEBSITE.toUri())
81-
context.startActivity(intent)
82-
},
83-
containerColor = Colors.White16,
84-
modifier = Modifier.size(48.dp)
85-
) {
86-
Icon(
87-
painter = painterResource(R.drawable.ic_globe),
88-
contentDescription = null,
89-
tint = Colors.White
90-
)
91-
}
92-
FloatingActionButton(
93-
onClick = {
94-
val intent = Intent(Intent.ACTION_VIEW, Env.SYNONYM_MEDIUM.toUri())
95-
context.startActivity(intent)
96-
},
97-
containerColor = Colors.White16,
98-
modifier = Modifier.size(48.dp)
99-
) {
100-
Icon(
101-
painter = painterResource(R.drawable.ic_medium),
102-
contentDescription = null,
103-
tint = Colors.White
104-
)
105-
}
106-
FloatingActionButton(
107-
onClick = {
108-
val intent = Intent(Intent.ACTION_VIEW, Env.SYNONYM_X.toUri())
109-
context.startActivity(intent)
110-
},
111-
containerColor = Colors.White16,
112-
modifier = Modifier.size(48.dp)
113-
) {
114-
Icon(
115-
painter = painterResource(R.drawable.ic_x_twitter),
116-
contentDescription = null,
117-
tint = Colors.White
118-
)
119-
}
120-
FloatingActionButton(
121-
onClick = {
122-
val intent = Intent(Intent.ACTION_VIEW, Env.BITKIT_DISCORD.toUri())
123-
context.startActivity(intent)
124-
},
125-
containerColor = Colors.White16,
126-
modifier = Modifier.size(48.dp)
127-
) {
128-
Icon(
129-
painter = painterResource(R.drawable.ic_discord),
130-
contentDescription = null,
131-
tint = Colors.White
132-
)
133-
}
134-
FloatingActionButton(
135-
onClick = {
136-
val intent = Intent(Intent.ACTION_VIEW, Env.BITKIT_TELEGRAM.toUri())
137-
context.startActivity(intent)
138-
},
139-
containerColor = Colors.White16,
140-
modifier = Modifier.size(48.dp)
141-
) {
142-
Icon(
143-
painter = painterResource(R.drawable.ic_telegram),
144-
contentDescription = null,
145-
tint = Colors.White
146-
)
147-
}
148-
FloatingActionButton(
149-
onClick = {
150-
val intent = Intent(Intent.ACTION_VIEW, Env.BITKIT_GITHUB.toUri())
151-
context.startActivity(intent)
152-
},
153-
containerColor = Colors.White16,
154-
modifier = Modifier.size(48.dp)
155-
) {
156-
Icon(
157-
painter = painterResource(R.drawable.ic_github),
158-
contentDescription = null,
159-
tint = Colors.White
160-
)
161-
}
162-
}
75+
Links(modifier = Modifier.fillMaxWidth())
16376

16477
Spacer(modifier = Modifier.height(16.dp))
16578
}

0 commit comments

Comments
 (0)