aboutsummaryrefslogtreecommitdiffstats
path: root/app/src
diff options
context:
space:
mode:
authorKazuki Yamaguchi <k@rhe.jp>2017-10-22 23:12:44 +0900
committerKazuki Yamaguchi <k@rhe.jp>2017-10-22 23:12:44 +0900
commit0b16b186751aca2a6000e5bc949e8511b91c0dfd (patch)
treef5d0a56a7292591c173031eda19a61a52ec12533 /app/src
parent565d3ddf03098be859594f2d6c3ca452c7738d4f (diff)
downloadSmileEssence-0b16b186751aca2a6000e5bc949e8511b91c0dfd.tar.gz
data simplification
Diffstat (limited to 'app/src')
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.kt1
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/entity/DirectMessage.kt13
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/entity/Entities.kt55
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/entity/EntitySupport.kt54
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/entity/IdObject.kt16
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/entity/Tweet.kt124
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/entity/User.kt5
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/twitter/UserStreamListener.kt18
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/Partials.kt6
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/dialog/MessageDetailDialogFragment.kt6
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/dialog/StatusDetailDialogFragment.kt22
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/dialog/UserDetailDialogFragment.kt3
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/page/SearchPageFragment.kt2
-rw-r--r--app/src/main/res/menu/main.xml4
14 files changed, 145 insertions, 184 deletions
diff --git a/app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.kt b/app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.kt
index 92bb9467..5b6b5f84 100644
--- a/app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.kt
@@ -246,7 +246,6 @@ class MainActivity : AppCompatActivity() {
intent.putExtra(ManagePagesActivity.INTENT_KEY_WORLD_ID, world.id)
startActivityForResult(intent, REQUEST_CODE_MANAGE_PAGES)
}
- R.id.actionbar_aclog -> browse(world.user.aclogTimelineURL)
R.id.open_version_dialog -> DialogHelper.showDialog(this, AppInfoDialogFragment.newInstance())
else -> return super.onOptionsItemSelected(item)
}
diff --git a/app/src/main/java/net/lacolaco/smileessence/entity/DirectMessage.kt b/app/src/main/java/net/lacolaco/smileessence/entity/DirectMessage.kt
index 013d5f5a..5e233e64 100644
--- a/app/src/main/java/net/lacolaco/smileessence/entity/DirectMessage.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/entity/DirectMessage.kt
@@ -2,12 +2,13 @@ package net.lacolaco.smileessence.entity
import java.util.*
-class DirectMessage private constructor(message: twitter4j.DirectMessage) : EntitySupport(message), IdObject {
- override val id: Long = message.id
- val sender: User = User.fromTwitter(message.sender)
- val recipient: User = User.fromTwitter(message.recipient)
- val text: String = extractText(message, false)
- val createdAt: Date = message.createdAt
+class DirectMessage private constructor(message: twitter4j.DirectMessage) : IdObject {
+ override val id = message.id
+ val sender = User.fromTwitter(message.sender)
+ val recipient = User.fromTwitter(message.recipient)
+ val entities = Entities.fromTwitter(message)
+ val text = entities.extractText(message, message.text)
+ val createdAt = message.createdAt!!
companion object {
private val storage = HashMap<Long, DirectMessage>()
diff --git a/app/src/main/java/net/lacolaco/smileessence/entity/Entities.kt b/app/src/main/java/net/lacolaco/smileessence/entity/Entities.kt
new file mode 100644
index 00000000..c5437154
--- /dev/null
+++ b/app/src/main/java/net/lacolaco/smileessence/entity/Entities.kt
@@ -0,0 +1,55 @@
+package net.lacolaco.smileessence.entity
+
+import twitter4j.*
+
+import java.util.*
+
+class Entities private constructor(
+ val mentions: List<String>,
+ val hashtags: List<String>,
+ val mediaUrls: List<String>,
+ val urlsExpanded: List<String>,
+ val symbols: List<String>
+) {
+ fun extractText(status: twitter4j.EntitySupport, text: String): String {
+ val set = TreeSet<twitter4j.URLEntity> { a, b -> a.start - b.start }
+ if (status.urlEntities != null)
+ set += status.urlEntities
+ if (status.mediaEntities != null)
+ set += status.mediaEntities
+
+ return set.fold(text) { t, entity ->
+ t.replaceFirst(entity.text.toRegex(), entity.displayURL)
+ }
+ }
+
+ companion object {
+ fun fromTwitter(es: twitter4j.EntitySupport) = Entities(
+ mentions = extractMentions(es.userMentionEntities),
+ hashtags = extractHashtags(es.hashtagEntities),
+ mediaUrls = extractMediaUrls(es.mediaEntities),
+ urlsExpanded = extractExpandedUrls(es.urlEntities),
+ symbols = extractSymbols(es.symbolEntities)
+ )
+
+ private fun extractMentions(entities: Array<UserMentionEntity>?) =
+ entities?.map { it.screenName } ?: listOf()
+
+ private fun extractSymbols(entities: Array<SymbolEntity>?) =
+ entities?.map { it.text } ?: listOf()
+
+ private fun extractExpandedUrls(entities: Array<URLEntity>?) =
+ entities?.map { it.expandedURL } ?: listOf()
+
+ private fun extractMediaUrls(entities: Array<MediaEntity>?) =
+ entities?.map {
+ when (it.type) {
+ "photo" -> it.mediaURLHttps
+ else -> it.expandedURL
+ }
+ } ?: listOf()
+
+ private fun extractHashtags(entities: Array<HashtagEntity>?) =
+ entities?.map { it.text } ?: listOf()
+ }
+}
diff --git a/app/src/main/java/net/lacolaco/smileessence/entity/EntitySupport.kt b/app/src/main/java/net/lacolaco/smileessence/entity/EntitySupport.kt
deleted file mode 100644
index 121fa17d..00000000
--- a/app/src/main/java/net/lacolaco/smileessence/entity/EntitySupport.kt
+++ /dev/null
@@ -1,54 +0,0 @@
-package net.lacolaco.smileessence.entity
-
-import twitter4j.*
-
-import java.util.*
-
-abstract class EntitySupport(status: twitter4j.EntitySupport) {
- open val mentions: List<String> = extractMentions(status.userMentionEntities)
- open val hashtags: List<String> = extractHashtags(status.hashtagEntities)
- open val mediaUrls: List<String> = extractMediaUrls(status.mediaEntities)
- open val urlsExpanded: List<String> = extractExpandedUrls(status.urlEntities)
- open val symbols: List<String> = extractSymbols(status.symbolEntities)
-
- private fun extractMentions(entities: Array<UserMentionEntity>?) =
- entities?.map { it.screenName } ?: listOf()
-
- private fun extractSymbols(entities: Array<SymbolEntity>?) =
- entities?.map { it.text } ?: listOf()
-
- private fun extractExpandedUrls(entities: Array<URLEntity>?) =
- entities?.map { it.expandedURL } ?: listOf()
-
- private fun extractMediaUrls(entities: Array<MediaEntity>?) =
- entities?.map {
- when (it.type) {
- "photo" -> it.mediaURLHttps
- else -> it.expandedURL
- }
- } ?: listOf()
-
- private fun extractHashtags(entities: Array<HashtagEntity>?) =
- entities?.map { it.text } ?: listOf()
-
- protected fun extractText(status: twitter4j.Status, expand: Boolean) =
- extractText(status, status.text, expand)
-
- protected fun extractText(status: twitter4j.DirectMessage, expand: Boolean) =
- extractText(status, status.text, expand)
-
- private fun extractText(status: twitter4j.EntitySupport, text: String, expand: Boolean): String {
- val set = TreeSet<twitter4j.URLEntity> { a, b -> a.start - b.start }
- if (status.urlEntities != null)
- set += status.urlEntities
- if (status.mediaEntities != null)
- set += status.mediaEntities
-
- var t = text
- for (entity in set) {
- val newString = if (expand) entity.expandedURL else entity.displayURL
- t = t.replaceFirst(entity.text.toRegex(), newString)
- }
- return t
- }
-}
diff --git a/app/src/main/java/net/lacolaco/smileessence/entity/IdObject.kt b/app/src/main/java/net/lacolaco/smileessence/entity/IdObject.kt
index eb08d55f..02d0cc90 100644
--- a/app/src/main/java/net/lacolaco/smileessence/entity/IdObject.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/entity/IdObject.kt
@@ -1,5 +1,21 @@
package net.lacolaco.smileessence.entity
+import java.util.*
+
interface IdObject {
val id: Long
+/*
+ private var onChangeObservers: MutableSet<() -> Unit>?
+
+ @Synchronized
+ fun onChange(callback: () -> Unit) {
+ if (onChangeObservers == null)
+ onChangeObservers = Collections.newSetFromMap(WeakHashMap<() -> Unit, Boolean>())
+ onChangeObservers!!.add(callback)
+ }
+
+ @Synchronized
+ protected fun notifyChange() {
+ onChangeObservers?.forEach { it() }
+ }*/
}
diff --git a/app/src/main/java/net/lacolaco/smileessence/entity/Tweet.kt b/app/src/main/java/net/lacolaco/smileessence/entity/Tweet.kt
index dfdc3642..6db5ff36 100644
--- a/app/src/main/java/net/lacolaco/smileessence/entity/Tweet.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/entity/Tweet.kt
@@ -4,102 +4,42 @@ import android.net.Uri
import twitter4j.Status
import java.util.*
-import java.util.concurrent.ConcurrentHashMap
-class Tweet private constructor(st: twitter4j.Status, myUserId: Long) : EntitySupport(st), IdObject {
- override val id: Long = st.id
- val user: User = User.fromTwitter(st.user)
- val createdAt: Date = st.createdAt
- val source: String = st.source
- val retweetedTweet: Tweet? =
- if (st.isRetweet) Tweet.fromTwitter(st.retweetedStatus, myUserId)
- else null
- val isRetweet = retweetedTweet != null
- val originalTweet = retweetedTweet ?: this
- val text: String = retweetedTweet?.text ?: extractText(st, false)
- val inReplyToStatusId: Long? = when {
- isRetweet -> retweetedTweet!!.inReplyToStatusId
- st.inReplyToStatusId != -1L -> st.inReplyToStatusId
- else -> null
- }
- var favoriteCount: Int = st.favoriteCount
+class Tweet private constructor(st: twitter4j.Status, myUserId: Long) : IdObject {
+ override val id = st.id
+ val user = User.fromTwitter(st.user)
+ val createdAt = st.createdAt!!
+ val source = st.source!!
+ val inReplyToStatusId = st.inReplyToStatusId.takeIf { it != -1L }
+
+ private val retweetedTweet = st.retweetedStatus?.let { Tweet.fromTwitter(it, myUserId) }
+ val entities: Entities = retweetedTweet?.entities ?: Entities.fromTwitter(st)
+ val text: String = retweetedTweet?.text ?: entities.extractText(st, st.text)
+ var favoriteCount: Int = -1
get() = retweetedTweet?.favoriteCount ?: field
private set
- var retweetCount: Int = st.retweetCount
+ var retweetCount: Int = -1
get() = retweetedTweet?.retweetCount ?: field
private set
- private val favoriters: MutableSet<Long> = Collections.newSetFromMap(ConcurrentHashMap())
- private val retweets: MutableMap<Long, Long> = ConcurrentHashMap()
-
- // Override EntitySupport
- override val mentions: List<String> = retweetedTweet?.mentions ?: super.mentions
- override val hashtags: List<String> = retweetedTweet?.hashtags ?: super.hashtags
- override val mediaUrls: List<String> = retweetedTweet?.mediaUrls ?: super.mediaUrls
- override val urlsExpanded: List<String> = retweetedTweet?.urlsExpanded ?: super.urlsExpanded
- override val symbols: List<String> = retweetedTweet?.symbols ?: super.symbols
-
- init {
- update(st, myUserId)
- }
-
- private fun update(status: twitter4j.Status, myUserId: Long) {
- User.fromTwitter(status.user)
- if (retweetedTweet != null) {
- retweetedTweet.update(status.retweetedStatus, myUserId)
- if (status.isFavorited)
- retweetedTweet.favoriters.add(myUserId)
- if (status.user.id == myUserId)
- retweetedTweet.retweets.put(myUserId, status.id)
- } else {
- favoriteCount = status.favoriteCount
- retweetCount = status.retweetCount
- if (status.isFavorited)
- favoriters.add(myUserId)
- else
- favoriters.remove(myUserId)
- if (status.currentUserRetweetId > 0)
- retweets.put(myUserId, status.currentUserRetweetId)
- }
- }
-
- val twitterUrl: String
- get() = String.format("https://twitter.com/%s/status/%s", user.screenName, id)
-
- fun isFavoritedBy(id: Long): Boolean {
- return originalTweet.favoriters.contains(id)
- }
-
- fun addFavoriter(id: Long): Boolean {
- return originalTweet.favoriters.add(id)
- }
+ val favoriters: MutableSet<Long> = retweetedTweet?.favoriters ?: HashSet()
+ val retweets: MutableMap<Long, Long> = retweetedTweet?.retweets ?: HashMap()
- fun removeFavoriter(id: Long): Boolean {
- return originalTweet.favoriters.remove(id)
- }
-
- fun isRetweetedBy(id: Long): Boolean {
- return originalTweet.retweets.containsKey(id)
- }
-
- fun getRetweetIdBy(id: Long): Long {
- return originalTweet.retweets[id]!!
- }
+ // Utility functions
+ val isRetweet = retweetedTweet != null
+ val originalTweet = retweetedTweet ?: this
- // helper methods::
+ // XXX
val embeddedStatusIDs: List<Long> by lazy {
- val list = ArrayList<Long>()
- for (url in urlsExpanded) {
- val uri = Uri.parse(url)
+ entities.urlsExpanded.mapNotNull {
+ val uri = Uri.parse(it)
if ("twitter.com" == uri.host) {
val segments = uri.pathSegments
if (segments.size >= 3 && segments[1] == "status") {
- val idish = segments[2].toLongOrNull()
- if (idish != null)
- list.add(idish)
+ return@mapNotNull segments[2].toLongOrNull()
}
}
+ null
}
- list
}
companion object {
@@ -114,10 +54,26 @@ class Tweet private constructor(st: twitter4j.Status, myUserId: Long) : EntitySu
fun fromTwitter(st: twitter4j.Status, myUserId: Long): Tweet {
var t = fetch(st.id)
if (t == null) {
- t = Tweet(st, myUserId)
+ t = Tweet(st, myUserId).apply {
+ if (st.isFavorited)
+ favoriters += myUserId
+ if (st.currentUserRetweetId != -1L)
+ retweets[myUserId] = st.currentUserRetweetId
+ favoriteCount = st.favoriteCount
+ retweetCount = st.retweetCount
+ }
storage.put(st.id, t)
} else {
- t.update(st, myUserId)
+ User.fromTwitter(st.user)
+ st.retweetedStatus?.let { Tweet.fromTwitter(it, myUserId) }
+ if (st.isFavorited)
+ t.favoriters += myUserId
+ else
+ t.favoriters -= myUserId
+ if (st.currentUserRetweetId != -1L)
+ t.retweets[myUserId] = st.currentUserRetweetId
+ t.favoriteCount = st.favoriteCount
+ t.retweetCount = st.retweetCount
}
return t
}
diff --git a/app/src/main/java/net/lacolaco/smileessence/entity/User.kt b/app/src/main/java/net/lacolaco/smileessence/entity/User.kt
index 4b8e6f62..7b6f9f5d 100644
--- a/app/src/main/java/net/lacolaco/smileessence/entity/User.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/entity/User.kt
@@ -70,9 +70,6 @@ class User private constructor(override val id: Long, screenName: String, rawPro
val userHomeURL: String
get() = String.format("https://twitter.com/%s", screenName)
- val aclogTimelineURL: String
- get() = String.format("https://aclog.rhe.jp/%s/timeline", screenName)
-
// XXX
val decoratedDescription: String
get() {
@@ -93,7 +90,7 @@ class User private constructor(override val id: Long, screenName: String, rawPro
@Synchronized
fun fromTwitter(st: twitter4j.User): User {
- var u: User? = fetch(st.id)
+ var u = fetch(st.id)
if (u == null) {
u = User(st.id, st.screenName, "<not set>")
storage.put(st.id, u)
diff --git a/app/src/main/java/net/lacolaco/smileessence/twitter/UserStreamListener.kt b/app/src/main/java/net/lacolaco/smileessence/twitter/UserStreamListener.kt
index e72aaff4..f40c1ebf 100644
--- a/app/src/main/java/net/lacolaco/smileessence/twitter/UserStreamListener.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/twitter/UserStreamListener.kt
@@ -30,17 +30,15 @@ class UserStreamListener(private val world: World) : twitter4j.UserStreamListene
// --------------------- Interface StatusListener ---------------------
override fun onStatus(status: Status) {
- val user = world.user
- val tweet = Tweet.fromTwitter(status, user.id)
+ val tweet = Tweet.fromTwitter(status, world.user.id)
world.addTweet(tweet)
- if (tweet.isRetweet) {
- if (tweet.originalTweet.user == user) {
+ if (tweet.user !== world.user)
+ if (tweet.originalTweet.user === world.user)
addToHistory(Event(Event.EnumEvent.RETWEETED, tweet.user, tweet))
+ else if (tweet.entities.mentions.contains(world.user.screenName)) {
+ val mentioned = Event(Event.EnumEvent.MENTIONED, tweet.user, tweet)
+ world.notify(mentioned.formattedString)
}
- } else if (tweet.mentions.contains(user.screenName)) {
- val mentioned = Event(Event.EnumEvent.MENTIONED, tweet.user, tweet)
- world.notify(mentioned.formattedString)
- }
}
override fun onDeletionNotice(statusDeletionNotice: StatusDeletionNotice) {
@@ -73,7 +71,7 @@ class UserStreamListener(private val world: World) : twitter4j.UserStreamListene
override fun onFavorite(source: twitter4j.User, target: twitter4j.User, favoritedStatus: Status) {
val tweet = Tweet.fromTwitter(favoritedStatus, world.id)
- tweet.addFavoriter(source.id)
+ tweet.favoriters += source.id
if (User.fromTwitter(target) === world.user) {
addToHistory(Event(Event.EnumEvent.FAVORITED, User.fromTwitter(source), tweet))
}
@@ -81,7 +79,7 @@ class UserStreamListener(private val world: World) : twitter4j.UserStreamListene
override fun onUnfavorite(source: twitter4j.User, target: twitter4j.User, unfavoritedStatus: twitter4j.Status) {
val tweet = Tweet.fromTwitter(unfavoritedStatus, world.id)
- tweet.removeFavoriter(source.id)
+ tweet.favoriters -= source.id
if (User.fromTwitter(target) === world.user) {
addToHistory(Event(Event.EnumEvent.UNFAVORITED, User.fromTwitter(source), tweet))
}
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 cd41e980..c24eb5cd 100644
--- a/app/src/main/java/net/lacolaco/smileessence/view/Partials.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/view/Partials.kt
@@ -84,7 +84,7 @@ object Partials {
footerText += " (RT by ${tweet.user.screenName})"
view.textview_status_footer.text = footerText
- (view as TweetStateFrameLayout).isMention = tweet.mentions.contains(world.user.screenName)
+ (view as TweetStateFrameLayout).isMention = tweet.entities.mentions.contains(world.user.screenName)
view.isRetweet = tweet.isRetweet
view.isDirectMessage = false
view.isMine = tweet.originalTweet.user == world.user
@@ -95,7 +95,7 @@ object Partials {
view.tweet_retweet_count.visibility = View.VISIBLE
view.tweet_retweet_count.text = tweet.retweetCount.toString()
view.imageview_status_retweeted.visibility = View.VISIBLE
- view.imageview_status_retweeted.isActivated = tweet.isRetweetedBy(world.id)
+ view.imageview_status_retweeted.isActivated = world.id in tweet.retweets
} else {
view.tweet_retweet_count.visibility = View.INVISIBLE
view.imageview_status_retweeted.visibility = View.INVISIBLE
@@ -104,7 +104,7 @@ object Partials {
view.tweet_favorite_count.visibility = View.VISIBLE
view.tweet_favorite_count.text = tweet.favoriteCount.toString()
view.imageview_status_favorited.visibility = View.VISIBLE
- view.imageview_status_favorited.isActivated = tweet.isFavoritedBy(world.id)
+ view.imageview_status_favorited.isActivated = world.id in tweet.favoriters
} else {
view.tweet_favorite_count.visibility = View.INVISIBLE
view.imageview_status_favorited.visibility = View.INVISIBLE
diff --git a/app/src/main/java/net/lacolaco/smileessence/view/dialog/MessageDetailDialogFragment.kt b/app/src/main/java/net/lacolaco/smileessence/view/dialog/MessageDetailDialogFragment.kt
index ef1d3482..233b0850 100644
--- a/app/src/main/java/net/lacolaco/smileessence/view/dialog/MessageDetailDialogFragment.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/view/dialog/MessageDetailDialogFragment.kt
@@ -69,7 +69,7 @@ class MessageDetailDialogFragment : StackableDialogFragment() {
val users = mutableListOf<String>()
if (message.sender !== message.recipient)
users += message.recipient.screenName
- users += message.mentions
+ users += message.entities.mentions
for (screenName in users.distinct())
view.embedded_menu_items.add("@$screenName") {
val ref = ref(activity as MainActivity)
@@ -82,12 +82,12 @@ class MessageDetailDialogFragment : StackableDialogFragment() {
}
}
}
- for (hashtag in message.hashtags)
+ for (hashtag in message.entities.hashtags)
view.embedded_menu_items.add("#$hashtag") {
// XXX
(activity as MainActivity).openPostPageAndAppendText(" #$hashtag")
}
- for (url in message.urlsExpanded + message.mediaUrls)
+ for (url in message.entities.urlsExpanded + message.entities.mediaUrls)
view.embedded_menu_items.add(url) {
activity.browse(url)
}
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 5fb37ced..9e589176 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
@@ -39,8 +39,8 @@ class StatusDetailDialogFragment : StackableDialogFragment() {
statusHeader.isClickable = false
// XXX
- view.button_status_detail_favorite.isActivated = tweet.isFavoritedBy(world.id)
- view.button_status_detail_retweet.isActivated = tweet.isRetweetedBy(world.id)
+ 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)
@@ -74,7 +74,7 @@ class StatusDetailDialogFragment : StackableDialogFragment() {
val builder = StringBuilder()
builder.append("@${originalTweet.user.screenName} ")
- for (screenName in originalTweet.mentions) {
+ for (screenName in originalTweet.entities.mentions) {
if (screenName != world.user.screenName)
builder.append("@$screenName ")
}
@@ -85,10 +85,10 @@ class StatusDetailDialogFragment : StackableDialogFragment() {
}
view.button_status_detail_retweet.setOnClickListener {
confirm(R.string.dialog_confirm_commands) {
- if (tweet.isRetweetedBy(world.id)) {
+ if (world.id in tweet.retweets) {
launchUi {
try {
- world.deleteTweetAsync(tweet.getRetweetIdBy(world.id)).await()
+ world.deleteTweetAsync(tweet.retweets[world.id]!!).await()
world.notify(R.string.notice_status_delete_succeeded)
updateViewButtons(view)
} catch (e: TwitterTaskException) {
@@ -109,7 +109,7 @@ class StatusDetailDialogFragment : StackableDialogFragment() {
}
}
view.button_status_detail_favorite.setOnClickListener {
- val favoriting = !tweet.isFavoritedBy(world.id)
+ val favoriting = world.id !in tweet.favoriters
launchUi {
try {
@@ -153,14 +153,14 @@ class StatusDetailDialogFragment : StackableDialogFragment() {
world.notify(R.string.notice_add_to_reply)
}
popup.add(R.string.command_status_open_in_browser) {
- browse(tweet.originalTweet.twitterUrl)
+ 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", tweet.originalTweet.twitterUrl)
+ 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()
@@ -171,7 +171,7 @@ class StatusDetailDialogFragment : StackableDialogFragment() {
val users = mutableListOf<String>()
if (tweet.user !== tweet.originalTweet.user)
users += tweet.user.screenName
- users += tweet.mentions
+ users += tweet.entities.mentions
for (screenName in users.distinct())
view.embedded_menu_items.add("@$screenName") {
val ref = ref(activity as MainActivity)
@@ -184,12 +184,12 @@ class StatusDetailDialogFragment : StackableDialogFragment() {
}
}
}
- for (hashtag in tweet.hashtags)
+ for (hashtag in tweet.entities.hashtags)
view.embedded_menu_items.add("#$hashtag") {
// XXX
(activity as MainActivity).openPostPageAndAppendText(" #$hashtag")
}
- for (url in tweet.urlsExpanded + tweet.mediaUrls)
+ for (url in tweet.entities.urlsExpanded + tweet.entities.mediaUrls)
view.embedded_menu_items.add(url) {
activity.browse(url)
}
diff --git a/app/src/main/java/net/lacolaco/smileessence/view/dialog/UserDetailDialogFragment.kt b/app/src/main/java/net/lacolaco/smileessence/view/dialog/UserDetailDialogFragment.kt
index 52dc30d6..275f4a9c 100644
--- a/app/src/main/java/net/lacolaco/smileessence/view/dialog/UserDetailDialogFragment.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/view/dialog/UserDetailDialogFragment.kt
@@ -73,9 +73,6 @@ class UserDetailDialogFragment : StackableDialogFragment() {
}
}
}
- popup.add(R.string.command_user_open_aclog) {
- browse(user.aclogTimelineURL)
- }
popup.show()
}
diff --git a/app/src/main/java/net/lacolaco/smileessence/view/page/SearchPageFragment.kt b/app/src/main/java/net/lacolaco/smileessence/view/page/SearchPageFragment.kt
index 51102a54..74c70c35 100644
--- a/app/src/main/java/net/lacolaco/smileessence/view/page/SearchPageFragment.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/view/page/SearchPageFragment.kt
@@ -170,7 +170,7 @@ class SearchPageFragment : RefreshableTimelinePageFragment<Tweet, PageInfo.Searc
private fun runRefreshTask(query: Query, onFinish: () -> Unit) = launchUi {
try {
val tweets = world.doSearch(query).await()
- adapter.sortedList.addAll(tweets.filter { !it.isRetweet })
+ adapter.sortedList.addAll(tweets)
onFinish()
} catch (e: TwitterTaskException) {
world.notifyError(R.string.notice_error_search)
diff --git a/app/src/main/res/menu/main.xml b/app/src/main/res/menu/main.xml
index 94cdcd05..0d5dd789 100644
--- a/app/src/main/res/menu/main.xml
+++ b/app/src/main/res/menu/main.xml
@@ -4,10 +4,6 @@
android:id="@+id/actionbar_manage_pages"
android:title="Manage pages"
app:showAsAction="never" />
- <item
- android:id="@+id/actionbar_aclog"
- android:title="@string/actionbar_aclog"
- app:showAsAction="never" />
<group>
<item
android:id="@+id/open_version_dialog"