From 196fc9fe7dc5bdcf9c1f8908f56551476a009d4e Mon Sep 17 00:00:00 2001 From: Aayush Gupta Date: Thu, 28 Sep 2023 00:59:05 +0530 Subject: [PATCH] ForumsPreviewScreen: Initial implementation Signed-off-by: Aayush Gupta --- .../java/io/aayush/relabs/MainActivity.kt | 19 ++++++----- .../aayush/relabs/ui/components/BottomBar.kt | 12 ++----- .../aayush/relabs/ui/navigation/NavGraph.kt | 4 ++- .../io/aayush/relabs/ui/navigation/Screen.kt | 6 ++++ .../forumpreview/ForumPreviewScreen.kt | 34 +++++++++++++++++++ .../forumpreview/ForumPreviewViewModel.kt | 11 ++++++ app/src/main/res/drawable/ic_phone.xml | 11 ++++++ app/src/main/res/values/strings.xml | 3 ++ 8 files changed, 82 insertions(+), 18 deletions(-) create mode 100644 app/src/main/java/io/aayush/relabs/ui/screens/forumpreview/ForumPreviewScreen.kt create mode 100644 app/src/main/java/io/aayush/relabs/ui/screens/forumpreview/ForumPreviewViewModel.kt create mode 100644 app/src/main/res/drawable/ic_phone.xml diff --git a/app/src/main/java/io/aayush/relabs/MainActivity.kt b/app/src/main/java/io/aayush/relabs/MainActivity.kt index de47ca0..92fed3c 100644 --- a/app/src/main/java/io/aayush/relabs/MainActivity.kt +++ b/app/src/main/java/io/aayush/relabs/MainActivity.kt @@ -33,16 +33,19 @@ import javax.inject.Inject @AndroidEntryPoint class MainActivity : AppCompatActivity() { + companion object { + val topRoutes: List = listOf( + Screen.ThreadPreview, + Screen.News, + Screen.ForumPreview, + Screen.Alerts, + Screen.More + ) + } + @Inject lateinit var sharedPreferences: SharedPreferences - val topRoutes = listOf( - Screen.ThreadPreview.route, - Screen.Alerts.route, - Screen.News.route, - Screen.More.route - ) - override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val accessToken = sharedPreferences.getString(ACCESS_TOKEN, "") ?: "" @@ -73,7 +76,7 @@ class MainActivity : AppCompatActivity() { LaunchedEffect(key1 = currentRoute) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) { val navigationBarElevation = NavigationBarDefaults.Elevation - val navigationBarColor = if (currentRoute in topRoutes) { + val navigationBarColor = if (topRoutes.any { it.route == currentRoute }) { colorScheme.surfaceColorAtElevation(navigationBarElevation) } else { colorScheme.background diff --git a/app/src/main/java/io/aayush/relabs/ui/components/BottomBar.kt b/app/src/main/java/io/aayush/relabs/ui/components/BottomBar.kt index 14294d9..16a37bd 100644 --- a/app/src/main/java/io/aayush/relabs/ui/components/BottomBar.kt +++ b/app/src/main/java/io/aayush/relabs/ui/components/BottomBar.kt @@ -17,23 +17,17 @@ import androidx.navigation.NavDestination.Companion.hierarchy import androidx.navigation.NavGraph.Companion.findStartDestination import androidx.navigation.NavHostController import androidx.navigation.compose.currentBackStackEntryAsState -import io.aayush.relabs.ui.navigation.Screen +import io.aayush.relabs.MainActivity @Composable fun BottomBar(navController: NavHostController) { - val screens = listOf( - Screen.ThreadPreview, - Screen.News, - Screen.Alerts, - Screen.More - ) val bottomBarState = rememberSaveable { (mutableStateOf(true)) } val navBackStackEntry by navController.currentBackStackEntryAsState() val currentDestination = navBackStackEntry?.destination when (navBackStackEntry?.destination?.route) { - Screen.ThreadPreview.route, Screen.News.route, Screen.Alerts.route, Screen.More.route -> { + in MainActivity.topRoutes.map { it.route } -> { bottomBarState.value = true } @@ -46,7 +40,7 @@ fun BottomBar(navController: NavHostController) { exit = slideOutVertically(targetOffsetY = { it }) ) { NavigationBar { - screens.forEachIndexed { _, item -> + MainActivity.topRoutes.forEachIndexed { _, item -> NavigationBarItem( selected = currentDestination?.hierarchy?.any { it.route == item.route diff --git a/app/src/main/java/io/aayush/relabs/ui/navigation/NavGraph.kt b/app/src/main/java/io/aayush/relabs/ui/navigation/NavGraph.kt index 565de30..17c613e 100644 --- a/app/src/main/java/io/aayush/relabs/ui/navigation/NavGraph.kt +++ b/app/src/main/java/io/aayush/relabs/ui/navigation/NavGraph.kt @@ -22,10 +22,11 @@ import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.navArgument import io.aayush.relabs.ui.screens.alerts.AlertsScreen +import io.aayush.relabs.ui.screens.forumpreview.ForumPreviewScreen import io.aayush.relabs.ui.screens.login.LoginScreen +import io.aayush.relabs.ui.screens.more.MoreScreen import io.aayush.relabs.ui.screens.news.NewsScreen import io.aayush.relabs.ui.screens.reply.ReplyScreen -import io.aayush.relabs.ui.screens.more.MoreScreen import io.aayush.relabs.ui.screens.thread.ThreadScreen import io.aayush.relabs.ui.screens.threadpreview.ThreadPreviewScreen @@ -47,6 +48,7 @@ fun SetupNavGraph( composable(route = Screen.Alerts.route) { AlertsScreen(navHostController) } composable(route = Screen.News.route) { NewsScreen(navHostController) } composable(route = Screen.More.route) { MoreScreen(navHostController) } + composable(route = Screen.ForumPreview.route) { ForumPreviewScreen(navHostController) } composable( route = Screen.Thread.route, arguments = listOf( diff --git a/app/src/main/java/io/aayush/relabs/ui/navigation/Screen.kt b/app/src/main/java/io/aayush/relabs/ui/navigation/Screen.kt index eaeba47..cef11aa 100644 --- a/app/src/main/java/io/aayush/relabs/ui/navigation/Screen.kt +++ b/app/src/main/java/io/aayush/relabs/ui/navigation/Screen.kt @@ -59,4 +59,10 @@ sealed class Screen(val route: String, @StringRes val title: Int, @DrawableRes v return this.route.replace("{${NavArg.THREAD_ID.name}}", id.toString()) } } + + data object ForumPreview : Screen( + route = "forum_preview_screen", + title = R.string.forum_preview, + icon = R.drawable.ic_phone + ) } diff --git a/app/src/main/java/io/aayush/relabs/ui/screens/forumpreview/ForumPreviewScreen.kt b/app/src/main/java/io/aayush/relabs/ui/screens/forumpreview/ForumPreviewScreen.kt new file mode 100644 index 0000000..315ab45 --- /dev/null +++ b/app/src/main/java/io/aayush/relabs/ui/screens/forumpreview/ForumPreviewScreen.kt @@ -0,0 +1,34 @@ +package io.aayush.relabs.ui.screens.forumpreview + +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Scaffold +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBar +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource +import androidx.hilt.navigation.compose.hiltViewModel +import androidx.navigation.NavHostController +import io.aayush.relabs.R + +@Composable +@OptIn(ExperimentalMaterial3Api::class) +fun ForumPreviewScreen( + navHostController: NavHostController, + viewModel: ForumPreviewViewModel = hiltViewModel() +) { + Scaffold( + modifier = Modifier.fillMaxSize(), + topBar = { + TopAppBar( + title = { Text(text = stringResource(id = R.string.forum_preview)) } + ) + } + ) { + Column(modifier = Modifier.padding(it)) { + } + } +} diff --git a/app/src/main/java/io/aayush/relabs/ui/screens/forumpreview/ForumPreviewViewModel.kt b/app/src/main/java/io/aayush/relabs/ui/screens/forumpreview/ForumPreviewViewModel.kt new file mode 100644 index 0000000..5f39dd4 --- /dev/null +++ b/app/src/main/java/io/aayush/relabs/ui/screens/forumpreview/ForumPreviewViewModel.kt @@ -0,0 +1,11 @@ +package io.aayush.relabs.ui.screens.forumpreview + +import androidx.lifecycle.ViewModel +import dagger.hilt.android.lifecycle.HiltViewModel +import io.aayush.relabs.network.XenforoRepository +import javax.inject.Inject + +@HiltViewModel +class ForumPreviewViewModel @Inject constructor( + private val xenforoRepository: XenforoRepository +) : ViewModel() diff --git a/app/src/main/res/drawable/ic_phone.xml b/app/src/main/res/drawable/ic_phone.xml new file mode 100644 index 0000000..cb95136 --- /dev/null +++ b/app/src/main/res/drawable/ic_phone.xml @@ -0,0 +1,11 @@ + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index dc24d1e..c28ca41 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -54,4 +54,7 @@ Retry %1$s Nothing here! %1$s Failed to fetch information! + + + Forums