wedroid/app/src/main/java/it/unisannio/ding/ids/wedroid/app/view/LoginActivity.kt

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
}
}