Launcher widget

This commit is contained in:
Moez Bhatti
2018-03-27 01:12:30 -04:00
parent 38ea0f8a78
commit bb8b2e6cdc
17 changed files with 718 additions and 1 deletions
@@ -19,6 +19,8 @@
package manager
import android.content.Context
import android.content.Intent
import com.klinker.android.send_message.BroadcastUtils
import me.leolin.shortcutbadger.ShortcutBadger
import javax.inject.Inject
@@ -26,6 +28,8 @@ class WidgetManagerImpl @Inject constructor(private val context: Context) : Widg
override fun updateUnreadCount(count: Int) {
ShortcutBadger.applyCount(context, count)
BroadcastUtils.sendExplicitBroadcast(context, Intent(), WidgetManager.ACTION_NOTIFY_DATASET_CHANGED)
}
}
@@ -93,6 +93,27 @@ class MessageRepositoryImpl @Inject constructor(
})
}
override fun getConversationsForWidget(): List<Pair<Conversation, Message>> {
val realm = Realm.getDefaultInstance()
val conversations = realm.copyFromRealm(realm.where(Conversation::class.java)
.equalTo("archived", false)
.equalTo("blocked", false)
.findAll())
val messages = realm.copyFromRealm(realm.where(Message::class.java)
.sort("date", Sort.DESCENDING)
.distinctValues("threadId")
.findAll())
val conversationMap = conversations.associateBy { conversation -> conversation.id }
return messages.mapNotNull { message ->
val conversation = conversationMap[message.threadId]
if (conversation == null) null else Pair(conversation, message)
}
}
override fun getBlockedConversations(): Flowable<List<Conversation>> {
return Realm.getDefaultInstance()
.where(Conversation::class.java)