aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAllan Wang <me@allanwang.ca>2021-09-28 23:07:57 -0700
committerGitHub <noreply@github.com>2021-09-28 23:07:57 -0700
commit0ef4cbde805db6812b922d967966367ae7c98e60 (patch)
tree4335658a8313fd5fbb7716c8e5fcf447a11fb4ab
parenteb9fc5c6a558cdcbe3fe1e1911b22e0855645a38 (diff)
parent749ebe31d0d23d7097a7c989a8324714aa28d996 (diff)
downloadfrost-0ef4cbde805db6812b922d967966367ae7c98e60.tar.gz
frost-0ef4cbde805db6812b922d967966367ae7c98e60.tar.bz2
frost-0ef4cbde805db6812b922d967966367ae7c98e60.zip
Merge pull request #1818 from AllanWang/resolve-activity
Remove resolveActivity
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/utils/Utils.kt14
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/views/FrostContentView.kt1
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/web/FrostRequestInterceptor.kt3
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/web/FrostWebViewClients.kt6
-rw-r--r--gradle.properties2
5 files changed, 14 insertions, 12 deletions
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/utils/Utils.kt b/app/src/main/kotlin/com/pitchedapps/frost/utils/Utils.kt
index 4ba87209..896dd6aa 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/utils/Utils.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/utils/Utils.kt
@@ -19,6 +19,7 @@ package com.pitchedapps.frost.utils
import android.annotation.SuppressLint
import android.app.Activity
import android.app.ActivityOptions
+import android.content.ActivityNotFoundException
import android.content.Context
import android.content.Intent
import android.graphics.Color
@@ -135,7 +136,7 @@ private inline fun <reified T : WebOverlayActivityBase> Context.launchWebOverlay
ctxCoroutine.launch {
fbCookie.logout(this@launchWebOverlayImpl, deleteCookie = false)
}
- } else if (!(prefs.linksInDefaultApp && resolveActivityForUri(Uri.parse(argUrl)))) {
+ } else if (!(prefs.linksInDefaultApp && startActivityForUri(Uri.parse(argUrl)))) {
startActivity<T>(
false,
intentBuilder = {
@@ -308,7 +309,7 @@ fun Context.createPrivateMediaFile(extension: String) = createPrivateMediaFile("
* returns [true] if activity is resolved, [false] otherwise
* For safety, any uri that [isFacebookUrl] without [isExplicitIntent] will return [false]
*/
-fun Context.resolveActivityForUri(uri: Uri): Boolean {
+fun Context.startActivityForUri(uri: Uri): Boolean {
val url = uri.toString()
if (url.isFacebookUrl && !url.isExplicitIntent) {
return false
@@ -317,11 +318,12 @@ fun Context.resolveActivityForUri(uri: Uri): Boolean {
Intent.ACTION_VIEW,
uri.formattedFbUri
)
- if (intent.resolveActivity(packageManager) == null) {
- return false
+ return try {
+ startActivity(intent)
+ true
+ } catch (e: ActivityNotFoundException) {
+ false
}
- startActivity(intent)
- return true
}
/**
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/views/FrostContentView.kt b/app/src/main/kotlin/com/pitchedapps/frost/views/FrostContentView.kt
index 124a75df..c30ee199 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/views/FrostContentView.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/views/FrostContentView.kt
@@ -175,6 +175,7 @@ abstract class FrostContentViewBase(
}
refreshChannel.subscribeDuringJob(scope, ContextHelper.coroutineContext) { r ->
+ L.v { "Refreshing $r" }
refresh.isRefreshing = r
}
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/web/FrostRequestInterceptor.kt b/app/src/main/kotlin/com/pitchedapps/frost/web/FrostRequestInterceptor.kt
index 5586d479..defdcae1 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/web/FrostRequestInterceptor.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/web/FrostRequestInterceptor.kt
@@ -30,13 +30,12 @@ import java.io.ByteArrayInputStream
* Handler to decide when a request should be done by us
* This is the crux of Frost's optimizations for the web browser
*/
-private val blankResource: WebResourceResponse by lazy {
+private val blankResource: WebResourceResponse =
WebResourceResponse(
"text/plain",
"utf-8",
ByteArrayInputStream("".toByteArray())
)
-}
fun WebView.shouldFrostInterceptRequest(request: WebResourceRequest): WebResourceResponse? {
val requestUrl = request.url?.toString() ?: return null
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/web/FrostWebViewClients.kt b/app/src/main/kotlin/com/pitchedapps/frost/web/FrostWebViewClients.kt
index 1495b2e0..a6603f01 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/web/FrostWebViewClients.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/web/FrostWebViewClients.kt
@@ -50,7 +50,7 @@ import com.pitchedapps.frost.utils.isImageUrl
import com.pitchedapps.frost.utils.isIndirectImageUrl
import com.pitchedapps.frost.utils.isMessengerUrl
import com.pitchedapps.frost.utils.launchImageActivity
-import com.pitchedapps.frost.utils.resolveActivityForUri
+import com.pitchedapps.frost.utils.startActivityForUri
import com.pitchedapps.frost.views.FrostWebView
import kotlinx.coroutines.channels.SendChannel
import kotlinx.coroutines.launch
@@ -253,7 +253,7 @@ open class FrostWebViewClient(val web: FrostWebView) : BaseWebViewClient() {
v { "Url path $path" }
val url = request.url.toString()
if (url.isExplicitIntent) {
- view.context.resolveActivityForUri(request.url)
+ view.context.startActivityForUri(request.url)
return true
}
if (path.startsWith("/composer/")) {
@@ -265,7 +265,7 @@ open class FrostWebViewClient(val web: FrostWebView) : BaseWebViewClient() {
if (url.isImageUrl) {
return launchImage(url.formattedFbUrl)
}
- if (prefs.linksInDefaultApp && view.context.resolveActivityForUri(request.url)) {
+ if (prefs.linksInDefaultApp && view.context.startActivityForUri(request.url)) {
return true
}
// Convert desktop urls to mobile ones
diff --git a/gradle.properties b/gradle.properties
index 0c7352ac..34a34940 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -16,7 +16,7 @@ org.gradle.daemon = true
APP_ID=Frost
APP_GROUP=com.pitchedapps
-KAU=6.3.0
+KAU=e2ac8e3
android.useAndroidX=true
android.enableJetifier=true