Handle conversations with scheduled messages only
This commit is contained in:
parent
f837790948
commit
ee8130c767
11 changed files with 171 additions and 36 deletions
|
|
@ -173,7 +173,7 @@ class ConversationsAdapter(
|
|||
}
|
||||
|
||||
try {
|
||||
conversations.removeAll(conversationsToRemove)
|
||||
conversations.removeAll(conversationsToRemove.toSet())
|
||||
} catch (ignored: Exception) {
|
||||
}
|
||||
|
||||
|
|
@ -319,15 +319,16 @@ class ConversationsAdapter(
|
|||
setTextSize(TypedValue.COMPLEX_UNIT_PX, fontSize * 0.8f)
|
||||
}
|
||||
|
||||
if (conversation.read) {
|
||||
conversation_address.setTypeface(null, Typeface.NORMAL)
|
||||
conversation_body_short.setTypeface(null, Typeface.NORMAL)
|
||||
val style = if (conversation.read) {
|
||||
conversation_body_short.alpha = 0.7f
|
||||
if (conversation.isScheduled) Typeface.ITALIC else Typeface.NORMAL
|
||||
} else {
|
||||
conversation_address.setTypeface(null, Typeface.BOLD)
|
||||
conversation_body_short.setTypeface(null, Typeface.BOLD)
|
||||
conversation_body_short.alpha = 1f
|
||||
if (conversation.isScheduled) Typeface.BOLD_ITALIC else Typeface.BOLD
|
||||
|
||||
}
|
||||
conversation_address.setTypeface(null, style)
|
||||
conversation_body_short.setTypeface(null, style)
|
||||
|
||||
arrayListOf<TextView>(conversation_address, conversation_body_short, conversation_date).forEach {
|
||||
it.setTextColor(textColor)
|
||||
|
|
|
|||
|
|
@ -51,9 +51,10 @@ import kotlinx.android.synthetic.main.item_thread_date_time.view.*
|
|||
import kotlinx.android.synthetic.main.item_thread_error.view.*
|
||||
import kotlinx.android.synthetic.main.item_thread_sending.view.*
|
||||
import kotlinx.android.synthetic.main.item_thread_success.view.*
|
||||
import java.util.*
|
||||
|
||||
class ThreadAdapter(
|
||||
activity: SimpleActivity, var messages: ArrayList<ThreadItem>, recyclerView: MyRecyclerView, itemClick: (Any) -> Unit
|
||||
activity: SimpleActivity, var messages: ArrayList<ThreadItem>, recyclerView: MyRecyclerView, itemClick: (Any) -> Unit, val onThreadIdUpdate: (Long) -> Unit
|
||||
) : MyRecyclerViewAdapter(activity, recyclerView, itemClick) {
|
||||
private var fontSize = activity.getTextSize()
|
||||
|
||||
|
|
@ -204,11 +205,21 @@ class ThreadAdapter(
|
|||
messagesToRemove.forEach {
|
||||
activity.deleteMessage((it as Message).id, it.isMMS)
|
||||
}
|
||||
messages.removeAll(messagesToRemove)
|
||||
messages.removeAll(messagesToRemove.toSet())
|
||||
activity.updateLastConversationMessage(threadId)
|
||||
|
||||
val messages = messages.filterIsInstance<Message>()
|
||||
if (messages.isNotEmpty() && messages.all { it.isScheduled }) {
|
||||
// move all scheduled messages to a temporary thread as there are no real messages left
|
||||
val message = messages.last()
|
||||
val newThreadId = generateRandomId()
|
||||
activity.createTemporaryThread(message, newThreadId)
|
||||
activity.updateScheduledMessagesThreadId(messages, newThreadId)
|
||||
onThreadIdUpdate(newThreadId)
|
||||
}
|
||||
|
||||
activity.runOnUiThread {
|
||||
if (messages.filter { it is Message }.isEmpty()) {
|
||||
if (messages.isEmpty()) {
|
||||
activity.finish()
|
||||
} else {
|
||||
removeSelectedItems(positions)
|
||||
|
|
@ -333,7 +344,7 @@ class ThreadAdapter(
|
|||
thread_message_scheduled_icon.beGone()
|
||||
|
||||
thread_message_body.setPadding(padding, padding, padding, padding)
|
||||
thread_message_body.typeface = Typeface.create(Typeface.DEFAULT, Typeface.NORMAL)
|
||||
thread_message_body.typeface = Typeface.DEFAULT
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -495,7 +506,7 @@ class ThreadAdapter(
|
|||
private fun launchViewIntent(uri: Uri, mimetype: String, filename: String) {
|
||||
Intent().apply {
|
||||
action = Intent.ACTION_VIEW
|
||||
setDataAndType(uri, mimetype.toLowerCase())
|
||||
setDataAndType(uri, mimetype.lowercase(Locale.getDefault()))
|
||||
addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
|
||||
|
||||
try {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue