aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/kotlin/com
diff options
context:
space:
mode:
authorAllan Wang <me@allanwang.ca>2017-06-16 12:21:12 -0700
committerAllan Wang <me@allanwang.ca>2017-06-16 12:21:12 -0700
commit87e7e132a060e235d434a9ef44ae0363d7ef660b (patch)
treeba78c3240c6e4c0bf4ad43692f8625bc7f964a75 /app/src/main/kotlin/com
parentb9ea80d5b5a06d050ce2c7ca46ed597f4cb499ff (diff)
downloadfrost-87e7e132a060e235d434a9ef44ae0363d7ef660b.tar.gz
frost-87e7e132a060e235d434a9ef44ae0363d7ef660b.tar.bz2
frost-87e7e132a060e235d434a9ef44ae0363d7ef660b.zip
Add url formatter
Diffstat (limited to 'app/src/main/kotlin/com')
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/utils/Utils.kt16
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/web/FrostJSI.kt7
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/web/FrostWebViewClient.kt2
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/web/FrostWebViewClientMenu.kt7
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/web/FrostWebViewCore.kt11
5 files changed, 28 insertions, 15 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 8dfceaad..0d99d67a 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/utils/Utils.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/utils/Utils.kt
@@ -12,6 +12,7 @@ import com.pitchedapps.frost.LoginActivity
import com.pitchedapps.frost.R
import com.pitchedapps.frost.WebOverlayActivity
import com.pitchedapps.frost.dbflow.CookieModel
+import com.pitchedapps.frost.facebook.FB_URL_BASE
import com.pitchedapps.frost.facebook.FbTab
/**
@@ -30,10 +31,23 @@ fun Activity.cookies(): ArrayList<CookieModel> {
return intent?.extras?.getParcelableArrayList<CookieModel>(EXTRA_COOKIES) ?: arrayListOf()
}
+val String.formattedFbUrl: String
+ get() {
+ var url = this
+ if (url.startsWith("#!/")) url = url.substring(2)
+ if (url.startsWith('/')) url = FB_URL_BASE + url.substring(1)
+ url = url.replace("/#!/", "/")
+ val ref = url.indexOf("?ref")
+ if (ref != -1) url = url.substring(0, ref)
+ return url
+ }
+
fun Context.launchWebOverlay(url: String) {
+ val argUrl = url.formattedFbUrl
+ L.i("Launch web overlay: $argUrl")
val intent = Intent(this, WebOverlayActivity::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP or Intent.FLAG_ACTIVITY_NEW_TASK)
- intent.putExtra(ARG_URL, url)
+ intent.putExtra(ARG_URL, argUrl)
val bundle = ActivityOptionsCompat.makeCustomAnimation(this, R.anim.slide_in_right, R.anim.slide_out_right).toBundle()
ContextCompat.startActivity(this, intent, bundle)
}
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 f81c6a15..36193b8b 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/web/FrostJSI.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/web/FrostJSI.kt
@@ -19,14 +19,9 @@ class FrostJSI(val context: Context, val webView: FrostWebViewCore) {
val cookies: ArrayList<CookieModel>
get() = (context as? MainActivity)?.cookies() ?: arrayListOf()
- var lastUrl: String = ""
-
@JavascriptInterface
fun loadUrl(url: String) {
- if (url != lastUrl) {
- lastUrl = url
- context.launchWebOverlay(url)
- }
+ context.launchWebOverlay(url)
}
@JavascriptInterface
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/web/FrostWebViewClient.kt b/app/src/main/kotlin/com/pitchedapps/frost/web/FrostWebViewClient.kt
index 8cd36b86..ac2af3cb 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/web/FrostWebViewClient.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/web/FrostWebViewClient.kt
@@ -45,11 +45,11 @@ open class FrostWebViewClient(val webCore: FrostWebViewCore) : WebViewClient() {
override fun onPageFinished(view: WebView, url: String) {
super.onPageFinished(view, url)
+ L.i("Page finished $url")
if (!url.contains(FACEBOOK_COM)) {
refreshObservable.onNext(false)
return
}
- L.i("Page finished $url")
JsActions.LOGIN_CHECK.inject(view)
onPageFinishedActions(url)
}
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/web/FrostWebViewClientMenu.kt b/app/src/main/kotlin/com/pitchedapps/frost/web/FrostWebViewClientMenu.kt
index 2a1a5b74..af13c459 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/web/FrostWebViewClientMenu.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/web/FrostWebViewClientMenu.kt
@@ -15,7 +15,7 @@ class FrostWebViewClientMenu(webCore: FrostWebViewCore) : FrostWebViewClient(web
var content: String? = null
val progressObservable: Subject<Int> = webCore.progressObservable
- private val contentBaseUrl = "https://touch.facebook.com/notifications"
+ private val contentBaseUrl = "${FB_URL_BASE}notifications"
override fun onPageStarted(view: WebView, url: String, favicon: Bitmap?) {
super.onPageStarted(view, url, favicon)
@@ -38,7 +38,10 @@ class FrostWebViewClientMenu(webCore: FrostWebViewCore) : FrostWebViewClient(web
jsInject(JsAssets.MENU, callback = {
jsInject(JsAssets.MENU_CLICK) //menu injection must be after or we will have a loop from the click listener
})
- } else if (url == contentBaseUrl) jsInject(JsAssets.MENU_CLICK)
+ } else if (url == contentBaseUrl) {
+ L.i("Inject content")
+ jsInject(JsAssets.MENU_CLICK)
+ }
}
override fun emit(flag: Int) {
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/web/FrostWebViewCore.kt b/app/src/main/kotlin/com/pitchedapps/frost/web/FrostWebViewCore.kt
index 5ba312f4..b6353252 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/web/FrostWebViewCore.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/web/FrostWebViewCore.kt
@@ -22,6 +22,7 @@ import io.reactivex.Scheduler
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.Disposable
import io.reactivex.subjects.BehaviorSubject
+import io.reactivex.subjects.PublishSubject
/**
* Created by Allan Wang on 2017-05-29.
@@ -36,8 +37,8 @@ class FrostWebViewCore @JvmOverloads constructor(
private val scrollOffset = IntArray(2)
private val scrollConsumed = IntArray(2)
private var nestedOffsetY: Int = 0
- val progressObservable: BehaviorSubject<Int> // Keeps track of every progress change
- val refreshObservable: BehaviorSubject<Boolean> // Only emits on page loads
+ val progressObservable: PublishSubject<Int> // Keeps track of every progress change
+ val refreshObservable: PublishSubject<Boolean> // Only emits on page loads
val titleObservable: BehaviorSubject<String> // Only emits on different non http titles
var baseUrl: String? = null
@@ -46,8 +47,8 @@ class FrostWebViewCore @JvmOverloads constructor(
init {
isNestedScrollingEnabled = true
- progressObservable = BehaviorSubject.create<Int>()
- refreshObservable = BehaviorSubject.create<Boolean>()
+ progressObservable = PublishSubject.create<Int>()
+ refreshObservable = PublishSubject.create<Boolean>()
titleObservable = BehaviorSubject.create<String>()
}
@@ -79,8 +80,8 @@ class FrostWebViewCore @JvmOverloads constructor(
/**
* Hook onto the refresh observable for one cycle
- * Note that this is a behaviour subject so the first 'false' emission should be ignored
* Animate toggles between the fancy ripple and the basic fade
+ * The cycle only starts on the first load since there may have been another process when this is registered
*/
fun registerTransition(animate: Boolean) {
var dispose: Disposable? = null