This commit is contained in:
v228a 2025-02-20 16:01:03 +03:00
parent 4dafc261ef
commit eef34f19f8
8 changed files with 242 additions and 37 deletions

View File

@ -0,0 +1,18 @@
package ru.myitschool.work.domain.profile
import ru.myitschool.work.domain.auth.GetLoginUseCase
import ru.myitschool.work.domain.profile.entities.UserInfoEntity
import ru.myitschool.work.domain.profile.repo.UserInfoRepository
import javax.inject.Inject
class AdminGetUserInfo @Inject constructor(
private val repo: UserInfoRepository,
private val getLoginUseCase: GetLoginUseCase,
) {
suspend operator fun invoke(): Result<UserInfoEntity> {
return getLoginUseCase().fold(
onSuccess = { basicAuth -> repo.getInfo(basicAuth) },
onFailure = { error -> Result.failure(error) }
)
}
}

View File

@ -0,0 +1,9 @@
package ru.myitschool.work.domain.profile.repo
import ru.myitschool.work.domain.profile.entities.UserInfoEntity
interface AdminInfoEntity {
suspend fun getInfoUser(basicAuth: String,userName: String) : Result<UserInfoEntity>
suspend fun changeStateUser(basicAuth: String,userName: String) : Result<Unit>
}

View File

@ -23,8 +23,6 @@ import ru.myitschool.work.ui.searchuser.SearchUserDestination
import ru.myitschool.work.ui.searchuser.SearchUserFragment import ru.myitschool.work.ui.searchuser.SearchUserFragment
import ru.myitschool.work.ui.splash.SplashDestination import ru.myitschool.work.ui.splash.SplashDestination
import ru.myitschool.work.ui.splash.SplashFragment import ru.myitschool.work.ui.splash.SplashFragment
import ru.myitschool.work.ui.userInfo.UserInfoDestination
import ru.myitschool.work.ui.userInfo.UserInfoFragment
@AndroidEntryPoint @AndroidEntryPoint
class RootActivity : AppCompatActivity() { class RootActivity : AppCompatActivity() {

View File

@ -53,7 +53,7 @@ class SearchUserFragment : Fragment(R.layout.fragment_search_user) {
} }
} }
is SearchUserViewModel.Action.OpenInfo ->{ is SearchUserViewModel.Action.OpenInfo ->{
//TODO отобразить инфу о юзере binding.cardViewUser?.visibility = View.VISIBLE
} }
} }
@ -70,11 +70,11 @@ class SearchUserFragment : Fragment(R.layout.fragment_search_user) {
is SearchUserViewModel.State.Error -> { is SearchUserViewModel.State.Error -> {
// Set error text // Set error text
binding.error?.text = state.errorText.localizedMessage binding.error?.text = state.errorText.localizedMessage
binding.cardViewUser?.visibility = View.GONE
// binding.loading?.visibility = View.GONE // binding.loading?.visibility = View.GONE
} }
is SearchUserViewModel.State.Loading -> { is SearchUserViewModel.State.Loading -> {
// Additional logic can be added here if needed binding.cardViewUser?.visibility = View.GONE
// binding.loading?.visibility = View.VISIBLE
} }
} }
} }

View File

