aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAllan Wang <me@allanwang.ca>2021-11-21 23:56:20 -0800
committerAllan Wang <me@allanwang.ca>2021-11-21 23:56:20 -0800
commitba458a612610512e28b65bafcf74177ddc77bbbe (patch)
tree0fb3aec423b5db8a06f8f72c97c73df171401e96
parentc28973319df956c6ce75998b4d213c2da31bf91b (diff)
downloadfrost-ba458a612610512e28b65bafcf74177ddc77bbbe.tar.gz
frost-ba458a612610512e28b65bafcf74177ddc77bbbe.tar.bz2
frost-ba458a612610512e28b65bafcf74177ddc77bbbe.zip
Improve menu loading when going back
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/fragments/WebFragments.kt16
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/injectors/CssAsset.kt7
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/injectors/JsAssets.kt2
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/web/FrostWebViewClients.kt13
-rw-r--r--app/src/main/play/en-US/whatsnew3
-rw-r--r--app/src/main/res/xml/frost_changelog.xml2
-rw-r--r--app/src/web/ts/menu.ts10
-rw-r--r--app/src/web/ts/menu_quick.ts24
-rw-r--r--docs/Changelog.md1
9 files changed, 49 insertions, 29 deletions
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/fragments/WebFragments.kt b/app/src/main/kotlin/com/pitchedapps/frost/fragments/WebFragments.kt
index 3cac92af..29473461 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/fragments/WebFragments.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/fragments/WebFragments.kt
@@ -61,20 +61,4 @@ class WebFragment : BaseFragment() {
}
super.updateFab(contract)
}
-
- override fun onBackPressed(): Boolean {
- if (baseEnum == FbItem.MENU) {
- val core = core
- val web = core as? WebView
- if (web != null && web.canGoBack() && !web.canGoBackOrForward(-2)) {
- // If menu item + we are at the second last entry, reload the base
- // To properly inflate the menu
- // Related to https://github.com/AllanWang/Frost-for-Facebook/issues/1593
- core.clearHistory()
- core.reloadBase(true)
- return true
- }
- }
- return super.onBackPressed()
- }
}
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/injectors/CssAsset.kt b/app/src/main/kotlin/com/pitchedapps/frost/injectors/CssAsset.kt
index b384efad..a1f66520 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/injectors/CssAsset.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/injectors/CssAsset.kt
@@ -23,7 +23,12 @@ import com.pitchedapps.frost.prefs.Prefs
* Small misc inline css assets
*/
enum class CssAsset(private val content: String) : InjectorContract {
- FullSizeImage("div._4prr[style*=\"max-width\"][style*=\"max-height\"]{max-width:none !important;max-height:none !important}")
+ FullSizeImage("div._4prr[style*=\"max-width\"][style*=\"max-height\"]{max-width:none !important;max-height:none !important}"),
+
+ /*
+ * Remove top margin and hide some contents from the top bar and notification page (as it's our base url)
+ */
+ Menu("#bookmarks_flyout{margin-top:0 !important}#notifications_list{display:none !important}")
;
val injector: JsInjector by lazy {
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/injectors/JsAssets.kt b/app/src/main/kotlin/com/pitchedapps/frost/injectors/JsAssets.kt
index bceb9b3e..f1c958bc 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/injectors/JsAssets.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/injectors/JsAssets.kt
@@ -34,7 +34,7 @@ import java.util.Locale
* The enum name must match the css file name
*/
enum class JsAssets(private val singleLoad: Boolean = true) : InjectorContract {
- MENU, CLICK_A, CONTEXT_A, MEDIA, HEADER_BADGES, TEXTAREA_LISTENER, NOTIF_MSG,
+ MENU, MENU_QUICK(singleLoad = false), CLICK_A, CONTEXT_A, MEDIA, HEADER_BADGES, TEXTAREA_LISTENER, NOTIF_MSG,
DOCUMENT_WATCHER, HORIZONTAL_SCROLLING, AUTO_RESIZE_TEXTAREA(singleLoad = false), SCROLL_STOP,
;
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 3e906a23..ad7f7858 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/web/FrostWebViewClients.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/web/FrostWebViewClients.kt
@@ -302,7 +302,7 @@ class FrostWebViewClientMenu(web: FrostWebView) : FrostWebViewClient(web) {
* Instead, we remove the flyout margins within the js script so that it covers the header.
*/
override val facebookJsInjectors: List<InjectorContract> =
- super.facebookJsInjectors - CssHider.HEADER
+ super.facebookJsInjectors - CssHider.HEADER + CssAsset.Menu
override fun emit(flag: Int) {
super.emit(flag)
@@ -313,6 +313,17 @@ class FrostWebViewClientMenu(web: FrostWebView) : FrostWebViewClient(web) {
}
}
+ /*
+ * Facebook doesn't properly load back to the menu even in standard browsers.
+ * Instead, if we detect the base soft url, we will manually click the menu item
+ */
+ override fun doUpdateVisitedHistory(view: WebView, url: String?, isReload: Boolean) {
+ super.doUpdateVisitedHistory(view, url, isReload)
+ if (url?.startsWith(FbItem.MENU.url) == true) {
+ jsInject(JsAssets.MENU_QUICK, prefs = prefs)
+ }
+ }
+
override fun onPageFinishedActions(url: String) {
// Skip
}
diff --git a/app/src/main/play/en-US/whatsnew b/app/src/main/play/en-US/whatsnew
index 2e50ba70..b60f93c3 100644
--- a/app/src/main/play/en-US/whatsnew
+++ b/app/src/main/play/en-US/whatsnew
@@ -1,3 +1,4 @@
v3.1.2
-* Fix loading full size images \ No newline at end of file
+* Fix loading full size images
+* Fix menu tab \ 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 9bc126fb..146346b5 100644
--- a/app/src/main/res/xml/frost_changelog.xml
+++ b/app/src/main/res/xml/frost_changelog.xml
@@ -8,7 +8,7 @@
<version title="v3.1.2" />
<item text="Fix loading full size images" />
- <item text="" />
+ <item text="Fix menu tab" />
<item text="" />
<version title="v3.1.1" />
diff --git a/app/src/web/ts/menu.ts b/app/src/web/ts/menu.ts
index a288ba07..5b3e6fa9 100644
--- a/app/src/web/ts/menu.ts
+++ b/app/src/web/ts/menu.ts
@@ -1,4 +1,4 @@
-// Click menu and move contents to main view
+// Click menu after delay and notify
(function () {
const viewport = document.querySelector("#viewport");
const root = document.querySelector("#root");
@@ -20,12 +20,6 @@
return
}
- // menu container
- const bookmarkFlyout = document.querySelector('#bookmarks_flyout');
- if (bookmarkFlyout instanceof HTMLElement) {
- bookmarkFlyout.style.marginTop = "0";
- }
-
// Js handling is a bit slow so we need to wait
setTimeout(() => {
menuA.click();
@@ -34,5 +28,5 @@
setTimeout(() => {
Frost.emit(0);
}, 100);
- }, 200);
+ }, 500);
}).call(undefined);
diff --git a/app/src/web/ts/menu_quick.ts b/app/src/web/ts/menu_quick.ts
new file mode 100644
index 00000000..f7b117a4
--- /dev/null
+++ b/app/src/web/ts/menu_quick.ts
@@ -0,0 +1,24 @@
+// Copy of menu.ts without timeouts or notifications
+(function () {
+ const viewport = document.querySelector("#viewport");
+ const root = document.querySelector("#root");
+ const bookmarkJewel = document.querySelector("#bookmarks_jewel");
+ if (!viewport || !root || !bookmarkJewel) {
+ console.log('Menu.js: main elements not found');
+ Frost.emit(0);
+ return
+ }
+ const menuA = bookmarkJewel.querySelector("a");
+ if (!menuA) {
+ console.log('Menu.js: menu links not found');
+ Frost.emit(0);
+ return
+ }
+ const jewel = document.querySelector('#mJewelNav');
+ if (!jewel) {
+ console.log('Menu.js: jewel is null');
+ return
+ }
+
+ menuA.click();
+}).call(undefined);
diff --git a/docs/Changelog.md b/docs/Changelog.md
index 87a48b87..b3596f36 100644
--- a/docs/Changelog.md
+++ b/docs/Changelog.md
@@ -2,6 +2,7 @@
## v3.1.2
* Fix loading full size images
+* Fix menu tab
## v3.1.1
* Many internal fixes to address 3.1.0 issues