MainActivity.kt 4.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. package ru.loparev.rmp
  2. import android.content.Intent
  3. import androidx.appcompat.app.AppCompatActivity
  4. import android.os.Bundle
  5. import android.util.Log
  6. import android.view.View
  7. import android.widget.Toast
  8. import androidx.appcompat.app.AlertDialog
  9. import kotlinx.android.synthetic.main.activity_signin.*
  10. import retrofit2.*
  11. import retrofit2.converter.gson.GsonConverterFactory
  12. import ru.loparev.rmp.api.Api
  13. import ru.loparev.rmp.models.ResponseBody
  14. import ru.loparev.rmp.models.UserLogin
  15. class MainActivity : AppCompatActivity() {
  16. //создается активность
  17. override fun onCreate(savedInstanceState: Bundle?) {
  18. super.onCreate(savedInstanceState)
  19. //назначается xml активности
  20. setContentView(R.layout.activity_signin)
  21. //установка основной темы приложения
  22. // Thread.sleep(3000)
  23. setTheme(R.style.AppTheme)
  24. }
  25. fun createNewAccount(view: View) {
  26. val intent = Intent(this, SingUpActivity::class.java)
  27. startActivity(intent)
  28. }
  29. //Функция, реализующая всплывающее сообщение
  30. fun showMessage(title: String?, Message: String?) {
  31. val builder = AlertDialog.Builder(this)
  32. builder.setTitle(title)
  33. builder.setMessage(Message)
  34. builder.setIcon(R.drawable.iconpassword)
  35. builder.show()
  36. }
  37. //Функция входа в приложение
  38. fun buttonSingIn(view: View) {
  39. //получаем логин и пароль из текстовых полей
  40. val login = editTextSingInPersonName.text
  41. val password = editSingInTextPassword.text
  42. //Создаем конструктор Retrofit с параметрами URL и указываем типа конвертера данных
  43. val retrofit = Retrofit.Builder()
  44. .baseUrl("http://cars.areas.su/")
  45. .addConverterFactory(GsonConverterFactory.create())
  46. .build()
  47. //Создаем экземпля retrofit и указываем интерфейс для запрооса
  48. val postLoginAPI = retrofit.create(Api.GetTokenLogIn::class.java)
  49. //Вызываем функцию из интерфейса и передаем ей логин и пароль
  50. val call = postLoginAPI?.login(UserLogin(login.toString(), password.toString()))
  51. //асинхронно выполняем запрос
  52. call?.enqueue(object : Callback<ResponseBody> {
  53. //если ответ успешен
  54. override fun onResponse(p0: Call<ResponseBody>?, p1: Response<ResponseBody>?) {
  55. //если ответ не пустой
  56. if (p1 != null) {
  57. //если ответ: Пользователь в системе, или выдается токен открываем активность карты
  58. if (p1.body().notice["answer"] == "User is active" || p1.body().notice.containsKey(
  59. "token"
  60. )
  61. ) {
  62. //Создаем намерение (соединяем нашу активность и активность с картой)
  63. val intent = Intent(this@MainActivity, MapsActivity::class.java)
  64. //Открываем активность карты
  65. startActivity(intent)
  66. //Протоколируем в терминал
  67. Log.d("TAG1", "ACTIVE!")
  68. } else {
  69. //сообщение об ошибке
  70. Toast.makeText(this@MainActivity, p1.body().notice["answer"] , Toast.LENGTH_SHORT).show()
  71. }
  72. }
  73. }
  74. override fun onFailure(p0: Call<ResponseBody>?, p1: Throwable?) {
  75. //действия при ошибках с сетью
  76. Log.d("TAG1", p0.toString())
  77. }
  78. }
  79. )
  80. }
  81. }