From 58def7160df2057a4714c48540c1fb570ddbecf0 Mon Sep 17 00:00:00 2001 From: Izlydov Date: Wed, 19 Feb 2025 16:08:03 +0300 Subject: [PATCH] added navigation bottom bar --- .../java/com/displaynone/acss/MainActivity.kt | 45 +++++++++++++++++++ .../auth/models/user/UserServiceST.kt | 3 ++ .../models/user/repository/UserRepository.kt | 2 +- app/src/main/res/layout/activity_main.xml | 34 +++++++++++--- app/src/main/res/menu/bottom_nav_menu.xml | 9 +++- app/src/main/res/menu/toolbar.xml | 9 ++++ app/src/main/res/navigation/nav_graph.xml | 36 ++++++++++----- app/src/main/res/values/strings.xml | 1 + 8 files changed, 119 insertions(+), 20 deletions(-) create mode 100644 app/src/main/res/menu/toolbar.xml diff --git a/app/src/main/java/com/displaynone/acss/MainActivity.kt b/app/src/main/java/com/displaynone/acss/MainActivity.kt index 5226b7e..cc1c80f 100644 --- a/app/src/main/java/com/displaynone/acss/MainActivity.kt +++ b/app/src/main/java/com/displaynone/acss/MainActivity.kt @@ -1,10 +1,20 @@ package com.displaynone.acss import android.os.Bundle +import android.util.Log +import android.view.View import androidx.activity.enableEdgeToEdge +import androidx.annotation.IdRes import androidx.appcompat.app.AppCompatActivity +import androidx.appcompat.widget.Toolbar import androidx.core.view.ViewCompat import androidx.core.view.WindowInsetsCompat +import androidx.navigation.NavController +import androidx.navigation.fragment.NavHostFragment +import androidx.navigation.ui.AppBarConfiguration +import androidx.navigation.ui.NavigationUI +import com.displaynone.acss.components.auth.models.user.UserServiceST +import com.google.android.material.bottomnavigation.BottomNavigationView class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { @@ -16,5 +26,40 @@ class MainActivity : AppCompatActivity() { v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom) insets } + Log.d("123", R.id.action_nav_main_to_nav_profile.toString()) + Log.d("123", R.id.action_nav_main_to_nav_auth.toString()) + + val navController: NavController = this.setupNavigation() + + if(isUserAuthenticated()) { navigateTo(navController, R.id.action_nav_main_to_nav_profile)} else {navigateTo(navController, R.id.action_nav_main_to_nav_auth)} + } + fun navigateTo(navController: NavController, @IdRes actionId: Int) { + navController.navigate(actionId) + } + private fun setupNavigation(): NavController { + val navView = findViewById(R.id.bottom_navigation) + + val toolbar = findViewById(R.id.toolbar); + setSupportActionBar(toolbar) + val navHostFragment = supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as? NavHostFragment + if (navHostFragment == null){ + throw IllegalStateException("NavHostFragment is null") + } + + val navController = navHostFragment.navController + val appBarConfiguration = AppBarConfiguration(setOf(R.id.nav_auth,R.id.nav_scan, R.id.nav_profile, R.id.nav_admin)) + NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration) + NavigationUI.setupWithNavController(navView, navController) + + navController.addOnDestinationChangedListener { _, destination, _ -> + Log.d("Navigate", "Navigate to " + destination.label) + navView.visibility = if (destination.id == R.id.nav_auth) View.GONE else View.VISIBLE + } + + return navController + } + + private fun isUserAuthenticated(): Boolean { + return UserServiceST.getInstance().hasTokens() } } \ No newline at end of file diff --git a/app/src/main/java/com/displaynone/acss/components/auth/models/user/UserServiceST.kt b/app/src/main/java/com/displaynone/acss/components/auth/models/user/UserServiceST.kt index 22e5cb1..b61b63b 100644 --- a/app/src/main/java/com/displaynone/acss/components/auth/models/user/UserServiceST.kt +++ b/app/src/main/java/com/displaynone/acss/components/auth/models/user/UserServiceST.kt @@ -37,6 +37,9 @@ class UserServiceST( } } } + fun hasTokens(): Boolean { + return tokenManager.hasTokens() + } suspend fun getMyLastVisits(pageNum: Int, pageSize: Int): Result> { if (!tokenManager.hasTokens()) { diff --git a/app/src/main/java/com/displaynone/acss/components/auth/models/user/repository/UserRepository.kt b/app/src/main/java/com/displaynone/acss/components/auth/models/user/repository/UserRepository.kt index 18af798..87c3132 100644 --- a/app/src/main/java/com/displaynone/acss/components/auth/models/user/repository/UserRepository.kt +++ b/app/src/main/java/com/displaynone/acss/components/auth/models/user/repository/UserRepository.kt @@ -126,7 +126,7 @@ class UserRepository( runCatching { Log.d("UserRepository", login) val encodedLogin = login.encodeURLPath() - val result = Network.client.get("$serverUrl/api/acs/login/visits/${encodedLogin}?page=$pageNum&size=$pageSize") { + val result = Network.client.get("$serverUrl/api/acs/visits/login/${encodedLogin}?page=$pageNum&size=$pageSize") { headers { append(HttpHeaders.Authorization, "Bearer $token") } diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 3d0ca35..ba770c9 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -7,12 +7,36 @@ android:layout_height="match_parent" tools:context=".MainActivity"> - + android:layout_height="match_parent"> + + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/bottom_nav_menu.xml b/app/src/main/res/menu/bottom_nav_menu.xml index 304e040..74eb0c5 100644 --- a/app/src/main/res/menu/bottom_nav_menu.xml +++ b/app/src/main/res/menu/bottom_nav_menu.xml @@ -1,12 +1,17 @@ - + + diff --git a/app/src/main/res/menu/toolbar.xml b/app/src/main/res/menu/toolbar.xml new file mode 100644 index 0000000..bb1e4d3 --- /dev/null +++ b/app/src/main/res/menu/toolbar.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/navigation/nav_graph.xml b/app/src/main/res/navigation/nav_graph.xml index a01e4ec..aaf755f 100644 --- a/app/src/main/res/navigation/nav_graph.xml +++ b/app/src/main/res/navigation/nav_graph.xml @@ -2,51 +2,63 @@ + app:startDestination="@id/nav_auth"> + app:destination="@id/nav_auth" /> + app:destination="@id/nav_scan" /> + app:destination="@id/nav_admin" /> + + + + + app:destination="@id/nav_profile" /> + android:label="QrScanFragment" > + + + app:destination="@id/nav_profile" /> + app:destination="@id/nav_profile" /> \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f0c6f45..864e61e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -18,6 +18,7 @@ Search Your profile Change rights using smartphone + Admin panel \ No newline at end of file