diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/messages/MessageFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/messages/MessageFragment.kt index 3f0cd068..31b6abc5 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/messages/MessageFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/messages/MessageFragment.kt @@ -146,25 +146,34 @@ class MessageFragment : Fragment(), CoroutineScope { else app.db.messageDao().getByIdNow(App.profileId, messageId) + if (msg == null) + return@withContext null + + // make recipients ID-unique + // this helps when multiple profiles receive the same message + // (there are multiple -1 recipients for the same message ID) + val recipientsDistinct = + msg.recipients?.distinctBy { it.id } ?: return@withContext null + msg.recipients?.clear() + msg.recipients?.addAll(recipientsDistinct) + // load recipients in sent messages val teachers by lazy { app.db.teacherDao().getAllNow(App.profileId) } - msg?.recipients?.forEach { recipient -> + msg.recipients?.forEach { recipient -> if (recipient.fullName == null) { recipient.fullName = teachers.firstOrNull { it.id == recipient.id }?.fullName ?: "" } } - if (msg?.type == TYPE_SENT && msg.senderName == null) { + if (msg.type == TYPE_SENT && msg.senderName == null) { msg.senderName = app.profile.accountName ?: app.profile.studentNameLong } - msg?.also { - //it.recipients = app.db.messageRecipientDao().getAllByMessageId(it.profileId, it.id) - if (it.body != null && !it.seen) { - app.db.metadataDao().setSeen(it.profileId, it, true) - } + //msg.recipients = app.db.messageRecipientDao().getAllByMessageId(msg.profileId, msg.id) + if (msg.body != null && !msg.seen) { + app.db.metadataDao().setSeen(msg.profileId, msg, true) } - + return@withContext msg } ?: run { activity.navigateUp() return@launch diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/messages/compose/MessagesComposeChipCreator.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/messages/compose/MessagesComposeChipCreator.kt index 649fd9ed..bae40587 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/messages/compose/MessagesComposeChipCreator.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/messages/compose/MessagesComposeChipCreator.kt @@ -62,10 +62,12 @@ class MessagesComposeChipCreator( Teacher.TYPE_EDUCATOR, Teacher.TYPE_STUDENT ) + + val adapter = nacho.adapter as? MessagesComposeSuggestionAdapter ?: return null val teachers = if (sortByCategory) - teacherList.sortedBy { it.typeDescription } + adapter.originalList.sortedBy { it.typeDescription } else - teacherList + adapter.originalList val category = mutableListOf() val categoryNames = mutableListOf() diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/views/AttachmentsView.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/views/AttachmentsView.kt index c981a4ba..59131672 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/views/AttachmentsView.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/views/AttachmentsView.kt @@ -6,7 +6,6 @@ package pl.szczodrzynski.edziennik.ui.modules.views import android.content.Context import android.os.Bundle -import android.os.Environment import android.util.AttributeSet import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.widget.PopupMenu @@ -68,7 +67,10 @@ class AttachmentsView @JvmOverloads constructor( attachmentIds.forEachIndexed { index, id -> val name = attachmentNames[index] ?: return@forEachIndexed - val size = attachmentSizes?.getOrNull(index) + var size = attachmentSizes?.getOrNull(index) + // hide the size if less than 1 byte + if (size?.compareTo(1) == -1) + size = null val item = AttachmentAdapter.Item(profileId, owner, id, name, size) adapter.items += item @@ -100,6 +102,8 @@ class AttachmentsView @JvmOverloads constructor( val fileUrl = item.name.substringAfter(":", missingDelimiterValue = "") // update file name with the downloaded one item.name = attachmentFile.name + // update file size (useful for items with no defined size) + item.size = attachmentFile.length() // save the download url back if (fileUrl != "") item.name += ":$fileUrl"