package it.unisannio.ding.ids.wedroid.app.view import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.view.View import android.webkit.URLUtil import android.widget.Toast import it.unisannio.ding.ids.wedroid.app.R import it.unisannio.ding.ids.wedroid.app.util.SharedPreferenceHelper import it.unisannio.ding.ids.wedroid.wrapper.api.LoginService import it.unisannio.ding.ids.wedroid.wrapper.entity.UserPrototype import kotlinx.android.synthetic.main.activity_login.* import retrofit2.Call import retrofit2.Callback import retrofit2.Response import retrofit2.Retrofit import retrofit2.converter.gson.GsonConverterFactory class LoginActivity : AppCompatActivity() { lateinit var sph: SharedPreferenceHelper override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_login) sph = SharedPreferenceHelper(this) setResult(LOGIN_ERROR) val id = sph.userId val token = sph.token val url = sph.baseUrl } fun loginButton(v: View) { if (username.text.isBlank() || instanceServer.text.isBlank() || password.text.isBlank()) { Toast.makeText(this, R.string.login_empty_field, Toast.LENGTH_LONG) .show() return } val userNameText = username.text.toString() val passwordText = password.text.toString() val instanceServerText = instanceServer.text.toString() if (!URLUtil.isValidUrl(instanceServerText)){ Toast.makeText(this, R.string.login_unformed_instance, Toast.LENGTH_LONG) .show() return } val service = Retrofit.Builder() .addConverterFactory(GsonConverterFactory.create()) .baseUrl(instanceServerText) .build() .create(LoginService::class.java) service.login(userNameText, passwordText).enqueue(object : Callback { override fun onFailure(call: Call, t: Throwable) { Toast.makeText( applicationContext, R.string.login_network_error, Toast.LENGTH_LONG ).show() } override fun onResponse(call: Call, response: Response) { if (response.code() != 200) { Toast.makeText( applicationContext, R.string.login_wrong_field, Toast.LENGTH_LONG ).show() return } val users = response.body() sph.baseUrl = instanceServer.text.toString() sph.token = users?.token sph.userId = users?.id Toast.makeText( applicationContext, R.string.login_success, Toast.LENGTH_LONG ).show() setResult(LOGIN_OK) finish() } }) } companion object { const val LOGIN_OK = 0 const val LOGIN_ERROR = 1 } }