aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/kotlin/com/pitchedapps/frost/activities/MainActivity.kt
diff options
context:
space:
mode:
authorAllan Wang <me@allanwang.ca>2020-06-28 23:03:54 -0700
committerAllan Wang <me@allanwang.ca>2020-06-28 23:03:54 -0700
commit5eeff862c8f537f3781ce5ee92341e677f9f89c0 (patch)
tree31b27e1bed06300bfb515d8fc44f7a39ce7dca61 /app/src/main/kotlin/com/pitchedapps/frost/activities/MainActivity.kt
parentaee8e7e00ceb476c6653d6f8328f1b376d747c0d (diff)
downloadfrost-5eeff862c8f537f3781ce5ee92341e677f9f89c0.tar.gz
frost-5eeff862c8f537f3781ce5ee92341e677f9f89c0.tar.bz2
frost-5eeff862c8f537f3781ce5ee92341e677f9f89c0.zip
Create badge parser and add test
Diffstat (limited to 'app/src/main/kotlin/com/pitchedapps/frost/activities/MainActivity.kt')
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/activities/MainActivity.kt36
1 files changed, 12 insertions, 24 deletions
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/activities/MainActivity.kt b/app/src/main/kotlin/com/pitchedapps/frost/activities/MainActivity.kt
index 6522721d..97e828b6 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/activities/MainActivity.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/activities/MainActivity.kt
@@ -21,6 +21,7 @@ import androidx.viewpager.widget.ViewPager
import ca.allanwang.kau.utils.withMainContext
import com.google.android.material.tabs.TabLayout
import com.pitchedapps.frost.facebook.FbItem
+import com.pitchedapps.frost.facebook.parsers.BadgeParser
import com.pitchedapps.frost.kotlin.subscribeDuringJob
import com.pitchedapps.frost.utils.L
import com.pitchedapps.frost.views.BadgedIcon
@@ -91,32 +92,19 @@ class MainActivity : BaseMainActivity() {
}
})
headerBadgeChannel.subscribeDuringJob(this@MainActivity, Dispatchers.IO) { html ->
- try {
- val doc = Jsoup.parse(html)
- if (doc.select("[data-sigil=count]").isEmpty())
- return@subscribeDuringJob // Header doesn't exist
- val (feed, requests, messages, notifications) = listOf(
- "feed",
- "requests",
- "messages",
- "notifications"
- )
- .map { "[data-sigil*=$it] [data-sigil=count]" }
- .map { doc.select(it) }
- .map { e -> e?.getOrNull(0)?.ownText() }
- L.v { "Badges $feed $requests $messages $notifications" }
- withMainContext {
- tabsForEachView { _, view ->
- when (view.iicon) {
- FbItem.FEED.icon -> view.badgeText = feed
- FbItem.FRIENDS.icon -> view.badgeText = requests
- FbItem.MESSAGES.icon -> view.badgeText = messages
- FbItem.NOTIFICATIONS.icon -> view.badgeText = notifications
- }
+ val data =
+ BadgeParser.parseFromData(cookie = fbCookie.webCookie, text = html)?.data
+ ?: return@subscribeDuringJob
+ L.v { "Badges $data" }
+ withMainContext {
+ tabsForEachView { _, view ->
+ when (view.iicon) {
+ FbItem.FEED.icon -> view.badgeText = data.feed
+ FbItem.FRIENDS.icon -> view.badgeText = data.friends
+ FbItem.MESSAGES.icon -> view.badgeText = data.messages
+ FbItem.NOTIFICATIONS.icon -> view.badgeText = data.notifications
}
}
- } catch (e: Exception) {
- L.e(e) { "Header badge error" }
}
}
}