далее покажу код как я это делал.)
но я вхожу в приложение без проблем как зареганный пользователь а про токен я забыл когда строил код. как я могу перебилдить код чтобы мог взять токен когда пользователь за логинился в приложение
вот мой interface
kt
@POST("auth")
fun signInUser(@Body authUSer: SignIn): Call<SignIn>
object RetrofitInstance {
val api: Api by lazy {
Retrofit.Builder()
.baseUrl("base_url")
.addConverterFactory(GsonConverterFactory.create())
.build()
.create(Api::class.java)
}
}
это мой ViewModel
private val retrofit = Retrofit.Builder()
.baseUrl("base_url")
.addConverterFactory(GsonConverterFactory.create())
.build()
private val signInApi: Api = retrofit.create(Api::class.java)
private val _signInResult = MutableLiveData<SignInResult>()
val signInResult: LiveData<SignInResult> = _signInResult
fun signIn(studentId: String, password: String) {
val request = SignIn(studentId, password)
signInApi.signInUser(request).enqueue(object : Callback<SignIn> {
override fun onResponse(call: Call<SignIn>, response: Response<SignIn>) {
if (response.isSuccessful) {
val signInResponse = response.body()
_signInResult.value = signInResponse?.let { SignInResult.Success(it) }
} else {
_signInResult.value = SignInResult.Error("Sign-in failed")
}
}
override fun onFailure(call: Call<SignIn>, t: Throwable) {
_signInResult.value = SignInResult.Error("Network error")
}
})
}
а это то что я написал на SignInFragment
val repository = Repository()
val viewModelFactory = ViewModelFactory(repository)
mainViewModel = ViewModelProvider(this, viewModelFactory)[MainViewModel::class.java]
binding.signIn.setOnClickListener {
val studentId = binding.studentIdEt.text.toString()
val password = binding.passwordEt.text.toString()
mainViewModel.signIn(studentId, password)
}
mainViewModel.signInResult.observe(viewLifecycleOwner) { result ->
when (result) {
is SignInResult.Success -> {
findNavController().navigate(R.id.action_signInFragment_to_homeFragment)
}
is SignInResult.Error -> {
val errorMessage = result.message
Toast.makeText(requireContext(), errorMessage, Toast.LENGTH_SHORT).show()
}
}
}
я вот не могу сделать так чтобы токен брать. или мне этот код переделать фулл ?
так как это мой первый раз работы с токеном мне сложно приходиться из за этого попросил кто шарит
Ох тыж... Я не притендую на гуру андроида, но колбэки это мощно... Вот тебе пример как можно сделать: https://github.com/romsper/android-rick-and-morty/blob/single-activity/app/src/main/java/com/romsper/android_rick_and_morty/repository/AppRepository.kt
Обсуждают сегодня