169 похожих чатов

Я пытаюсь выполнить вход (эту логику я уже сделал и

далее покажу код как я это делал.)
но я вхожу в приложение без проблем как зареганный пользователь а про токен я забыл когда строил код. как я могу перебилдить код чтобы мог взять токен когда пользователь за логинился в приложение

вот мой 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()
}
}
}
я вот не могу сделать так чтобы токен брать. или мне этот код переделать фулл ?
так как это мой первый раз работы с токеном мне сложно приходиться из за этого попросил кто шарит

1 ответов

32 просмотра

Ох тыж... Я не притендую на гуру андроида, но колбэки это мощно... Вот тебе пример как можно сделать: https://github.com/romsper/android-rick-and-morty/blob/single-activity/app/src/main/java/com/romsper/android_rick_and_morty/repository/AppRepository.kt

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта