2019-12-02 12:30:48 +00:00
|
|
|
package it.unisannio.ding.ids.wedroid.app.view
|
2019-11-26 16:41:00 +00:00
|
|
|
|
|
|
|
import androidx.appcompat.app.AppCompatActivity
|
|
|
|
import android.os.Bundle
|
|
|
|
import android.view.View
|
2020-01-07 09:51:33 +00:00
|
|
|
import android.webkit.URLUtil
|
2019-11-26 16:41:00 +00:00
|
|
|
import android.widget.Toast
|
2019-12-02 12:30:48 +00:00
|
|
|
import it.unisannio.ding.ids.wedroid.app.R
|
2019-11-29 08:51:46 +00:00
|
|
|
import it.unisannio.ding.ids.wedroid.app.util.SharedPreferenceHelper
|
2019-11-26 16:41:00 +00:00
|
|
|
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() {
|
2019-11-29 08:51:46 +00:00
|
|
|
lateinit var sph: SharedPreferenceHelper
|
2019-11-26 16:41:00 +00:00
|
|
|
|
|
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
|
|
super.onCreate(savedInstanceState)
|
|
|
|
setContentView(R.layout.activity_login)
|
2019-11-29 08:51:46 +00:00
|
|
|
sph = SharedPreferenceHelper(this)
|
2019-11-26 16:41:00 +00:00
|
|
|
|
2019-12-02 12:30:48 +00:00
|
|
|
setResult(LOGIN_ERROR)
|
|
|
|
|
2019-11-29 08:51:46 +00:00
|
|
|
val id = sph.userId
|
|
|
|
val token = sph.token
|
|
|
|
val url = sph.baseUrl
|
2019-11-26 16:41:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
fun loginButton(v: View) {
|
2019-12-28 18:39:25 +00:00
|
|
|
if (username.text.isBlank() || instanceServer.text.isBlank() || password.text.isBlank()) {
|
2020-01-07 10:04:15 +00:00
|
|
|
Toast.makeText(this, R.string.login_empty_field, Toast.LENGTH_LONG)
|
2019-11-26 16:41:00 +00:00
|
|
|
.show()
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
val userNameText = username.text.toString()
|
|
|
|
val passwordText = password.text.toString()
|
2020-01-07 09:51:33 +00:00
|
|
|
val instanceServerText = instanceServer.text.toString()
|
|
|
|
|
2020-01-10 15:27:30 +00:00
|
|
|
if (!URLUtil.isValidUrl(instanceServerText)) {
|
2020-01-07 10:04:15 +00:00
|
|
|
Toast.makeText(this, R.string.login_unformed_instance, Toast.LENGTH_LONG)
|
2020-01-07 09:51:33 +00:00
|
|
|
.show()
|
2020-01-07 10:04:15 +00:00
|
|
|
return
|
2020-01-07 09:51:33 +00:00
|
|
|
}
|
2019-11-26 16:41:00 +00:00
|
|
|
|
|
|
|
val service = Retrofit.Builder()
|
|
|
|
.addConverterFactory(GsonConverterFactory.create())
|
2020-01-07 09:51:33 +00:00
|
|
|
.baseUrl(instanceServerText)
|
2019-11-26 16:41:00 +00:00
|
|
|
.build()
|
|
|
|
.create(LoginService::class.java)
|
|
|
|
|
|
|
|
service.login(userNameText, passwordText).enqueue(object : Callback<UserPrototype> {
|
|
|
|
override fun onFailure(call: Call<UserPrototype>, t: Throwable) {
|
|
|
|
Toast.makeText(
|
|
|
|
applicationContext,
|
2020-01-07 10:04:15 +00:00
|
|
|
R.string.login_network_error,
|
2019-11-26 16:41:00 +00:00
|
|
|
Toast.LENGTH_LONG
|
|
|
|
).show()
|
|
|
|
}
|
|
|
|
|
|
|
|
override fun onResponse(call: Call<UserPrototype>, response: Response<UserPrototype>) {
|
2019-11-29 08:51:46 +00:00
|
|
|
|
2020-01-18 11:54:19 +00:00
|
|
|
if (response.code() != HTTP_CODE_OK) {
|
2019-11-26 16:41:00 +00:00
|
|
|
Toast.makeText(
|
|
|
|
applicationContext,
|
2020-01-07 10:04:15 +00:00
|
|
|
R.string.login_wrong_field,
|
2019-11-26 16:41:00 +00:00
|
|
|
Toast.LENGTH_LONG
|
|
|
|
).show()
|
|
|
|
return
|
|
|
|
}
|
2019-11-29 08:51:46 +00:00
|
|
|
val users = response.body()
|
2019-12-28 18:39:25 +00:00
|
|
|
sph.baseUrl = instanceServer.text.toString()
|
2019-11-29 08:51:46 +00:00
|
|
|
sph.token = users?.token
|
|
|
|
sph.userId = users?.id
|
|
|
|
|
2019-11-26 16:41:00 +00:00
|
|
|
Toast.makeText(
|
|
|
|
applicationContext,
|
2020-01-07 10:04:15 +00:00
|
|
|
R.string.login_success,
|
2019-11-26 16:41:00 +00:00
|
|
|
Toast.LENGTH_LONG
|
|
|
|
).show()
|
|
|
|
|
2019-12-02 12:30:48 +00:00
|
|
|
setResult(LOGIN_OK)
|
|
|
|
finish()
|
2019-11-26 16:41:00 +00:00
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
2019-12-02 12:30:48 +00:00
|
|
|
|
|
|
|
companion object {
|
|
|
|
const val LOGIN_OK = 0
|
|
|
|
const val LOGIN_ERROR = 1
|
2020-01-18 11:54:19 +00:00
|
|
|
const val HTTP_CODE_OK = 200
|
2019-12-02 12:30:48 +00:00
|
|
|
}
|
2019-11-26 16:41:00 +00:00
|
|
|
}
|