feat: move jenvolt link out of settings

Signed-off-by: Infi <infi@infi.sh>
This commit is contained in:
Infi 2023-09-18 21:17:54 +02:00
parent f9784a67a2
commit 66bc50ee39
5 changed files with 95 additions and 61 deletions

View File

@ -1,54 +1,70 @@
package chat.revolt.components.screens.home package chat.revolt.components.screens.home
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.AccountBox import androidx.compose.material.icons.filled.AccountBox
import androidx.compose.material3.ElevatedButton
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.LocalTextStyle
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.draw.clip
import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
@Composable @Composable
fun LinkOnHome( fun LinkOnHome(
heading: String, heading: @Composable () -> Unit,
icon: ImageVector, icon: @Composable (Modifier) -> Unit,
onClick: () -> Unit,
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
description: @Composable () -> Unit = {},
onClick: () -> Unit,
) { ) {
ElevatedButton( Box(
onClick = onClick,
modifier = modifier modifier = modifier
.padding(10.dp) .clip(MaterialTheme.shapes.medium)
.clickable { onClick() }
.padding(20.dp)
.fillMaxWidth() .fillMaxWidth()
.clickable { onClick() }, .padding(vertical = 5.dp),
) { ) {
Row( Row(
modifier = Modifier modifier = Modifier
.fillMaxWidth(), .fillMaxWidth(),
verticalAlignment = Alignment.CenterVertically, verticalAlignment = Alignment.CenterVertically,
) { ) {
Icon( icon(Modifier.padding(end = 14.dp))
imageVector = icon,
contentDescription = null, Column {
modifier = Modifier.padding(10.dp) CompositionLocalProvider(
) LocalTextStyle provides MaterialTheme.typography.titleMedium.copy(
Text( fontWeight = FontWeight.Bold
text = heading, )
style = MaterialTheme.typography.titleMedium.copy( ) {
fontWeight = FontWeight.Bold heading()
), }
modifier = Modifier.padding(5.dp)
) Spacer(modifier = Modifier.height(2.dp))
CompositionLocalProvider(
LocalTextStyle provides MaterialTheme.typography.bodySmall.copy(
fontWeight = FontWeight.Normal
)
) {
description()
}
}
} }
} }
} }
@ -57,8 +73,9 @@ fun LinkOnHome(
@Composable @Composable
fun LinkOnHomePreview() { fun LinkOnHomePreview() {
LinkOnHome( LinkOnHome(
heading = "Heading", heading = { Text("Heading") },
icon = Icons.Default.AccountBox, description = { Text("Description") },
icon = { mod -> Icon(Icons.Default.AccountBox, null, modifier = mod) },
onClick = { } onClick = { }
) )
} }

View File

@ -1,5 +1,7 @@
package chat.revolt.screens.chat.views package chat.revolt.screens.chat.views
import android.content.Intent
import android.net.Uri
import androidx.compose.animation.core.LinearEasing import androidx.compose.animation.core.LinearEasing
import androidx.compose.animation.core.RepeatMode import androidx.compose.animation.core.RepeatMode
import androidx.compose.animation.core.animateFloat import androidx.compose.animation.core.animateFloat
@ -9,21 +11,31 @@ import androidx.compose.animation.core.tween
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.safeDrawingPadding import androidx.compose.foundation.layout.safeDrawingPadding
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Star
import androidx.compose.material3.Icon
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.rotate import androidx.compose.ui.draw.rotate
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
import androidx.navigation.NavController import androidx.navigation.NavController
import chat.revolt.R import chat.revolt.R
import chat.revolt.activities.InviteActivity
import chat.revolt.components.generic.PageHeader import chat.revolt.components.generic.PageHeader
import chat.revolt.components.screens.home.LinkOnHome
@Composable @Composable
fun HomeScreen(navController: NavController) { fun HomeScreen(navController: NavController) {
val context = LocalContext.current
val catTransition = rememberInfiniteTransition(label = "cat") val catTransition = rememberInfiniteTransition(label = "cat")
val catRotation by catTransition.animateFloat( val catRotation by catTransition.animateFloat(
initialValue = 0f, initialValue = 0f,
@ -51,5 +63,28 @@ fun HomeScreen(navController: NavController) {
modifier = Modifier.rotate(catRotation), modifier = Modifier.rotate(catRotation),
) )
} }
Column(Modifier.padding(16.dp)) {
LinkOnHome(
icon = { modifier ->
Icon(
imageVector = Icons.Default.Star,
contentDescription = stringResource(id = R.string.home_join_jenvolt),
modifier = modifier
)
},
heading = { Text(text = stringResource(id = R.string.home_join_jenvolt)) },
description = { Text(text = stringResource(id = R.string.home_join_jenvolt_description)) },
) {
context.startActivity(
Intent(
context,
InviteActivity::class.java
)
.setData(Uri.parse("https://rvlt.gg/jen"))
.setAction(Intent.ACTION_VIEW)
)
}
}
} }
} }

View File

