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/java/com/displaynone/acss/ui/auth/AuthFragment.kt b/app/src/main/java/com/displaynone/acss/ui/auth/AuthFragment.kt index 9b39383..f351bd7 100644 --- a/app/src/main/java/com/displaynone/acss/ui/auth/AuthFragment.kt +++ b/app/src/main/java/com/displaynone/acss/ui/auth/AuthFragment.kt @@ -1,6 +1,7 @@ package com.displaynone.acss.ui.auth import android.annotation.SuppressLint +import android.graphics.drawable.TransitionDrawable import android.os.Bundle import android.text.Editable import android.text.TextWatcher @@ -28,7 +29,6 @@ class AuthFragment: Fragment(R.layout.fragment_auth) { super.onViewCreated(view, savedInstanceState) _binding = FragmentAuthBinding.bind(view) setupLoginButton() - viewModel.action.collectWithLifecycle(this) { action -> if (action is Action.GotoProfile) { blockLoginButton() // FIXME() При двойном нажатии вылетает с ошибкой diff --git a/app/src/main/res/drawable/animated_gradient.xml b/app/src/main/res/drawable/animated_gradient.xml new file mode 100644 index 0000000..d856bbf --- /dev/null +++ b/app/src/main/res/drawable/animated_gradient.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/gradient_1.xml b/app/src/main/res/drawable/gradient_1.xml new file mode 100644 index 0000000..9e41d93 --- /dev/null +++ b/app/src/main/res/drawable/gradient_1.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/gradient_2.xml b/app/src/main/res/drawable/gradient_2.xml new file mode 100644 index 0000000..54ac988 --- /dev/null +++ b/app/src/main/res/drawable/gradient_2.xml @@ -0,0 +1,7 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 3d0ca35..157dd62 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -7,12 +7,37 @@ android:layout_height="match_parent" tools:context=".MainActivity"> - + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_admin.xml b/app/src/main/res/layout/fragment_admin.xml index 62ecc25..76afdc5 100644 --- a/app/src/main/res/layout/fragment_admin.xml +++ b/app/src/main/res/layout/fragment_admin.xml @@ -69,6 +69,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="15dp" + android:maxLines="1" android:hint="@string/login" diff --git a/app/src/main/res/layout/fragment_auth.xml b/app/src/main/res/layout/fragment_auth.xml index b7e1c9a..55f4d73 100644 --- a/app/src/main/res/layout/fragment_auth.xml +++ b/app/src/main/res/layout/fragment_auth.xml @@ -18,6 +18,7 @@ android:paddingTop="50dp"> @@ -63,6 +65,8 @@ + + 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