98 lines
3.1 KiB
Kotlin
98 lines
3.1 KiB
Kotlin
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<UserPrototype> {
|
|
override fun onFailure(call: Call<UserPrototype>, t: Throwable) {
|
|
Toast.makeText(
|
|
applicationContext,
|
|
R.string.login_network_error,
|
|
Toast.LENGTH_LONG
|
|
).show()
|
|
}
|
|
|
|
override fun onResponse(call: Call<UserPrototype>, response: Response<UserPrototype>) {
|
|
|
|
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
|
|
}
|
|
}
|