diff options
author | Kazuki Yamaguchi <k@rhe.jp> | 2017-10-25 00:30:08 +0900 |
---|---|---|
committer | Kazuki Yamaguchi <k@rhe.jp> | 2017-10-25 00:30:08 +0900 |
commit | f294462478a82c9c0d18ccea28dda4f4b593f31d (patch) | |
tree | cc1148d8a365902df70c5094f866f880df2379a7 /app/src/main/java/net/lacolaco/smileessence | |
parent | 0b16b186751aca2a6000e5bc949e8511b91c0dfd (diff) | |
download | SmileEssence-f294462478a82c9c0d18ccea28dda4f4b593f31d.tar.gz |
mpue
Diffstat (limited to 'app/src/main/java/net/lacolaco/smileessence')
4 files changed, 42 insertions, 15 deletions
diff --git a/app/src/main/java/net/lacolaco/smileessence/entity/Entities.kt b/app/src/main/java/net/lacolaco/smileessence/entity/Entities.kt index c5437154..0a3579b3 100644 --- a/app/src/main/java/net/lacolaco/smileessence/entity/Entities.kt +++ b/app/src/main/java/net/lacolaco/smileessence/entity/Entities.kt @@ -51,5 +51,7 @@ class Entities private constructor( private fun extractHashtags(entities: Array<HashtagEntity>?) = entities?.map { it.text } ?: listOf() + + val placeHolder = Entities(listOf(), listOf(), listOf(), listOf(), listOf()) } } 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 6db5ff36..eddaeb7c 100644 --- a/app/src/main/java/net/lacolaco/smileessence/entity/Tweet.kt +++ b/app/src/main/java/net/lacolaco/smileessence/entity/Tweet.kt @@ -1,20 +1,20 @@ package net.lacolaco.smileessence.entity import android.net.Uri -import twitter4j.Status +import twitter4j.* import java.util.* -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) +class Tweet private constructor( + override val id: Long, + val user: User, + val createdAt: Date, + val source: String, + val inReplyToStatusId: Long?, + private val retweetedTweet: Tweet?, + val entities: Entities, + val text: String +) : IdObject { var favoriteCount: Int = -1 get() = retweetedTweet?.favoriteCount ?: field private set @@ -54,7 +54,18 @@ class Tweet private constructor(st: twitter4j.Status, myUserId: Long) : IdObject fun fromTwitter(st: twitter4j.Status, myUserId: Long): Tweet { var t = fetch(st.id) if (t == null) { - t = Tweet(st, myUserId).apply { + val retweetedTweet = st.retweetedStatus?.let { Tweet.fromTwitter(it, myUserId) } + val entities = retweetedTweet?.entities ?: Entities.fromTwitter(st) + t = Tweet( + st.id, + User.fromTwitter(st.user), + st.createdAt, + st.source, + st.inReplyToStatusId.takeIf { it != -1L }, + retweetedTweet, + entities, + retweetedTweet?.text ?: entities.extractText(st, st.text) + ).apply { if (st.isFavorited) favoriters += myUserId if (st.currentUserRetweetId != -1L) @@ -82,5 +93,16 @@ class Tweet private constructor(st: twitter4j.Status, myUserId: Long) : IdObject fun fromTwitter(sts: List<Status>, myUserId: Long): List<Tweet> { return sts.map { st -> fromTwitter(st, myUserId) } } + + val placeHolder = Tweet( + -1, + User.placeHolder, + Date(), + "System", + null, + null, + Entities.placeHolder, + "Place holder" + ) } } 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 7b6f9f5d..b811916c 100644 --- a/app/src/main/java/net/lacolaco/smileessence/entity/User.kt +++ b/app/src/main/java/net/lacolaco/smileessence/entity/User.kt @@ -103,5 +103,8 @@ class User private constructor(override val id: Long, screenName: String, rawPro @Synchronized fun makeSkeletonForInternalUseOnly(id: Long, screenName: String, profileImageUrl: String) = fetch(id) ?: User(id, screenName, profileImageUrl).apply { storage.put(id, this) } + + val placeHolder = makeSkeletonForInternalUseOnly(-1, "<place holder>", + "https://abs.twimg.com/sticky/default_profile_images/default_profile.png") } } diff --git a/app/src/main/java/net/lacolaco/smileessence/view/Confirmation.kt b/app/src/main/java/net/lacolaco/smileessence/view/Confirmation.kt index 40e0e3fa..bbc4e460 100644 --- a/app/src/main/java/net/lacolaco/smileessence/view/Confirmation.kt +++ b/app/src/main/java/net/lacolaco/smileessence/view/Confirmation.kt @@ -1,11 +1,11 @@ package net.lacolaco.smileessence.view import android.app.Fragment +import android.content.Context import android.support.v7.app.AlertDialog -import android.support.v7.app.AppCompatActivity import net.lacolaco.smileessence.R -fun AppCompatActivity.confirm(resId: Int, vararg rest: Any, onOk: () -> Unit) { +fun Context.confirm(resId: Int, vararg rest: Any, onOk: () -> Unit) { val dialog = AlertDialog.Builder(this) .setTitle(getString(resId, *rest)) .setPositiveButton(R.string.alert_dialog_ok) { _, _ -> onOk() } @@ -15,4 +15,4 @@ fun AppCompatActivity.confirm(resId: Int, vararg rest: Any, onOk: () -> Unit) { } fun Fragment.confirm(resId: Int, vararg rest: Any, onOk: () -> Unit) = - (activity as AppCompatActivity).confirm(resId, rest = *rest, onOk = onOk) + activity.confirm(resId, rest = *rest, onOk = onOk) |