diff options
Diffstat (limited to 'app/src/main/java/net/lacolaco/smileessence/entity/DirectMessage.kt')
-rw-r--r-- | app/src/main/java/net/lacolaco/smileessence/entity/DirectMessage.kt | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/app/src/main/java/net/lacolaco/smileessence/entity/DirectMessage.kt b/app/src/main/java/net/lacolaco/smileessence/entity/DirectMessage.kt new file mode 100644 index 00000000..e89868f8 --- /dev/null +++ b/app/src/main/java/net/lacolaco/smileessence/entity/DirectMessage.kt @@ -0,0 +1,44 @@ +package net.lacolaco.smileessence.entity + +import java.util.Date +import java.util.HashMap + +class DirectMessage private constructor(message: twitter4j.DirectMessage) : EntitySupport(), 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 + + init { + updateEntities(message) + } + + companion object { + private val storage = HashMap<Long, DirectMessage>() + + @Synchronized + fun fetch(statusId: Long): DirectMessage? { + return storage[statusId] + } + + @Synchronized + fun fromTwitter(st: twitter4j.DirectMessage): DirectMessage { + var t: DirectMessage? = fetch(st.id) + if (t == null) { + t = DirectMessage(st) + storage.put(st.id, t) + } else { + // Update local cache + User.fromTwitter(st.sender) + User.fromTwitter(st.recipient) + } + return t + } + + @Synchronized + fun fromTwitter(sts: Iterable<twitter4j.DirectMessage>): List<DirectMessage> { + return sts.map { fromTwitter(it) } + } + } +} |