diff options
author | Allan Wang <me@allanwang.ca> | 2019-02-06 12:12:10 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-02-06 12:12:10 -0500 |
commit | 91b7d53fb37b9939943c16b0bfd7a947d9f2363e (patch) | |
tree | 01d8feffb8e467bb19bc405c91e0cd4f66f8fe06 /app/src/main/kotlin/com/pitchedapps/frost/activities/MainActivity.kt | |
parent | a75555f3464607b93d523478999b9c8a7dc224a0 (diff) | |
download | frost-91b7d53fb37b9939943c16b0bfd7a947d9f2363e.tar.gz frost-91b7d53fb37b9939943c16b0bfd7a947d9f2363e.tar.bz2 frost-91b7d53fb37b9939943c16b0bfd7a947d9f2363e.zip |
Fix/open broadcast (#1345)
* Convert jsi related channels to broadcasts
* Close channel in debug activity
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.kt | 54 |
1 files changed, 27 insertions, 27 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 044a1f37..c53e9055 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.kotlin.subscribeDuringJob import com.pitchedapps.frost.utils.L import com.pitchedapps.frost.views.BadgedIcon import kotlinx.coroutines.Dispatchers @@ -34,7 +35,7 @@ import org.jsoup.Jsoup class MainActivity : BaseMainActivity() { override val fragmentChannel = BroadcastChannel<Int>(10) - override val headerBadgeChannel = Channel<String>(Channel.CONFLATED) + override val headerBadgeChannel = BroadcastChannel<String>(Channel.CONFLATED) var lastPosition = -1 override fun onNestedCreate(savedInstanceState: Bundle?) { @@ -86,35 +87,34 @@ class MainActivity : BaseMainActivity() { (tab.customView as BadgedIcon).badgeText = null } }) - launch(Dispatchers.IO) { - for (html in headerBadgeChannel) { - try { - val doc = Jsoup.parse(html) - if (doc.select("[data-sigil=count]").isEmpty()) - continue // 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 - } + headerBadgeChannel.subscribeDuringJob(this, 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 } } - } catch (e: Exception) { - L.e(e) { "Header badge error" } } + } catch (e: Exception) { + L.e(e) { "Header badge error" } } } adapter.pages.forEach { |