diff --git a/app/src/main/java/chat/revolt/activities/MainActivity.kt b/app/src/main/java/chat/revolt/activities/MainActivity.kt
index 158bf8ba..1c35551d 100644
--- a/app/src/main/java/chat/revolt/activities/MainActivity.kt
+++ b/app/src/main/java/chat/revolt/activities/MainActivity.kt
@@ -214,7 +214,11 @@ class MainActivityViewModel @Inject constructor(
Log.d("MainActivity", "Onboarding state is complete, logging in")
RevoltAPI.loginAs(token)
RevoltAPI.setSessionId(id)
- startWithDestination("chat")
+ if (Experiments.usePolar.isEnabled) {
+ startWithDestination("main")
+ } else {
+ startWithDestination("chat")
+ }
} catch (e: Exception) {
Log.e("MainActivity", "Failed to login, could not log in", e)
couldNotLogIn.emit(true)
diff --git a/app/src/main/java/chat/revolt/screens/chat/views/OverviewScreen.kt b/app/src/main/java/chat/revolt/screens/chat/views/OverviewScreen.kt
index f2892f58..077cff04 100644
--- a/app/src/main/java/chat/revolt/screens/chat/views/OverviewScreen.kt
+++ b/app/src/main/java/chat/revolt/screens/chat/views/OverviewScreen.kt
@@ -13,6 +13,7 @@ import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.WindowInsets
+import androidx.compose.foundation.layout.exclude
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
@@ -31,8 +32,10 @@ import androidx.compose.material3.IconButton
import androidx.compose.material3.LocalContentColor
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.ModalBottomSheet
+import androidx.compose.material3.NavigationBarDefaults
import androidx.compose.material3.ProvideTextStyle
import androidx.compose.material3.Scaffold
+import androidx.compose.material3.ScaffoldDefaults
import androidx.compose.material3.Text
import androidx.compose.material3.rememberModalBottomSheetState
import androidx.compose.runtime.Composable
@@ -64,7 +67,12 @@ import io.sentry.Sentry
@OptIn(ExperimentalMaterial3Api::class)
@Composable
-fun OverviewScreen(navController: NavController, useDrawer: Boolean, onDrawerClicked: () -> Unit) {
+fun OverviewScreen(
+ navController: NavController,
+ useDrawer: Boolean,
+ onDrawerClicked: () -> Unit,
+ includePadding: Boolean = true
+) {
val context = LocalContext.current
var isLoading by rememberSaveable { mutableStateOf(true) }
@@ -119,6 +127,9 @@ fun OverviewScreen(navController: NavController, useDrawer: Boolean, onDrawerCli
windowInsets = WindowInsets.zero
)
},
+ contentWindowInsets = if (includePadding) ScaffoldDefaults.contentWindowInsets else ScaffoldDefaults.contentWindowInsets.exclude(
+ NavigationBarDefaults.windowInsets
+ )
) { pv ->
if (user == null && !isLoading) {
NonIdealState(
@@ -138,8 +149,11 @@ fun OverviewScreen(navController: NavController, useDrawer: Boolean, onDrawerCli
Column(
horizontalAlignment = Alignment.CenterHorizontally,
modifier = Modifier
- .padding(pv)
- .padding(horizontal = 16.dp)
+ .then(
+ Modifier
+ .padding(pv)
+ .padding(horizontal = 16.dp)
+ )
) {
AnimatedContent(targetState = isLoading, label = "isLoading") { loading ->
Column(
diff --git a/app/src/main/java/chat/revolt/screens/main/MainScreen.kt b/app/src/main/java/chat/revolt/screens/main/MainScreen.kt
new file mode 100644
index 00000000..bb4a654e
--- /dev/null
+++ b/app/src/main/java/chat/revolt/screens/main/MainScreen.kt
@@ -0,0 +1,109 @@
+package chat.revolt.screens.main
+
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.padding
+import androidx.compose.material3.Icon
+import androidx.compose.material3.NavigationBar
+import androidx.compose.material3.NavigationBarItem
+import androidx.compose.material3.Scaffold
+import androidx.compose.material3.Text
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.getValue
+import androidx.compose.runtime.mutableStateOf
+import androidx.compose.runtime.saveable.rememberSaveable
+import androidx.compose.runtime.setValue
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.res.painterResource
+import androidx.navigation.NavController
+import chat.revolt.R
+import chat.revolt.screens.chat.views.OverviewScreen
+
+enum class MainScreenTab {
+ Communities,
+ Conversations,
+ Overview
+}
+
+@Composable
+fun MainScreen(navController: NavController) {
+ var currentTab by rememberSaveable { mutableStateOf(MainScreenTab.Communities) }
+
+ Scaffold(
+ bottomBar = {
+ NavigationBar {
+ NavigationBarItem(
+ selected = currentTab == MainScreenTab.Communities,
+ onClick = { currentTab = MainScreenTab.Communities },
+ icon = {
+ Icon(
+ painter = painterResource(
+ if (currentTab == MainScreenTab.Communities) {
+ R.drawable.ic_account_group_24dp
+ } else {
+ R.drawable.ic_account_group_outline_24dp
+ }
+ ),
+ contentDescription = null,
+ )
+ },
+ label = {
+ Text("Communities")
+ }
+ )
+ NavigationBarItem(
+ selected = currentTab == MainScreenTab.Conversations,
+ onClick = { currentTab = MainScreenTab.Conversations },
+ icon = {
+ Icon(
+ painter = painterResource(
+ if (currentTab == MainScreenTab.Conversations) {
+ R.drawable.ic_forum_24dp
+ } else {
+ R.drawable.ic_forum_outline_24dp
+ }
+ ),
+ contentDescription = null,
+ )
+ },
+ label = {
+ Text("Conversations")
+ }
+ )
+ NavigationBarItem(
+ selected = currentTab == MainScreenTab.Overview,
+ onClick = { currentTab = MainScreenTab.Overview },
+ icon = {
+ Icon(
+ painter = painterResource(
+ if (currentTab == MainScreenTab.Overview) {
+ R.drawable.ic_creation_24dp
+ } else {
+ R.drawable.ic_creation_outline_24dp
+ }
+ ),
+ contentDescription = null,
+ )
+ },
+ label = {
+ Text("Overview")
+ }
+ )
+ }
+ },
+ ) { pv ->
+ Box(Modifier.padding(pv)) {
+ when (currentTab) {
+ MainScreenTab.Communities -> {}
+ MainScreenTab.Conversations -> {}
+ MainScreenTab.Overview -> {
+ OverviewScreen(
+ navController,
+ useDrawer = false,
+ onDrawerClicked = {},
+ includePadding = false
+ )
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_account_group_24dp.xml b/app/src/main/res/drawable/ic_account_group_24dp.xml
new file mode 100644
index 00000000..84c19352
--- /dev/null
+++ b/app/src/main/res/drawable/ic_account_group_24dp.xml
@@ -0,0 +1,9 @@
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_account_group_outline_24dp.xml b/app/src/main/res/drawable/ic_account_group_outline_24dp.xml
new file mode 100644
index 00000000..5ceed4a1
--- /dev/null
+++ b/app/src/main/res/drawable/ic_account_group_outline_24dp.xml
@@ -0,0 +1,9 @@
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_creation_outline_24dp.xml b/app/src/main/res/drawable/ic_creation_outline_24dp.xml
new file mode 100644
index 00000000..2ded97ab
--- /dev/null
+++ b/app/src/main/res/drawable/ic_creation_outline_24dp.xml
@@ -0,0 +1,9 @@
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_forum_24dp.xml b/app/src/main/res/drawable/ic_forum_24dp.xml
new file mode 100644
index 00000000..f7af313f
--- /dev/null
+++ b/app/src/main/res/drawable/ic_forum_24dp.xml
@@ -0,0 +1,9 @@
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_forum_outline_24dp.xml b/app/src/main/res/drawable/ic_forum_outline_24dp.xml
new file mode 100644
index 00000000..44aee6c7
--- /dev/null
+++ b/app/src/main/res/drawable/ic_forum_outline_24dp.xml
@@ -0,0 +1,9 @@
+
+
+
\ No newline at end of file