diff --git a/app/src/main/java/chat/revolt/components/screens/home/LinkOnHome.kt b/app/src/main/java/chat/revolt/components/screens/home/LinkOnHome.kt
index 552c9e0a..33920b1c 100644
--- a/app/src/main/java/chat/revolt/components/screens/home/LinkOnHome.kt
+++ b/app/src/main/java/chat/revolt/components/screens/home/LinkOnHome.kt
@@ -1,54 +1,70 @@
package chat.revolt.components.screens.home
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.Spacer
import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.AccountBox
-import androidx.compose.material3.ElevatedButton
import androidx.compose.material3.Icon
+import androidx.compose.material3.LocalTextStyle
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
+import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.ui.Alignment
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.tooling.preview.Preview
import androidx.compose.ui.unit.dp
@Composable
fun LinkOnHome(
- heading: String,
- icon: ImageVector,
- onClick: () -> Unit,
+ heading: @Composable () -> Unit,
+ icon: @Composable (Modifier) -> Unit,
modifier: Modifier = Modifier,
+ description: @Composable () -> Unit = {},
+ onClick: () -> Unit,
) {
- ElevatedButton(
- onClick = onClick,
+ Box(
modifier = modifier
- .padding(10.dp)
+ .clip(MaterialTheme.shapes.medium)
+ .clickable { onClick() }
+ .padding(20.dp)
.fillMaxWidth()
- .clickable { onClick() },
+ .padding(vertical = 5.dp),
) {
Row(
modifier = Modifier
.fillMaxWidth(),
verticalAlignment = Alignment.CenterVertically,
) {
- Icon(
- imageVector = icon,
- contentDescription = null,
- modifier = Modifier.padding(10.dp)
- )
- Text(
- text = heading,
- style = MaterialTheme.typography.titleMedium.copy(
- fontWeight = FontWeight.Bold
- ),
- modifier = Modifier.padding(5.dp)
- )
+ icon(Modifier.padding(end = 14.dp))
+
+ Column {
+ CompositionLocalProvider(
+ LocalTextStyle provides MaterialTheme.typography.titleMedium.copy(
+ fontWeight = FontWeight.Bold
+ )
+ ) {
+ heading()
+ }
+
+ Spacer(modifier = Modifier.height(2.dp))
+
+ CompositionLocalProvider(
+ LocalTextStyle provides MaterialTheme.typography.bodySmall.copy(
+ fontWeight = FontWeight.Normal
+ )
+ ) {
+ description()
+ }
+ }
}
}
}
@@ -57,8 +73,9 @@ fun LinkOnHome(
@Composable
fun LinkOnHomePreview() {
LinkOnHome(
- heading = "Heading",
- icon = Icons.Default.AccountBox,
+ heading = { Text("Heading") },
+ description = { Text("Description") },
+ icon = { mod -> Icon(Icons.Default.AccountBox, null, modifier = mod) },
onClick = { }
)
}
\ No newline at end of file
diff --git a/app/src/main/java/chat/revolt/screens/chat/views/HomeScreen.kt b/app/src/main/java/chat/revolt/screens/chat/views/HomeScreen.kt
index 4f83839a..574fafe7 100644
--- a/app/src/main/java/chat/revolt/screens/chat/views/HomeScreen.kt
+++ b/app/src/main/java/chat/revolt/screens/chat/views/HomeScreen.kt
@@ -1,5 +1,7 @@
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.RepeatMode
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.Column
import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.padding
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.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.rotate
+import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
+import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.navigation.NavController
import chat.revolt.R
+import chat.revolt.activities.InviteActivity
import chat.revolt.components.generic.PageHeader
+import chat.revolt.components.screens.home.LinkOnHome
@Composable
fun HomeScreen(navController: NavController) {
+ val context = LocalContext.current
+
val catTransition = rememberInfiniteTransition(label = "cat")
val catRotation by catTransition.animateFloat(
initialValue = 0f,
@@ -51,5 +63,28 @@ fun HomeScreen(navController: NavController) {
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)
+ )
+ }
+ }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/chat/revolt/screens/settings/SettingsScreen.kt b/app/src/main/java/chat/revolt/screens/settings/SettingsScreen.kt
index 3803a1c8..d71d74c9 100644
--- a/app/src/main/java/chat/revolt/screens/settings/SettingsScreen.kt
+++ b/app/src/main/java/chat/revolt/screens/settings/SettingsScreen.kt
@@ -1,7 +1,5 @@
package chat.revolt.screens.settings
-import android.content.Intent
-import android.net.Uri
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
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.Info
import androidx.compose.material.icons.filled.Settings
-import androidx.compose.material.icons.filled.Star
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
@@ -30,7 +27,6 @@ import androidx.lifecycle.ViewModel
import androidx.navigation.NavController
import chat.revolt.BuildConfig
import chat.revolt.R
-import chat.revolt.activities.InviteActivity
import chat.revolt.api.RevoltAPI
import chat.revolt.api.settings.GlobalState
import chat.revolt.components.generic.PageHeader
@@ -59,8 +55,6 @@ fun SettingsScreen(
navController: NavController,
viewModel: SettingsScreenViewModel = hiltViewModel()
) {
- val context = LocalContext.current
-
Column(
modifier = Modifier
.fillMaxSize()
@@ -195,32 +189,6 @@ fun SettingsScreen(
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(
icon = { modifier ->
Icon(
diff --git a/app/src/main/java/chat/revolt/sheets/AddServerSheet.kt b/app/src/main/java/chat/revolt/sheets/AddServerSheet.kt
index 6c7add2a..8dcf855b 100644
--- a/app/src/main/java/chat/revolt/sheets/AddServerSheet.kt
+++ b/app/src/main/java/chat/revolt/sheets/AddServerSheet.kt
@@ -15,6 +15,7 @@ import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Build
import androidx.compose.material.icons.filled.ExitToApp
import androidx.compose.material3.AlertDialog
+import androidx.compose.material3.Icon
import androidx.compose.material3.Text
import androidx.compose.material3.TextButton
import androidx.compose.runtime.Composable
@@ -58,8 +59,14 @@ fun AddServerSheet() {
Spacer(modifier = Modifier.height(4.dp))
LinkOnHome(
- heading = stringResource(id = R.string.add_server_sheet_join_by_invite),
- icon = Icons.Default.ExitToApp,
+ heading = { Text(stringResource(id = R.string.add_server_sheet_join_by_invite)) },
+ icon = { modifier ->
+ Icon(
+ imageVector = Icons.Default.ExitToApp,
+ contentDescription = stringResource(id = R.string.add_server_sheet_join_by_invite),
+ modifier = modifier
+ )
+ },
onClick = {
joinFromInviteModalOpen.value = true
}
@@ -68,8 +75,14 @@ fun AddServerSheet() {
Spacer(modifier = Modifier.height(4.dp))
LinkOnHome(
- heading = stringResource(id = R.string.add_server_sheet_create_new),
- icon = Icons.Default.Build,
+ heading = { Text(stringResource(id = R.string.add_server_sheet_create_new)) },
+ icon = { modifier ->
+ Icon(
+ imageVector = Icons.Default.Build,
+ contentDescription = stringResource(id = R.string.add_server_sheet_create_new),
+ modifier = modifier
+ )
+ },
onClick = {
Toast.makeText(
context,
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 6695c3a1..adf7d208 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -108,6 +108,9 @@
Home
Menu
Log out
+
+ Join Jenvolt
+ 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! 👀
Add server
@@ -347,8 +350,6 @@
Material You (unsupported)
Material You is not supported on this device.
- Join Jenvolt
-
Feedback
Any feedback you have for Revolt is greatly appreciated and all feedback is read by the development team of our Android app.
Category