@ -22,16 +22,13 @@ import android.content.Intent
import android.content.SharedPreferences
import android.content.SharedPreferences
import android.net.Uri
import android.net.Uri
import android.os.Bundle
import android.os.Bundle
import android.preference.PreferenceManager
import androidx.browser.customtabs.CustomTabsIntent
import android.support.customtabs.CustomTabsIntent
import android.support.v7.app.AppCompatActivity
import android.text.method.LinkMovementMethod
import android.text.method.LinkMovementMethod
import android.util.Log
import android.util.Log
import android.view.MenuItem
import android.view.MenuItem
import android.view.View
import android.view.View
import android.widget.EditText
import android.widget.EditText
import android.widget.TextView
import android.widget.TextView
import com.keylesspalace.tusky.db.AccountManager
import com.keylesspalace.tusky.di.Injectable
import com.keylesspalace.tusky.di.Injectable
import com.keylesspalace.tusky.entity.AccessToken
import com.keylesspalace.tusky.entity.AccessToken
import com.keylesspalace.tusky.entity.AppCredentials
import com.keylesspalace.tusky.entity.AppCredentials
@ -46,12 +43,10 @@ import retrofit2.Response
import javax.inject.Inject
import javax.inject.Inject
class LoginActivity : AppCompat Activity( ) , Injectable {
class LoginActivity : Base Activity( ) , Injectable {
@Inject
@Inject
lateinit var mastodonApi : MastodonApi
lateinit var mastodonApi : MastodonApi
@Inject
lateinit var accountManager : AccountManager
private lateinit var preferences : SharedPreferences
private lateinit var preferences : SharedPreferences
private var domain : String = " "
private var domain : String = " "
@ -68,13 +63,6 @@ class LoginActivity : AppCompatActivity(), Injectable {
override fun onCreate ( savedInstanceState : Bundle ? ) {
override fun onCreate ( savedInstanceState : Bundle ? ) {
super . onCreate ( savedInstanceState )
super . onCreate ( savedInstanceState )
preferences = PreferenceManager . getDefaultSharedPreferences ( this )
val theme = preferences . getString ( " appTheme " , ThemeUtils . APP _THEME _DEFAULT )
if ( theme == " black " ) {
setTheme ( R . style . TuskyBlackTheme )
}
ThemeUtils . setAppNightMode ( theme , this )
setContentView ( R . layout . activity _login )
setContentView ( R . layout . activity _login )
if ( savedInstanceState != null ) {
if ( savedInstanceState != null ) {
@ -107,6 +95,10 @@ class LoginActivity : AppCompatActivity(), Injectable {
}
}
override fun requiresLogin ( ) : Boolean {
return false
}
override fun finish ( ) {
override fun finish ( ) {
super . finish ( )
super . finish ( )
if ( isAdditionalLogin ( ) ) {
if ( isAdditionalLogin ( ) ) {
@ -144,7 +136,7 @@ class LoginActivity : AppCompatActivity(), Injectable {
HttpUrl . Builder ( ) . host ( domain ) . scheme ( " https " ) . build ( )
HttpUrl . Builder ( ) . host ( domain ) . scheme ( " https " ) . build ( )
} catch ( e : IllegalArgumentException ) {
} catch ( e : IllegalArgumentException ) {
setLoading ( false )
setLoading ( false )
domainEdit Text . error = getString ( R . string . error _invalid _domain )
domainTextInputLayou t . error = getString ( R . string . error _invalid _domain )
return
return
}
}
@ -153,7 +145,7 @@ class LoginActivity : AppCompatActivity(), Injectable {
response : Response < AppCredentials > ) {
response : Response < AppCredentials > ) {
if ( ! response . isSuccessful ) {
if ( ! response . isSuccessful ) {
loginButton . isEnabled = true
loginButton . isEnabled = true
domainEdit Text . error = getString ( R . string . error _failed _app _registration )
domainTextInputLayou t . error = getString ( R . string . error _failed _app _registration )
setLoading ( false )
setLoading ( false )
Log . e ( TAG , " App authentication failed. " + response . message ( ) )
Log . e ( TAG , " App authentication failed. " + response . message ( ) )
return
return
@ -167,7 +159,7 @@ class LoginActivity : AppCompatActivity(), Injectable {
override fun onFailure ( call : Call < AppCredentials > , t : Throwable ) {
override fun onFailure ( call : Call < AppCredentials > , t : Throwable ) {
loginButton . isEnabled = true
loginButton . isEnabled = true
domainEdit Text . error = getString ( R . string . error _failed _app _registration )
domainTextInputLayou t . error = getString ( R . string . error _failed _app _registration )
setLoading ( false )
setLoading ( false )
Log . e ( TAG , Log . getStackTraceString ( t ) )
Log . e ( TAG , Log . getStackTraceString ( t ) )
}
}
@ -243,7 +235,7 @@ class LoginActivity : AppCompatActivity(), Injectable {
onLoginSuccess ( response . body ( ) !! . accessToken )
onLoginSuccess ( response . body ( ) !! . accessToken )
} else {
} else {
setLoading ( false )
setLoading ( false )
domainEdit Text . error = getString ( R . string . error _retrieving _oauth _token )
domainTextInputLayou t . error = getString ( R . string . error _retrieving _oauth _token )
Log . e ( TAG , String . format ( " %s %s " ,
Log . e ( TAG , String . format ( " %s %s " ,
getString ( R . string . error _retrieving _oauth _token ) ,
getString ( R . string . error _retrieving _oauth _token ) ,
response . message ( ) ) )
response . message ( ) ) )
@ -252,7 +244,7 @@ class LoginActivity : AppCompatActivity(), Injectable {
override fun onFailure ( call : Call < AccessToken > , t : Throwable ) {
override fun onFailure ( call : Call < AccessToken > , t : Throwable ) {
setLoading ( false )
setLoading ( false )
domainEdit Text . error = getString ( R . string . error _retrieving _oauth _token )
domainTextInputLayou t . error = getString ( R . string . error _retrieving _oauth _token )
Log . e ( TAG , String . format ( " %s %s " ,
Log . e ( TAG , String . format ( " %s %s " ,
getString ( R . string . error _retrieving _oauth _token ) ,
getString ( R . string . error _retrieving _oauth _token ) ,
t . message ) )
t . message ) )
@ -265,14 +257,14 @@ class LoginActivity : AppCompatActivity(), Injectable {
/ * Authorization failed . Put the error response where the user can read it and they
/ * Authorization failed . Put the error response where the user can read it and they
* can try again . * /
* can try again . * /
setLoading ( false )
setLoading ( false )
domainEdit Text . error = getString ( R . string . error _authorization _denied )
domainTextInputLayou t . error = getString ( R . string . error _authorization _denied )
Log . e ( TAG , String . format ( " %s %s " ,
Log . e ( TAG , String . format ( " %s %s " ,
getString ( R . string . error _authorization _denied ) ,
getString ( R . string . error _authorization _denied ) ,
error ) )
error ) )
} else {
} else {
// This case means a junk response was received somehow.
// This case means a junk response was received somehow.
setLoading ( false )
setLoading ( false )
domainEdit Text . error = getString ( R . string . error _authorization _unknown )
domainTextInputLayou t . error = getString ( R . string . error _authorization _unknown )
}
}
} else {
} else {
// first show or user cancelled login
// first show or user cancelled login