Tochno Last without scroll view with back

This commit is contained in:
shipovnikaaa 2025-02-20 16:50:33 +03:00
parent 5b1b590358
commit 923da6b37e
6 changed files with 91 additions and 13 deletions

View File

@ -23,6 +23,12 @@ interface LoginApi {
@Query("login") login: String
): Response<ResponseBody>
@GET("entries")
suspend fun entries(
@Header("Authorization") authHeader: String,
@Query("login") login: String
): Response<ResponseBody>
@PUT("ban")
suspend fun ban(
@Header("Authorization") authHeader: String,

View File

@ -0,0 +1,11 @@
package ru.myitschool.work.ui.main
import java.time.LocalDateTime
data class EntryClass(
val value: Long = 1,
val type:String= "",
val dateTime:String="",
val login: String =""
)

View File

@ -19,6 +19,11 @@ import ru.myitschool.work.utils.collectWhenStarted
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.google.gson.GsonBuilder
import createAuthHeader
import createRetrofit
import ru.myitschool.work.data.remote.LoginApi
import ru.myitschool.work.data.remote.PersonInfoDto
import ru.myitschool.work.utils.HistoryItem
@AndroidEntryPoint
@ -28,6 +33,9 @@ class MainFragment: Fragment(R.layout.fragment_main) {
private val viewModel: MainViewModel by viewModels()
private val picasso: Picasso by lazy { Picasso.get() }
private val retrofit = createRetrofit("your_username", "your_password")
private val loginApi = retrofit.create(LoginApi::class.java)
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
_binding = FragmentMainBinding.bind(view)
@ -53,16 +61,24 @@ class MainFragment: Fragment(R.layout.fragment_main) {
binding.admin.setOnClickListener {
findNavController().navigate(AdminDestination(user, password))
}
subscribe(username, password)
}
}
subscribe()
}
private fun subscribe() {
private fun subscribe(username:String, password:String) {
viewModel.state.collectWhenStarted(this) { state ->
val recyclerView = binding.recyclerView
// val authHeader = createAuthHeader(username = username, password= password)
// val info = loginApi.entries(authHeader, username)
// val personInfo = info.body()?.let { responseBody ->
// GsonBuilder().create().fromJson(responseBody.string(), PersonInfoDto::class.java)
// }
// println(info)
val examList: MutableList<HistoryItem> = ArrayList()
examList.add(
HistoryItem(
@ -127,7 +143,6 @@ class MainFragment: Fragment(R.layout.fragment_main) {
recyclerView.adapter = adapter
}
}
private fun setError(error: String?) {
val showError = error != null
val views = listOf(binding.fullname, binding.position, binding.lastEntry, binding.photo, binding.logout)

View File

@ -1,11 +1,11 @@
package ru.myitschool.work.ui.main
data class MainState(
val fullName: String = "",
val photo: String = "",
val position: String = "",
val lastVisit: String = "",
val role: String = "",
val isBanned: Boolean = false,
val error: String? = null
val fullName: String = "",
val photo: String = "",
val position: String = "",
val lastVisit: String = "",
val role: String = "",
val isBanned: Boolean = false,
val error: String? = null
)

View File

@ -1,27 +1,29 @@
package ru.myitschool.work.ui.main
import android.content.Context
import android.util.Log
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.google.gson.Gson
import com.google.gson.GsonBuilder
import com.google.gson.reflect.TypeToken
import createAuthHeader
import createRetrofit
import dagger.hilt.android.lifecycle.HiltViewModel
import dagger.hilt.android.qualifiers.ApplicationContext
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch
import kotlinx.serialization.json.JsonObject
import retrofit2.HttpException
import ru.myitschool.work.data.remote.LoginApi
import ru.myitschool.work.data.remote.ErrorDto
import ru.myitschool.work.data.remote.LoginApi
import ru.myitschool.work.data.remote.PersonInfoDto
import ru.myitschool.work.di.AppModule
import java.text.SimpleDateFormat
import javax.inject.Inject
@HiltViewModel
class MainViewModel @Inject constructor(
@ApplicationContext private val context: Context,
@ -79,6 +81,44 @@ class MainViewModel @Inject constructor(
}
}
// fun loadHistory(username: String, password : String): List<EntryClass> {
// viewModelScope.launch {
// try {
// val authHeader = createAuthHeader(username = username, password= password)
// val entries = loginApi.entries(authHeader, username)
//// val personEntries = entries.body()?.let { responseBody ->
//// GsonBuilder().create().fromJson(responseBody.string(), EntryClass::class.java)
//// }
//// val personEntries = Gson().fromJson()
//
// val gson = Gson()
// val listType = object : TypeToken<List<EntryClass>>() {}.type
// val logEntries: List<EntryClass> = gson.fromJson(entries.body()?.string() , listType)
//
//
//// return logEntries
// } catch (httpException: HttpException) {
// try {
// httpException.response()?.errorBody()?.string()?.let { errorString ->
// val gson = GsonBuilder().create()
// val errorDto = gson.fromJson(errorString, ErrorDto::class.java)
// _state.update {
// MainState(
// error = errorDto.error
// )
// }
// }
// } catch (e: Exception) {
// _state.update { MainState(error = httpException.message()) }
// }
// } catch (e: Exception) {
// _state.update { MainState(error = "Unknown error: ${e.message}") }
// }
// }
// }
fun logout(onLogout: () -> Unit) {
viewModelScope.launch {
dataStoreManager.setLastUsername("")

View File

@ -0,0 +1,6 @@
package ru.myitschool.work.ui.main
//data class mainHistory(
// val entr: Lis = "",
// val error: String? = null
//)