diff options
author | Kazuki Yamaguchi <k@rhe.jp> | 2018-09-05 13:52:25 +0900 |
---|---|---|
committer | Kazuki Yamaguchi <k@rhe.jp> | 2018-09-05 13:52:25 +0900 |
commit | 7c89ea94bf8f058ef4fce62a92207c783f0dc11c (patch) | |
tree | 437ba13f48b6de7aa0627226a4339e92795d98ba | |
parent | c5515667a832354634f82409284aaea727101541 (diff) | |
download | SmileEssence-7c89ea94bf8f058ef4fce62a92207c783f0dc11c.tar.gz |
skip launch ui if possible
-rw-r--r-- | app/src/main/java/net/lacolaco/smileessence/view/Partials.kt | 39 | ||||
-rw-r--r-- | app/src/main/java/net/lacolaco/smileessence/view/dialog/StatusDetailDialogFragment.kt | 17 |
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 { |