diff options
Diffstat (limited to 'app/src/main/java/net/lacolaco/smileessence/view/page/TweetPageFragment.kt')
-rw-r--r-- | app/src/main/java/net/lacolaco/smileessence/view/page/TweetPageFragment.kt | 154 |
1 files changed, 5 insertions, 149 deletions
diff --git a/app/src/main/java/net/lacolaco/smileessence/view/page/TweetPageFragment.kt b/app/src/main/java/net/lacolaco/smileessence/view/page/TweetPageFragment.kt index cbe8ea80..f748f68b 100644 --- a/app/src/main/java/net/lacolaco/smileessence/view/page/TweetPageFragment.kt +++ b/app/src/main/java/net/lacolaco/smileessence/view/page/TweetPageFragment.kt @@ -6,14 +6,11 @@ import android.view.View import android.view.ViewGroup import kotlinx.android.synthetic.main.page_fragment_tweet.view.* import net.lacolaco.smileessence.R -import net.lacolaco.smileessence.activity.MainActivity import net.lacolaco.smileessence.data.PageInfo import net.lacolaco.smileessence.entity.Tweet import net.lacolaco.smileessence.twitter.* import net.lacolaco.smileessence.util.* import net.lacolaco.smileessence.view.Partials -import net.lacolaco.smileessence.view.PopupMenu -import net.lacolaco.smileessence.view.confirm class TweetPageFragment : PageFragment<PageInfo.TweetPageInfo>() { private lateinit var tweet: Tweet @@ -36,27 +33,22 @@ class TweetPageFragment : PageFragment<PageInfo.TweetPageInfo>() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - val statusHeader = Partials.getTweetView(tweet, world, activity!!, view.detail_current_status) + val statusHeader = Partials.getTweetView(tweet, world, mainActivity, view.detail_current_status, + defaultExpanded = true) statusHeader.isClickable = false - // XXX - view.button_status_detail_favorite.isActivated = world.id in tweet.favoriters - view.button_status_detail_retweet.isActivated = world.id in tweet.retweets - updateViewButtons(view) - setupViewMenu(view) - if (tweet.inReplyToStatusId != null) { view.tweet_in_reply_to.visibility = View.VISIBLE view.detail_dialog_divider_top.visibility = View.VISIBLE val cached = Tweet.cached(tweet.inReplyToStatusId!!) if (cached != null) - Partials.getTweetView(cached, world, activity!!, view.tweet_in_reply_to) + Partials.getTweetView(cached, world, mainActivity, view.tweet_in_reply_to) else { - Partials.getTweetView(Tweet.placeHolder, world, activity!!, view.tweet_in_reply_to) + Partials.getTweetView(Tweet.placeHolder, world, mainActivity, 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) + Partials.getTweetView(tweet, world, mainActivity, view.tweet_in_reply_to) } catch (e: TwitterTaskException) { } } @@ -66,140 +58,4 @@ class TweetPageFragment : PageFragment<PageInfo.TweetPageInfo>() { view.detail_dialog_divider_top.visibility = View.GONE } } - - private fun updateViewButtons(view: View) { - view.button_status_detail_reply.setOnClickListener { - val originalTweet = tweet.originalTweet - - val builder = StringBuilder() - builder.append("@${originalTweet.user.screenName} ") - - originalTweet.entities.mentions - .filter { it != world.user.screenName } - .forEach { builder.append("@$it ") } - val text = builder.toString() - val selStart = originalTweet.user.screenName.length + 2 // "@" and " " - - (activity as MainActivity).openPostPageAndReplyTo(originalTweet, text) - } - view.button_status_detail_retweet.setOnClickListener { - confirm(R.string.dialog_confirm_commands) { - if (world.id in tweet.retweets) { - launchUi { - try { - world.deleteTweetAsync(tweet.retweets[world.id]!!).await() - world.notify(R.string.notice_status_delete_succeeded) - updateViewButtons(view) - } catch (e: TwitterTaskException) { - world.notifyError(R.string.notice_status_delete_failed) - } - } - } else { - launchUi { - try { - world.retweetAsync(tweet.id).await() - world.notify(R.string.notice_retweet_succeeded) - updateViewButtons(view) - } catch (e: TwitterTaskException) { - world.notifyError(R.string.notice_retweet_failed) - } - } - } - } - } - view.button_status_detail_favorite.setOnClickListener { - val favoriting = world.id !in tweet.favoriters - - launchUi { - try { - if (favoriting) { - world.favoriteAsync(tweet.id).await() - world.notify(R.string.notice_favorite_succeeded) - } else { - world.unfavoriteAsync(tweet.id).await() - world.notify(R.string.notice_unfavorite_succeeded) - } - } catch (e: TwitterTaskException) { - if (favoriting) - world.notifyError(R.string.notice_favorite_failed) - else - world.notifyError(R.string.notice_unfavorite_failed) - } - } - } - if (tweet.originalTweet.user === world.user) - view.button_status_detail_delete.visibility = View.VISIBLE - else - view.button_status_detail_delete.visibility = View.GONE - view.button_status_detail_delete.setOnClickListener { - confirm(R.string.dialog_confirm_commands) { - launchBg { - try { - world.deleteTweetAsync(tweet.originalTweet.id).await() - world.notify(R.string.notice_status_delete_succeeded) - } catch (e: TwitterTaskException) { - world.notifyError(R.string.notice_status_delete_failed) - } - } - (activity as MainActivity).closeCurrentEphemeralPage() - } - } - view.button_status_detail_menu.setOnClickListener { - val popup = PopupMenu(activity!!, view.button_status_detail_menu) - popup.add(R.string.command_status_add_to_reply) { - val text = String.format("@%s ", tweet.originalTweet.user.screenName) - (activity as MainActivity).openPostPageAndAppendText(text) - world.notify(R.string.notice_add_to_reply) - } - popup.add(R.string.command_status_open_in_browser) { - browse("https://twitter.com/${tweet.originalTweet.user.screenName}/status/${tweet.originalTweet.id}") - } - popup.add(R.string.command_status_copy_text_to_clipboard) { - SystemServiceHelper.copyToClipboard(activity!!, "tweet text", tweet.originalTweet.text) - world.notify(R.string.notice_copy_clipboard) - } - popup.add(R.string.command_status_copy_url_to_clipboard) { - SystemServiceHelper.copyToClipboard(activity!!, "tweet url", "https://twitter.com/${tweet.originalTweet.user.screenName}/status/${tweet.originalTweet.id}") - world.notify(R.string.notice_copy_clipboard) - } - popup.show() - } - } - - private fun setupViewMenu(view: View) { - val addUserItem = { screenName: String, title: String -> - view.embedded_menu_items.add("@$screenName", title) { - val ref = ref(activity as MainActivity) - launchUi { - try { - val user = world.getUserAsync(screenName).await() - (activity as MainActivity).addEphemeralUserPage(user.id) - } catch (e: TwitterTaskException) { - world.notifyError(R.string.notice_error_show_user) - } - } - } - } - if (tweet.user !== tweet.originalTweet.user) - addUserItem(tweet.user.screenName, "RT by") - for (screenName in tweet.entities.mentions.distinct().minus(tweet.user.screenName)) - addUserItem(screenName, "Mention") - for (hashtag in tweet.entities.hashtags) - view.embedded_menu_items.add("#$hashtag", "Hashtag") { - // XXX - (activity as MainActivity).openPostPageAndAppendText(" #$hashtag") - } - for (url in tweet.entities.urlsExpanded) - view.embedded_menu_items.add(url, "URL") { - activity!!.browse(url) - } - for (url in tweet.entities.mediaUrls) - view.embedded_menu_items.add(url, "Media") { - activity!!.browse(url) - } - if (view.embedded_menu_items.childCount == 0) { - view.detail_dialog_divider_bottom.visibility = View.GONE - view.embedded_menu_items.visibility = View.GONE - } - } } |