diff options
-rw-r--r-- | app/src/main/kotlin/com/pitchedapps/frost/web/FrostJSI.kt | 7 | ||||
-rw-r--r-- | app/src/main/kotlin/com/pitchedapps/frost/web/FrostWebViewClients.kt | 17 | ||||
-rw-r--r-- | app/src/main/play/en-US/whatsnew | 3 | ||||
-rw-r--r-- | app/src/main/res/xml/frost_changelog.xml | 1 | ||||
-rw-r--r-- | docs/Changelog.md | 1 |
5 files changed, 26 insertions, 3 deletions
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/web/FrostJSI.kt b/app/src/main/kotlin/com/pitchedapps/frost/web/FrostJSI.kt index 187ab9eb..0988e331 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/web/FrostJSI.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/web/FrostJSI.kt @@ -89,7 +89,9 @@ class FrostJSI(val web: FrostWebView) { @JavascriptInterface fun longClick(start: Boolean) { activity?.viewPager?.enableSwipe = !start - web.parent.swipeEnabled = !start + if (web.frostWebClient.urlSupportsRefresh) { + web.parent.swipeEnabled = !start + } } /** @@ -97,6 +99,9 @@ class FrostJSI(val web: FrostWebView) { */ @JavascriptInterface fun disableSwipeRefresh(disable: Boolean) { + if (!web.frostWebClient.urlSupportsRefresh) { + return + } web.parent.swipeEnabled = !disable if (disable) { // locked onto an input field; ensure content is visible 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 f6279611..ab7ee087 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/web/FrostWebViewClients.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/web/FrostWebViewClients.kt @@ -24,6 +24,7 @@ import android.webkit.WebView import android.webkit.WebViewClient import ca.allanwang.kau.utils.withAlpha import com.pitchedapps.frost.facebook.FACEBOOK_BASE_COM +import com.pitchedapps.frost.facebook.FB_URL_BASE import com.pitchedapps.frost.facebook.FbCookie import com.pitchedapps.frost.facebook.FbItem import com.pitchedapps.frost.facebook.WWW_FACEBOOK_COM @@ -69,10 +70,24 @@ open class FrostWebViewClient(val web: FrostWebView) : BaseWebViewClient() { private val refresh: SendChannel<Boolean> = web.parent.refreshChannel private val isMain = web.parent.baseEnum != null + /** + * True if current url supports refresh. See [doUpdateVisitedHistory] for updates + */ + internal var urlSupportsRefresh: Boolean = true override fun doUpdateVisitedHistory(view: WebView, url: String?, isReload: Boolean) { - v { "History $url" } super.doUpdateVisitedHistory(view, url, isReload) + urlSupportsRefresh = urlSupportsRefresh(url) + web.parent.swipeEnabled = urlSupportsRefresh + v { "History $url; refresh $urlSupportsRefresh" } + } + + private fun urlSupportsRefresh(url: String?): Boolean { + if (url == null) return false + if (!url.isFacebookUrl) return true + if (url == "$FB_URL_BASE?soft=composer") return false + if (url.contains("sharer.php") || url.contains("sharer-dialog.php")) return false + return true } protected inline fun v(crossinline message: () -> Any?) = L.v { "web client: ${message()}" } diff --git a/app/src/main/play/en-US/whatsnew b/app/src/main/play/en-US/whatsnew index 6f1d0b36..f286cb6f 100644 --- a/app/src/main/play/en-US/whatsnew +++ b/app/src/main/play/en-US/whatsnew @@ -5,4 +5,5 @@ v2.4.1 * Fix nav and status bar icon colors for custom themes (Android O+) * Fix biometric prompt, and prompt on activity resume * Fix notification title -* Add option to open overlay links in browser
\ No newline at end of file +* Add option to open overlay links in browser +* Disable swipe to refresh for composer and sharer pages
\ 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 4cf51cb0..e8856b03 100644 --- a/app/src/main/res/xml/frost_changelog.xml +++ b/app/src/main/res/xml/frost_changelog.xml @@ -13,6 +13,7 @@ <item text="Fix biometric prompt, and prompt on activity resume" /> <item text="Fix notification title" /> <item text="Add option to open overlay links in browser" /> + <item text="Disable swipe to refresh for composer and sharer pages" /> <item text="" /> <version title="v2.4.0" /> diff --git a/docs/Changelog.md b/docs/Changelog.md index 673f2e22..849170bf 100644 --- a/docs/Changelog.md +++ b/docs/Changelog.md @@ -7,6 +7,7 @@ * Fix biometric prompt, and prompt on activity resume * Fix notification title * Add option to open overlay links in browser +* Disable swipe to refresh for composer and sharer pages ## v2.4.0 * Removed request services, which potentially caused phishing warnings. |