Skip to content
This repository has been archived by the owner on Aug 20, 2024. It is now read-only.

Commit

Permalink
ForumsPreviewScreen: Initial implementation
Browse files Browse the repository at this point in the history
Signed-off-by: Aayush Gupta <[email protected]>
  • Loading branch information
theimpulson committed Sep 27, 2023
1 parent 67221f7 commit 196fc9f
Show file tree
Hide file tree
Showing 8 changed files with 82 additions and 18 deletions.
19 changes: 11 additions & 8 deletions app/src/main/java/io/aayush/relabs/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -33,16 +33,19 @@ import javax.inject.Inject
@AndroidEntryPoint
class MainActivity : AppCompatActivity() {

companion object {
val topRoutes: List<Screen> = 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, "") ?: ""
Expand Down Expand Up @@ -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
Expand Down
12 changes: 3 additions & 9 deletions app/src/main/java/io/aayush/relabs/ui/components/BottomBar.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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
}

Expand All @@ -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
Expand Down
4 changes: 3 additions & 1 deletion app/src/main/java/io/aayush/relabs/ui/navigation/NavGraph.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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(
Expand Down
6 changes: 6 additions & 0 deletions app/src/main/java/io/aayush/relabs/ui/navigation/Screen.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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
)
}
Original file line number Diff line number Diff line change
@@ -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)) {
}
}
}
Original file line number Diff line number Diff line change
@@ -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()
11 changes: 11 additions & 0 deletions app/src/main/res/drawable/ic_phone.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="M400,800L560,800L560,760L400,760L400,800ZM280,920Q247,920 223.5,896.5Q200,873 200,840L200,120Q200,87 223.5,63.5Q247,40 280,40L680,40Q713,40 736.5,63.5Q760,87 760,120L760,840Q760,873 736.5,896.5Q713,920 680,920L280,920ZM280,720L280,840Q280,840 280,840Q280,840 280,840L680,840Q680,840 680,840Q680,840 680,840L680,720L280,720ZM280,640L680,640L680,240L280,240L280,640ZM280,160L680,160L680,120Q680,120 680,120Q680,120 680,120L280,120Q280,120 280,120Q280,120 280,120L280,160ZM280,720L280,720L280,840Q280,840 280,840Q280,840 280,840L280,840Q280,840 280,840Q280,840 280,840L280,720ZM280,160L280,120Q280,120 280,120Q280,120 280,120L280,120Q280,120 280,120Q280,120 280,120L280,160L280,160Z"/>
</vector>
3 changes: 3 additions & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -54,4 +54,7 @@
<string name="retry">Retry</string>
<string name="error_empty"><xliff:g id="exception">%1$s</xliff:g> Nothing here!</string>
<string name="error_retrofit"><xliff:g id="exception">%1$s</xliff:g> Failed to fetch information!</string>

<!-- ForumPreviewScreen -->
<string name="forum_preview">Forums</string>
</resources>

0 comments on commit 196fc9f

Please sign in to comment.