Browse Source

LoginActivity: startActivityForResult deprecated.

Migrate startActivityForResult/onActivityResult to
StartActivityForResult/registerForActivityResult in
LoginActivity/OAuth.

This moves responsibility for scheduling the starting Intent from
OAuth to LoginActivity.

OAuth still generates the Intent.  But instead of starting the intent
directly in OAuth, the intent is returned to LoginActivity.  This
better associates processing the activity result with its invocation.

OAuthTest module updated to accommodate internal API change.
technical/upgrade-appcompat-1.5.x
Hugh Daschbach 2 years ago committed by Ryan Harg
parent
commit
bea1d1f397
No known key found for this signature in database
GPG Key ID: 89106F3A84E6958C
  1. 16
      app/src/main/java/audio/funkwhale/ffa/activities/LoginActivity.kt
  2. 7
      app/src/main/java/audio/funkwhale/ffa/utils/OAuth.kt
  3. 7
      app/src/test/java/audio/funkwhale/ffa/utils/OAuthTest.kt

16
app/src/main/java/audio/funkwhale/ffa/activities/LoginActivity.kt

@ -5,6 +5,7 @@ import android.content.res.Configuration @@ -5,6 +5,7 @@ import android.content.res.Configuration
import android.net.Uri
import android.os.Bundle
import android.view.ViewGroup
import androidx.activity.result.contract.ActivityResultContracts.StartActivityForResult
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.doOnLayout
import androidx.lifecycle.lifecycleScope
@ -40,13 +41,10 @@ class LoginActivity : AppCompatActivity() { @@ -40,13 +41,10 @@ class LoginActivity : AppCompatActivity() {
limitContainerWidth()
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
data?.let {
when (requestCode) {
0 -> {
oAuth.exchange(this, data) {
private var resultLauncher =
registerForActivityResult(StartActivityForResult()) { result ->
result.data?.let {
oAuth.exchange(this, it) {
PowerPreference
.getFileByName(AppContext.PREFS_CREDENTIALS)
.setBoolean("anonymous", false)
@ -62,8 +60,6 @@ class LoginActivity : AppCompatActivity() { @@ -62,8 +60,6 @@ class LoginActivity : AppCompatActivity() {
}
}
}
}
}
override fun onResume() {
super.onResume()
@ -134,7 +130,7 @@ class LoginActivity : AppCompatActivity() { @@ -134,7 +130,7 @@ class LoginActivity : AppCompatActivity() {
oAuth.init(hostname)
return oAuth.register {
PowerPreference.getFileByName(AppContext.PREFS_CREDENTIALS).setString("hostname", hostname)
oAuth.authorize(this)
resultLauncher.launch(oAuth.authorizeIntent(this))
}
}

7
app/src/main/java/audio/funkwhale/ffa/utils/OAuth.kt

@ -184,11 +184,10 @@ class OAuth(private val authorizationServiceFactory: AuthorizationServiceFactory @@ -184,11 +184,10 @@ class OAuth(private val authorizationServiceFactory: AuthorizationServiceFactory
)
}
fun authorize(activity: Activity) {
fun authorizeIntent(activity: Activity): Intent? {
val authService = service(activity)
authorizationRequest()?.let { it ->
val intent = authService.getAuthorizationRequestIntent(it)
activity.startActivityForResult(intent, 0)
return authorizationRequest()?.let { it ->
authService.getAuthorizationRequestIntent(it)
}
}

7
app/src/test/java/audio/funkwhale/ffa/utils/OAuthTest.kt

@ -27,6 +27,7 @@ import org.junit.Before @@ -27,6 +27,7 @@ import org.junit.Before
import org.junit.Test
import strikt.api.expectThat
import strikt.api.expectThrows
import strikt.assertions.isA
import strikt.assertions.isEqualTo
import strikt.assertions.isFalse
import strikt.assertions.isNotNull
@ -282,7 +283,7 @@ class OAuthTest { @@ -282,7 +283,7 @@ class OAuthTest {
}
@Test
fun `authorize() should start activity for result`() {
fun `authorizeIntent() should return an Intent`() {
mockkStatic(PowerPreference::class)
every { PowerPreference.getFileByName(any()) } returns mockPreference
@ -302,9 +303,7 @@ class OAuthTest { @@ -302,9 +303,7 @@ class OAuthTest {
val activity = mockk<Activity>(relaxed = true)
oAuth.authorize(activity)
verify { activity.startActivityForResult(mockkIntent, 0) }
expectThat(oAuth.authorizeIntent(activity)).isNotNull().isA<Intent>()
}
private fun <T> deserializeJson(

Loading…
Cancel
Save