@ -1,7 +1,5 @@
package chat.revolt.screens.settings package chat.revolt.screens.settings
import android.content.Intent
import android.net.Uri
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
@ -14,7 +12,6 @@ import androidx.compose.material.icons.filled.Close
import androidx.compose.material.icons.filled.DateRange import androidx.compose.material.icons.filled.DateRange
import androidx.compose.material.icons.filled.Info import androidx.compose.material.icons.filled.Info
import androidx.compose.material.icons.filled.Settings import androidx.compose.material.icons.filled.Settings
import androidx.compose.material.icons.filled.Star
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text import androidx.compose.material3.Text
@ -30,7 +27,6 @@ import androidx.lifecycle.ViewModel
import androidx.navigation.NavController import androidx.navigation.NavController
import chat.revolt.BuildConfig import chat.revolt.BuildConfig
import chat.revolt.R import chat.revolt.R
import chat.revolt.activities.InviteActivity
import chat.revolt.api.RevoltAPI import chat.revolt.api.RevoltAPI
import chat.revolt.api.settings.GlobalState import chat.revolt.api.settings.GlobalState
import chat.revolt.components.generic.PageHeader import chat.revolt.components.generic.PageHeader
@ -59,8 +55,6 @@ fun SettingsScreen(
navController: NavController, navController: NavController,
viewModel: SettingsScreenViewModel = hiltViewModel() viewModel: SettingsScreenViewModel = hiltViewModel()
) { ) {
val context = LocalContext.current
Column( Column(
modifier = Modifier modifier = Modifier
.fillMaxSize() .fillMaxSize()
@ -195,32 +189,6 @@ fun SettingsScreen(
navController.navigate("settings/changelogs") navController.navigate("settings/changelogs")
} }
SheetClickable(
icon = { modifier ->
Icon(
imageVector = Icons.Default.Star,
contentDescription = stringResource(id = R.string.logout),
modifier = modifier
)
},
label = { textStyle ->
Text(
text = stringResource(id = R.string.settings_join_jenvolt),
style = textStyle
)
},
modifier = Modifier.testTag("settings_join_jenvolt")
) {
context.startActivity(
Intent(
context,
InviteActivity::class.java
)
.setData(Uri.parse("https://rvlt.gg/jen"))
.setAction(Intent.ACTION_VIEW)
)
}
SheetClickable( SheetClickable(
icon = { modifier -> icon = { modifier ->
Icon( Icon(

View File

@ -15,6 +15,7 @@ import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Build import androidx.compose.material.icons.filled.Build
import androidx.compose.material.icons.filled.ExitToApp import androidx.compose.material.icons.filled.ExitToApp
import androidx.compose.material3.AlertDialog import androidx.compose.material3.AlertDialog
import androidx.compose.material3.Icon
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.material3.TextButton import androidx.compose.material3.TextButton
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
@ -58,8 +59,14 @@ fun AddServerSheet() {
Spacer(modifier = Modifier.height(4.dp)) Spacer(modifier = Modifier.height(4.dp))
LinkOnHome( LinkOnHome(
heading = stringResource(id = R.string.add_server_sheet_join_by_invite), heading = { Text(stringResource(id = R.string.add_server_sheet_join_by_invite)) },
icon = Icons.Default.ExitToApp, icon = { modifier ->
Icon(
imageVector = Icons.Default.ExitToApp,
contentDescription = stringResource(id = R.string.add_server_sheet_join_by_invite),
modifier = modifier
)
},
onClick = { onClick = {
joinFromInviteModalOpen.value = true joinFromInviteModalOpen.value = true
} }
@ -68,8 +75,14 @@ fun AddServerSheet() {
Spacer(modifier = Modifier.height(4.dp)) Spacer(modifier = Modifier.height(4.dp))
LinkOnHome( LinkOnHome(
heading = stringResource(id = R.string.add_server_sheet_create_new), heading = { Text(stringResource(id = R.string.add_server_sheet_create_new)) },
icon = Icons.Default.Build, icon = { modifier ->
Icon(
imageVector = Icons.Default.Build,
contentDescription = stringResource(id = R.string.add_server_sheet_create_new),
modifier = modifier
)
},
onClick = { onClick = {
Toast.makeText( Toast.makeText(
context, context,

View File

@ -108,6 +108,9 @@
<string name="home">Home</string> <string name="home">Home</string>
<string name="menu">Menu</string> <string name="menu">Menu</string>
<string name="logout">Log out</string> <string name="logout">Log out</string>
<string name="home_join_jenvolt">Join Jenvolt</string>
<string name="home_join_jenvolt_description">Jenvolt is the developer-run space for all things Android app and more. Support, feedback go here. Maybe you will get to try out new features! 👀</string>
<string name="server_plus_alt">Add server</string> <string name="server_plus_alt">Add server</string>
@ -347,8 +350,6 @@
<string name="settings_appearance_theme_m3dynamic_unsupported">Material You (unsupported)</string> <string name="settings_appearance_theme_m3dynamic_unsupported">Material You (unsupported)</string>
<string name="settings_appearance_theme_m3dynamic_unsupported_toast">Material You is not supported on this device.</string> <string name="settings_appearance_theme_m3dynamic_unsupported_toast">Material You is not supported on this device.</string>
<string name="settings_join_jenvolt">Join Jenvolt</string>
<string name="settings_feedback">Feedback</string> <string name="settings_feedback">Feedback</string>
<string name="settings_feedback_introduction">Any feedback you have for Revolt is greatly appreciated and all feedback is read by the development team of our Android app.</string> <string name="settings_feedback_introduction">Any feedback you have for Revolt is greatly appreciated and all feedback is read by the development team of our Android app.</string>
<string name="settings_feedback_category">Category</string> <string name="settings_feedback_category">Category</string>