Привязка поиска для админа

This commit is contained in:
v228a 2025-02-19 18:19:49 +03:00
parent 4fb96e6a9c
commit ffe93368ef
8 changed files with 128 additions and 61 deletions

View File

@ -19,6 +19,8 @@ import ru.myitschool.work.ui.qr.result.QrResultDestination
import ru.myitschool.work.ui.qr.result.QrResultFragment
import ru.myitschool.work.ui.qr.scan.QrScanDestination
import ru.myitschool.work.ui.qr.scan.QrScanFragment
import ru.myitschool.work.ui.searchuser.SearchUserDestination
import ru.myitschool.work.ui.searchuser.SearchUserFragment
import ru.myitschool.work.ui.splash.SplashDestination
import ru.myitschool.work.ui.splash.SplashFragment
@ -42,6 +44,7 @@ class RootActivity : AppCompatActivity() {
fragment<QrResultFragment, QrResultDestination>()
fragment<QrScanFragment, QrScanDestination>()
fragment<EntryListFragment, EntryListDestination>()
fragment<SearchUserFragment, SearchUserDestination>()
}
}

View File

@ -15,6 +15,8 @@ import ru.myitschool.work.ui.entrylist.EntryListDestination
import ru.myitschool.work.ui.login.LoginDestination
import ru.myitschool.work.ui.qr.result.QrResultDestination
import ru.myitschool.work.ui.qr.scan.QrScanDestination
import ru.myitschool.work.ui.searchuser.SearchUserDestination
import ru.myitschool.work.ui.searchuser.SearchUserFragment
import ru.myitschool.work.utils.collectWhenStarted
import ru.myitschool.work.utils.visibleOrGone
@ -59,11 +61,12 @@ class ProfileFragment : Fragment(R.layout.fragment_profile) {
swipeRefreshLayout.isRefreshing = false
binding.position.text = state.position
binding.lastEntry.text = state.lastEntry
binding.fullname.text = state.fullname
if (state.admin){
//TODO Приделать админские штучки
binding.fullname.text = state.fullname + " admin"
binding.admin.visibility = View.VISIBLE
}else{
binding.fullname.text = state.fullname
binding.admin.visibility = View.GONE
}
Picasso.get()
.load(state.imageUrl)
@ -94,6 +97,12 @@ class ProfileFragment : Fragment(R.layout.fragment_profile) {
}
}
is ProfileViewModel.Action.OpenSearch -> {
findNavController().navigate(SearchUserDestination) {
popUpTo<SearchUserFragment> { inclusive = true }
}
}
}
}
}
@ -102,6 +111,7 @@ class ProfileFragment : Fragment(R.layout.fragment_profile) {
binding.logout.setOnClickListener { viewModel.clickLogout() }
binding.scan.setOnClickListener { viewModel.clickScan() }
binding.entryList.setOnClickListener{ viewModel.clickLog()}
binding.admin.setOnClickListener { viewModel.clickSearch() }
}
override fun onDestroyView() {

View File

@ -55,6 +55,11 @@ class ProfileViewModel @Inject constructor(
_action.emit(Action.OpenScan)
}
}
fun clickSearch(){
viewModelScope.launch {
_action.emit(Action.OpenSearch)
}
}
fun updateUserInfo() {
viewModelScope.launch {
@ -67,7 +72,7 @@ class ProfileViewModel @Inject constructor(
imageUrl = value.imageUrl,
position = value.position,
lastEntry = simpleDateFormat.format(Date(value.lastEntryMillis)),
admin = false
admin = true
)
}
},
@ -102,6 +107,7 @@ class ProfileViewModel @Inject constructor(
data object OpenLogin : Action
data object OpenScan : Action
data object OpenLog : Action
data object OpenSearch : Action
}
companion object {

View File

@ -0,0 +1,6 @@
package ru.myitschool.work.ui.searchuser
import kotlinx.serialization.Serializable
@Serializable
data object SearchUserDestination

View File

@ -0,0 +1,28 @@
package ru.myitschool.work.ui.searchuser
import androidx.fragment.app.viewModels
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.serialization.Serializable
import ru.myitschool.work.R
@Serializable
@AndroidEntryPoint
class SearchUserFragment : Fragment(R.layout.fragment_search_user) {
companion object {
fun newInstance() = SearchUserFragment()
}
private val viewModel: SearchUserViewModel by viewModels()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// TODO: Use the ViewModel
}
}

View File

@ -0,0 +1,14 @@
package ru.myitschool.work.ui.searchuser
import android.content.Context
import androidx.lifecycle.ViewModel
import dagger.hilt.android.lifecycle.HiltViewModel
import dagger.hilt.android.qualifiers.ApplicationContext
import javax.inject.Inject
@HiltViewModel
class SearchUserViewModel @Inject constructor(
@ApplicationContext private val context: Context,
) : ViewModel() {
// TODO: Implement the ViewModel
}

View File

@ -1,58 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp"
android:orientation="vertical">
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/floatingActionButton2"
style="@style/Theme.UiTemplate.FAB.Gray"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="true"
android:src="@drawable/ic_back"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/text_login"
android:padding="35dp"
style="@style/Theme.UiTemplate.TextH1"
android:layout_width="wrap_content"
android:layout_marginBottom="10dp"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_gravity="center"
android:text="@string/admin_main" />
<com.google.android.material.textfield.TextInputLayout
style="@style/Theme.UiTemplate.Input"
android:id="@+id/input_username"
android:layout_marginTop="45dp"
android:layout_width="match_parent"
app:layout_constraintWidth_max="400dp"
app:layout_constraintWidth_percent="0.8"
android:layout_height="58dp">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/username"
style="@style/Theme.UiTemplate.Input.Text"
android:layout_width="match_parent"
android:layout_height="60dp"
android:inputType="text"
android:maxLines="1"
android:hint="@string/admin_input_hint">
</com.google.android.material.textfield.TextInputEditText>
</com.google.android.material.textfield.TextInputLayout>
<Button
android:id="@+id/login"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/Theme.UiTemplate.Button"
android:layout_marginTop="58dp"
android:layout_gravity="center"
android:text="@string/admin_button" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp"
android:orientation="vertical">
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/floatingActionButton2"
style="@style/Theme.UiTemplate.FAB.Gray"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="true"
android:src="@drawable/ic_back"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/text_login"
android:padding="35dp"
style="@style/Theme.UiTemplate.TextH1"
android:layout_width="wrap_content"
android:layout_marginBottom="10dp"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_gravity="center"
android:text="@string/admin_main" />
<com.google.android.material.textfield.TextInputLayout
style="@style/Theme.UiTemplate.Input"
android:id="@+id/input_username"
android:layout_marginTop="45dp"
android:layout_width="match_parent"
app:layout_constraintWidth_max="400dp"
app:layout_constraintWidth_percent="0.8"
android:layout_height="58dp">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/username"
style="@style/Theme.UiTemplate.Input.Text"
android:layout_width="match_parent"
android:layout_height="60dp"
android:inputType="text"
android:maxLines="1"
android:hint="@string/admin_input_hint">
</com.google.android.material.textfield.TextInputEditText>
</com.google.android.material.textfield.TextInputLayout>
<Button
android:id="@+id/login"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/Theme.UiTemplate.Button"
android:layout_marginTop="58dp"
android:layout_gravity="center"
android:text="@string/admin_button" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>