@ -12,6 +12,7 @@ import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.flow.update import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import ru.myitschool.work.R import ru.myitschool.work.R
import ru.myitschool.work.ui.login.LoginViewModel.State
import ru.myitschool.work.utils.MutablePublishFlow import ru.myitschool.work.utils.MutablePublishFlow
import javax.inject.Inject import javax.inject.Inject
@ -46,9 +47,9 @@ class SearchUserViewModel @Inject constructor(
fun searchUser(userName: String) { fun searchUser(userName: String) {
viewModelScope.launch { viewModelScope.launch {
setLoadingState() _state.update { State.Loading }
// Simulating delay for data retrieval // Simulating delay for data retrieval
kotlinx.coroutines.delay(1000) // Delay for 1 second
// Mock user check // Mock user check
val existingUsers = listOf("user1", "user2", "user3") // Mock users val existingUsers = listOf("user1", "user2", "user3") // Mock users

View File

@ -1,26 +1,28 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"> xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<ProgressBar <!-- <ProgressBar-->
android:id="@+id/progressBar" <!-- android:id="@+id/loading"-->
style="?android:attr/progressBarStyle" <!-- android:layout_width="wrap_content"-->
android:layout_width="wrap_content" <!-- android:layout_height="wrap_content"-->
android:layout_height="wrap_content" <!-- android:visibility="gone"-->
android:progressTint="@color/AccentBlue" <!-- app:layout_constraintBottom_toBottomOf="parent"-->
android:visibility="gone" <!-- app:layout_constraintEnd_toEndOf="parent"-->
app:layout_constraintBottom_toBottomOf="parent" <!-- app:layout_constraintStart_toStartOf="parent"-->
app:layout_constraintEnd_toEndOf="parent" <!-- app:layout_constraintTop_toTopOf="parent" />-->
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<LinearLayout <LinearLayout
android:id="@+id/dashboard"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp" android:padding="16dp"
android:orientation="vertical"> android:visibility="visible">
<com.google.android.material.floatingactionbutton.FloatingActionButton <com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/floatingActionButton2" android:id="@+id/floatingActionButton2"
style="@style/Theme.UiTemplate.FAB.Gray" style="@style/Theme.UiTemplate.FAB.Gray"
@ -30,41 +32,134 @@
android:src="@drawable/ic_back" android:src="@drawable/ic_back"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<TextView <TextView
android:id="@+id/text_login" android:id="@+id/text_login"
android:padding="35dp"
style="@style/Theme.UiTemplate.TextH1" style="@style/Theme.UiTemplate.TextH1"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_marginBottom="10dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center"
android:layout_gravity="center" android:layout_gravity="center"
android:layout_marginBottom="10dp"
android:gravity="center"
android:padding="35dp"
android:text="@string/admin_main" /> android:text="@string/admin_main" />
<com.google.android.material.textfield.TextInputLayout <com.google.android.material.textfield.TextInputLayout
style="@style/Theme.UiTemplate.Input"
android:id="@+id/input_username" android:id="@+id/input_username"
style="@style/Theme.UiTemplate.Input"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="58dp"
android:layout_marginTop="45dp"
app:errorEnabled="false"
app:layout_constraintWidth_max="400dp" app:layout_constraintWidth_max="400dp"
app:layout_constraintWidth_percent="0.8" app:layout_constraintWidth_percent="0.8">
android:layout_height="58dp">
<com.google.android.material.textfield.TextInputEditText <com.google.android.material.textfield.TextInputEditText
android:id="@+id/username" android:id="@+id/username"
style="@style/Theme.UiTemplate.Input.Text" style="@style/Theme.UiTemplate.Input.Text"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="60dp" android:layout_height="60dp"
android:hint="@string/admin_input_hint"
android:inputType="text" android:inputType="text"
android:maxLines="1" android:maxLines="1"></com.google.android.material.textfield.TextInputEditText>
android:hint="@string/admin_input_hint">
</com.google.android.material.textfield.TextInputEditText>
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
<Button <Button
android:id="@+id/login" android:id="@+id/login"
style="@style/Theme.UiTemplate.Button"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
style="@style/Theme.UiTemplate.Button"
android:layout_marginTop="28dp"
android:layout_gravity="center" android:layout_gravity="center"
android:layout_marginTop="16dp"
android:text="@string/admin_button" /> android:text="@string/admin_button" />
<TextView
android:id="@+id/error"
style="@style/Theme.UiTemplate.TextH4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:textColor="@color/ErrorRed"
android:visibility="gone" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="16dp">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="horizontal">
<androidx.cardview.widget.CardView
android:id="@+id/photo2"
android:layout_width="120dp"
android:layout_height="120dp"
android:layout_margin="5dp"
android:elevation="10dp"
app:cardCornerRadius="12dp">
<com.google.android.material.imageview.ShapeableImageView
android:id="@+id/photo"
style="@style/roundedImageView"
android:layout_width="120dp"
android:layout_height="120dp"
android:layout_marginBottom="16dp"
android:contentDescription="@null"
tools:src="@tools:sample/avatars" />
</androidx.cardview.widget.CardView>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/fullname"
style="@style/Theme.UiTemplate.TextH3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginHorizontal="16dp"
android:layout_marginTop="16dp"
android:textAlignment="center"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/photo2"
tools:text="@tools:sample/full_names" />
<TextView
android:id="@+id/position"
style="@style/Theme.UiTemplate.TextH4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="16dp"
tools:text="@tools:sample/cities" />
<TextView
android:id="@+id/lastEntry"
style="@style/Theme.UiTemplate.TextH4_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginHorizontal="16dp"
android:layout_marginTop="16dp"
tools:text="@tools:sample/date/hhmm" />
</LinearLayout>
</LinearLayout>
<Button
android:id="@+id/block"
style="@style/Theme.UiTemplate.OutlineButton.Error"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="50dp"
android:text="@string/admin_block" />
</LinearLayout>
</LinearLayout> </LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout> </ScrollView>

View File

@ -1,8 +1,9 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"> xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<!-- <ProgressBar--> <!-- <ProgressBar-->
<!-- android:id="@+id/loading"--> <!-- android:id="@+id/loading"-->
@ -69,7 +70,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" android:layout_gravity="center"
android:layout_marginTop="58dp" android:layout_marginTop="16dp"
android:text="@string/admin_button" /> android:text="@string/admin_button" />
<TextView <TextView
@ -80,5 +81,87 @@
android:layout_marginTop="16dp" android:layout_marginTop="16dp"
android:textColor="@color/ErrorRed" android:textColor="@color/ErrorRed"
android:visibility="gone" /> android:visibility="gone" />
<LinearLayout
android:id="@+id/cardViewUser"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="16dp"
android:visibility="gone">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="horizontal">
<androidx.cardview.widget.CardView
android:id="@+id/photo2"
android:layout_width="120dp"
android:layout_height="120dp"
android:layout_margin="5dp"
android:elevation="10dp"
app:cardCornerRadius="12dp">
<com.google.android.material.imageview.ShapeableImageView
android:id="@+id/photo"
style="@style/roundedImageView"
android:layout_width="120dp"
android:layout_height="120dp"
android:layout_marginBottom="16dp"
android:contentDescription="@null"
tools:src="@tools:sample/avatars" />
</androidx.cardview.widget.CardView>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/fullname"
style="@style/Theme.UiTemplate.TextH3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginHorizontal="16dp"
android:layout_marginTop="16dp"
android:textAlignment="center"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/photo2"
tools:text="@tools:sample/full_names" />
<TextView
android:id="@+id/position"
style="@style/Theme.UiTemplate.TextH4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="16dp"
tools:text="@tools:sample/cities" />
<TextView
android:id="@+id/lastEntry"
style="@style/Theme.UiTemplate.TextH4_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginHorizontal="16dp"
android:layout_marginTop="16dp"
tools:text="@tools:sample/date/hhmm" />
</LinearLayout>
</LinearLayout>
<Button
android:id="@+id/block"
style="@style/Theme.UiTemplate.OutlineButton.Error"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="50dp"
android:text="@string/admin_block" />
</LinearLayout>
</LinearLayout> </LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout> </ScrollView>

View File

@ -4,5 +4,6 @@
<item name="cornerFamily">rounded</item> <item name="cornerFamily">rounded</item>
<item name="cornerSize">20dp</item> <item name="cornerSize">20dp</item>
<item name="cornerRadius">50dp</item> <item name="cornerRadius">50dp</item>
<item name="elevation">0dp</item>
</style> </style>
</resources> </resources>