aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKazuki Yamaguchi <k@rhe.jp>2018-09-05 13:52:25 +0900
committerKazuki Yamaguchi <k@rhe.jp>2018-09-05 13:52:25 +0900
commit7c89ea94bf8f058ef4fce62a92207c783f0dc11c (patch)
tree437ba13f48b6de7aa0627226a4339e92795d98ba
parentc5515667a832354634f82409284aaea727101541 (diff)
downloadSmileEssence-7c89ea94bf8f058ef4fce62a92207c783f0dc11c.tar.gz
skip launch ui if possible
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/Partials.kt39
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/dialog/StatusDetailDialogFragment.kt17
2 files changed, 33 insertions, 23 deletions
diff --git a/app/src/main/java/net/lacolaco/smileessence/view/Partials.kt b/app/src/main/java/net/lacolaco/smileessence/view/Partials.kt
index 1f22c41d..0853354a 100644
--- a/app/src/main/java/net/lacolaco/smileessence/view/Partials.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/view/Partials.kt
@@ -76,28 +76,33 @@ object Partials {
for (i in layout.childCount until tweet.embeddedStatusIDs.size)
layout.addView(inflater.inflate(R.layout.list_item_tweet, layout, false))
}
- for (i in 0 until layout.childCount)
- layout.getChildAt(i).visibility = View.GONE
- launchUi {
- tweet.embeddedStatusIDs.mapIndexed { i, id ->
- val itemView = layout.getChildAt(i)
+ tweet.embeddedStatusIDs.forEachIndexed { i, id ->
+ val itemView = layout.getChildAt(i)
+ val cached = Tweet.fetch(id)
+ if (cached != null) {
+ getTweetView(cached, world, activity, itemView, maxRecursion - 1)
+ itemView.visibility = View.VISIBLE
+ } else {
itemView.tag = id
- Triple(i, id, world.getTweetAsync(id, false))
- }.forEach { (i, id, task) ->
- try {
- val updatedTweet = task.await()
- if (activity.isDestroyed)
- return@forEach
- val itemView = layout.getChildAt(i)
- if (itemView.tag != id)
- return@forEach
- getTweetView(updatedTweet, world, activity, itemView, maxRecursion - 1)
- itemView.visibility = View.VISIBLE
- } catch (e: TwitterTaskException) {
+ itemView.visibility = View.GONE
+ launchUi {
+ try {
+ val fetched = world.getTweetAsync(id, false).await()
+ if (activity.isDestroyed)
+ return@launchUi
+ if (itemView.tag != id)
+ return@launchUi
+ getTweetView(fetched, world, activity, itemView, maxRecursion - 1)
+ itemView.visibility = View.VISIBLE
+ } catch (e: TwitterTaskException) {
+ }
}
}
}
+
+ for (i in tweet.embeddedStatusIDs.size until layout.childCount)
+ layout.getChildAt(i).visibility = View.GONE
} else
layout.visibility = View.GONE
diff --git a/app/src/main/java/net/lacolaco/smileessence/view/dialog/StatusDetailDialogFragment.kt b/app/src/main/java/net/lacolaco/smileessence/view/dialog/StatusDetailDialogFragment.kt
index cb6d0b4d..8ff2f6bc 100644
--- a/app/src/main/java/net/lacolaco/smileessence/view/dialog/StatusDetailDialogFragment.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/view/dialog/StatusDetailDialogFragment.kt
@@ -45,12 +45,17 @@ class StatusDetailDialogFragment : StackableDialogFragment() {
if (tweet.inReplyToStatusId != null) {
view.tweet_in_reply_to.visibility = View.VISIBLE
view.detail_dialog_divider_top.visibility = View.VISIBLE
- Partials.getTweetView(Tweet.placeHolder, world, activity, view.tweet_in_reply_to)
- launchUi {
- try {
- val tweet = world.getTweetAsync(tweet.inReplyToStatusId!!, false).await()
- Partials.getTweetView(tweet, world, activity, view.tweet_in_reply_to)
- } catch (e: TwitterTaskException) {
+ val cached = Tweet.fetch(tweet.inReplyToStatusId!!)
+ if (cached != null)
+ Partials.getTweetView(cached, world, activity, view.tweet_in_reply_to)
+ else {
+ Partials.getTweetView(Tweet.placeHolder, world, activity, view.tweet_in_reply_to)
+ launchUi {
+ try {
+ val tweet = world.getTweetAsync(tweet.inReplyToStatusId!!, false).await()
+ Partials.getTweetView(tweet, world, activity, view.tweet_in_reply_to)
+ } catch (e: TwitterTaskException) {
+ }
}
}
} else {