2020-03-05 19:02:22 +01:00
|
|
|
package com.h.pixeldroid
|
|
|
|
|
2020-03-05 22:46:40 +01:00
|
|
|
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
|
2020-03-05 22:46:40 +01:00
|
|
|
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
|
2020-03-05 22:46:40 +01:00
|
|
|
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
|
2020-03-05 22:46:40 +01:00
|
|
|
import kotlinx.android.synthetic.main.activity_login.*
|
|
|
|
import retrofit2.Call
|
|
|
|
import retrofit2.Callback
|
|
|
|
import retrofit2.Response
|
2020-03-05 19:02:22 +01:00
|
|
|
|
2020-03-05 22:46:40 +01:00
|
|
|
class Login : 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) {
|
2020-03-05 22:46:40 +01:00
|
|
|
|
|
|
|
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")
|
2020-03-05 22:46:40 +01:00
|
|
|
api.registerApplication(
|
|
|
|
"pixeldroid",
|
|
|
|
"oauth2redirect://com.h.pixeldroid", "read write follow"
|
|
|
|
)
|
|
|
|
.enqueue(callback)
|
|
|
|
|
|
|
|
}
|
2020-03-05 20:36:23 +01:00
|
|
|
|
2020-03-05 22:46:40 +01:00
|
|
|
fun redirect(domain: String, client_id: String) {
|
2020-03-05 20:36:23 +01:00
|
|
|
|
2020-03-05 22:46:40 +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
|
|
|
|
2020-03-05 22:46:40 +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
|
|
|
}
|
|
|
|
}
|