aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/net/lacolaco/smileessence/entity/DirectMessage.kt
diff options
context:
space:
mode:
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.kt44
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) }
+ }
+ }
+}