aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAllan Wang <me@allanwang.ca>2019-09-29 00:49:37 -0700
committerGitHub <noreply@github.com>2019-09-29 00:49:37 -0700
commit356a67d184ac82831d77221a84215d3ec87e177d (patch)
treea45528b0dee10126f42392a2a6f10f2fb555d8e7
parentc9fec8cc993f159eb81803e8c0cd5855d2a9abd3 (diff)
parenta7e0ad1c50c37f82184774174f1e0f6fb72165aa (diff)
downloadfrost-356a67d184ac82831d77221a84215d3ec87e177d.tar.gz
frost-356a67d184ac82831d77221a84215d3ec87e177d.tar.bz2
frost-356a67d184ac82831d77221a84215d3ec87e177d.zip
Merge pull request #1561 from AllanWang/fix-auth
Fix auth
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/StartActivity.kt2
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/activities/BaseMainActivity.kt3
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/activities/WebOverlayActivity.kt5
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/utils/BiometricUtils.kt17
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/web/FrostUrlOverlayValidator.kt2
-rw-r--r--app/src/main/play/en-US/whatsnew3
-rw-r--r--app/src/main/res/xml/frost_changelog.xml2
-rw-r--r--docs/Changelog.md3
8 files changed, 29 insertions, 8 deletions
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/StartActivity.kt b/app/src/main/kotlin/com/pitchedapps/frost/StartActivity.kt
index 547718dd..0f8bd9d1 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/StartActivity.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/StartActivity.kt
@@ -70,9 +70,9 @@ class StartActivity : KauBaseActivity() {
showInvalidWebView()
}
- val authDefer = BiometricUtils.authenticate(this@StartActivity)
launch {
try {
+ val authDefer = BiometricUtils.authenticate(this@StartActivity)
FbCookie.switchBackUser()
val cookies = ArrayList(cookieDao.selectAll())
L.i { "Cookies loaded at time ${System.currentTimeMillis()}" }
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/activities/BaseMainActivity.kt b/app/src/main/kotlin/com/pitchedapps/frost/activities/BaseMainActivity.kt
index 798ee4b3..858f8590 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/activities/BaseMainActivity.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/activities/BaseMainActivity.kt
@@ -87,6 +87,7 @@ import com.pitchedapps.frost.fragments.BaseFragment
import com.pitchedapps.frost.fragments.WebFragment
import com.pitchedapps.frost.services.scheduleNotificationsFromPrefs
import com.pitchedapps.frost.utils.ACTIVITY_SETTINGS
+import com.pitchedapps.frost.utils.BiometricUtils
import com.pitchedapps.frost.utils.EXTRA_COOKIES
import com.pitchedapps.frost.utils.L
import com.pitchedapps.frost.utils.MAIN_TIMEOUT_DURATION
@@ -521,7 +522,9 @@ abstract class BaseMainActivity : BaseActivity(), MainActivityContract,
lastAccessTime = System.currentTimeMillis() // precaution to avoid loops
controlWebview?.resumeTimers()
launch {
+ val authDefer = BiometricUtils.authenticate(this@BaseMainActivity)
FbCookie.switchBackUser()
+ authDefer.await()
if (shouldReload && Prefs.autoRefreshFeed) {
refreshAll()
}
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/activities/WebOverlayActivity.kt b/app/src/main/kotlin/com/pitchedapps/frost/activities/WebOverlayActivity.kt
index 628ab5dc..3a6af146 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/activities/WebOverlayActivity.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/activities/WebOverlayActivity.kt
@@ -224,10 +224,11 @@ abstract class WebOverlayActivityBase(private val userAgent: String = USER_AGENT
with(web) {
userAgentString = userAgent
Prefs.prevId = Prefs.userId
- val authDefer = BiometricUtils.authenticate(this@WebOverlayActivityBase)
launch {
- if (userId != Prefs.userId)
+ val authDefer = BiometricUtils.authenticate(this@WebOverlayActivityBase)
+ if (userId != Prefs.userId) {
FbCookie.switchUser(userId)
+ }
authDefer.await()
reloadBase(true)
if (Showcase.firstWebOverlay) {
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/utils/BiometricUtils.kt b/app/src/main/kotlin/com/pitchedapps/frost/utils/BiometricUtils.kt
index 136fe28f..597b4921 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/utils/BiometricUtils.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/utils/BiometricUtils.kt
@@ -21,6 +21,9 @@ import android.hardware.fingerprint.FingerprintManager
import android.os.Build
import androidx.biometric.BiometricPrompt
import androidx.fragment.app.FragmentActivity
+import androidx.lifecycle.Lifecycle
+import androidx.lifecycle.LifecycleObserver
+import androidx.lifecycle.OnLifecycleEvent
import ca.allanwang.kau.utils.string
import com.pitchedapps.frost.R
import kotlinx.coroutines.CompletableDeferred
@@ -80,7 +83,19 @@ object BiometricUtils {
.setTitle(activity.string(R.string.biometrics_prompt_title))
.setNegativeButtonText(activity.string(R.string.kau_cancel))
.build()
- BiometricPrompt(activity, executor, Callback(activity, deferred)).authenticate(info)
+ val prompt = BiometricPrompt(activity, executor, Callback(activity, deferred))
+ activity.lifecycle.addObserver(object : LifecycleObserver {
+ @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
+ fun onPause() {
+ if (!deferred.isCompleted) {
+ prompt.cancelAuthentication()
+ deferred.cancel()
+ activity.finish()
+ }
+ activity.lifecycle.removeObserver(this)
+ }
+ })
+ prompt.authenticate(info)
return deferred
}
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/web/FrostUrlOverlayValidator.kt b/app/src/main/kotlin/com/pitchedapps/frost/web/FrostUrlOverlayValidator.kt
index 3df3b2c2..9e5e6c63 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/web/FrostUrlOverlayValidator.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/web/FrostUrlOverlayValidator.kt
@@ -79,7 +79,7 @@ fun FrostWebView.requestWebOverlay(url: String): Boolean {
if (!Prefs.overlayEnabled) return false
if (context is WebOverlayActivityBase) {
val shouldUseDesktop = url.isFacebookUrl
- //already overlay; manage user agent
+ // already overlay; manage user agent
if (userAgentString != USER_AGENT_DESKTOP_CONST && shouldUseDesktop) {
L._i { "Switch to desktop agent overlay" }
context.launchWebOverlayDesktop(url)
diff --git a/app/src/main/play/en-US/whatsnew b/app/src/main/play/en-US/whatsnew
index 8e47d7d4..2c68cc55 100644
--- a/app/src/main/play/en-US/whatsnew
+++ b/app/src/main/play/en-US/whatsnew
@@ -1,5 +1,6 @@
v2.4.1
-* Convert facebook desktop urls to mobile ones
+* Add better support for mobile url conversions
* Notification tab will keep first page in the same window; fixes marking notifications as read
* Fix nav and status bar icon colors for custom themes (Android O+)
+* Fix biometric prompt, and prompt on activity resume \ No newline at end of file
diff --git a/app/src/main/res/xml/frost_changelog.xml b/app/src/main/res/xml/frost_changelog.xml
index 955e1239..88216d63 100644
--- a/app/src/main/res/xml/frost_changelog.xml
+++ b/app/src/main/res/xml/frost_changelog.xml
@@ -10,7 +10,7 @@
<item text="Add better support for mobile url conversions" />
<item text="Notification tab will keep first page in the same window; fixes marking notifications as read" />
<item text="Fix nav and status bar icon colors for custom themes (Android O+)" />
- <item text="" />
+ <item text="Fix biometric prompt, and prompt on activity resume" />
<item text="" />
<version title="v2.4.0" />
diff --git a/docs/Changelog.md b/docs/Changelog.md
index 29856117..30820aa0 100644
--- a/docs/Changelog.md
+++ b/docs/Changelog.md
@@ -1,9 +1,10 @@
# Changelog
## v2.4.1
-* Convert facebook desktop urls to mobile ones
+* Add better support for mobile url conversions
* Notification tab will keep first page in the same window; fixes marking notifications as read
* Fix nav and status bar icon colors for custom themes (Android O+)
+* Fix biometric prompt, and prompt on activity resume
## v2.4.0
* Removed request services, which potentially caused phishing warnings.