PixelDroid-App-Android/app/src/main/java/com/h/pixeldroid/LoginActivity.kt

90 lines
2.7 KiB
Kotlin
Raw Normal View History

2020-03-05 19:02:22 +01:00
package com.h.pixeldroid
import android.content.ActivityNotFoundException
import android.content.Context
import android.content.SharedPreferences
2020-03-05 20:36:23 +01:00
import android.net.Uri
2020-03-05 19:02:22 +01:00
import android.os.Bundle
import android.util.Log
2020-03-05 19:02:22 +01:00
import android.view.View
2020-03-05 20:36:23 +01:00
import androidx.appcompat.app.AppCompatActivity
import androidx.browser.customtabs.CustomTabsIntent
2020-03-05 20:36:23 +01:00
import com.h.pixeldroid.api.PixelfedAPI
2020-03-06 08:37:59 +01:00
import com.h.pixeldroid.objects.Application
import kotlinx.android.synthetic.main.activity_login.*
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response
2020-03-05 19:02:22 +01:00
class LoginActivity : AppCompatActivity() {
private lateinit var preferences: SharedPreferences
2020-03-05 19:02:22 +01:00
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_login)
2020-03-05 20:36:23 +01:00
2020-03-05 19:02:22 +01:00
}
fun connexion(view: View) {
val callback = object : Callback<Application> {
override fun onResponse(call: Call<Application>, response: Response<Application>) {
if (!response.isSuccessful) {
// TODO
}
val credentials = response.body()
val clientId = credentials!!.client_id
val clientSecret = credentials.client_secret
val domain = editText.text.toString()
preferences = getSharedPreferences(
"com.h.PixelDroid.pref", Context.MODE_PRIVATE
)
preferences.edit().putString("clientID", clientId)
.putString("clientSecret", clientSecret)
.putString("domain", domain)
.apply()
if (clientId != null) {
redirect(domain, clientId)
}
}
override fun onFailure(call: Call<Application>, t: Throwable) {
}
}
2020-03-05 20:36:23 +01:00
val api = PixelfedAPI.create("https://pixelfed.de")
api.registerApplication(
"pixeldroid",
"oauth2redirect://com.h.pixeldroid", "read write follow"
)
.enqueue(callback)
}
2020-03-05 20:36:23 +01:00
fun redirect(domain: String, client_id: String) {
2020-03-05 20:36:23 +01:00
val url = "https://" + domain + "/oauth/authorize" + "?" +
"client_id" + "=" + client_id + "&" +
"redirect_uri" + "=" + "oauth2redirect://com.h.pixeldroid" + "&" +
"response_type=code" + "&" +
"scope=read write follow"
browser(this, url)
2020-03-05 20:36:23 +01:00
}
2020-03-05 19:02:22 +01:00
fun browser(context: Context, url: String) {
val intent = CustomTabsIntent.Builder().build()
try {
intent.launchUrl(context, Uri.parse(url))
} catch (e: ActivityNotFoundException) {
Log.w("login", "Could not launch browser")
}
2020-03-05 19:02:22 +01:00
}
}