fix: avoid unnecessary refresh by splitting refresh events (#556)
* fix: avoid unnecessary refresh by splitting refresh events * fix: suppress unused parameter lint error Refs: https://github.com/FossifyOrg/Messages/issues/82
This commit is contained in:
parent
72eb0af8ec
commit
3303fc7c07
19 changed files with 78 additions and 37 deletions
|
|
@ -8,6 +8,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||||
### Changed
|
### Changed
|
||||||
- Optimized loading messages in conversations
|
- Optimized loading messages in conversations
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- Fixed position reset when opening attachments in conversations ([#82])
|
||||||
|
|
||||||
## [1.4.0] - 2025-10-12
|
## [1.4.0] - 2025-10-12
|
||||||
### Added
|
### Added
|
||||||
- Ability to save multiple attachments ([#75])
|
- Ability to save multiple attachments ([#75])
|
||||||
|
|
@ -165,6 +168,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||||
[#334]: https://github.com/FossifyOrg/Messages/issues/334
|
[#334]: https://github.com/FossifyOrg/Messages/issues/334
|
||||||
[#349]: https://github.com/FossifyOrg/Messages/issues/349
|
[#349]: https://github.com/FossifyOrg/Messages/issues/349
|
||||||
[#359]: https://github.com/FossifyOrg/Messages/issues/359
|
[#359]: https://github.com/FossifyOrg/Messages/issues/359
|
||||||
|
[#82]: https://github.com/FossifyOrg/Messages/issues/82
|
||||||
[#456]: https://github.com/FossifyOrg/Messages/issues/456
|
[#456]: https://github.com/FossifyOrg/Messages/issues/456
|
||||||
[#461]: https://github.com/FossifyOrg/Messages/issues/461
|
[#461]: https://github.com/FossifyOrg/Messages/issues/461
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,13 @@ import android.annotation.SuppressLint
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import org.fossify.commons.dialogs.ConfirmationDialog
|
import org.fossify.commons.dialogs.ConfirmationDialog
|
||||||
import org.fossify.commons.extensions.*
|
import org.fossify.commons.extensions.areSystemAnimationsEnabled
|
||||||
|
import org.fossify.commons.extensions.beGoneIf
|
||||||
|
import org.fossify.commons.extensions.beVisibleIf
|
||||||
|
import org.fossify.commons.extensions.getProperBackgroundColor
|
||||||
|
import org.fossify.commons.extensions.getProperTextColor
|
||||||
|
import org.fossify.commons.extensions.hideKeyboard
|
||||||
|
import org.fossify.commons.extensions.viewBinding
|
||||||
import org.fossify.commons.helpers.NavigationIcon
|
import org.fossify.commons.helpers.NavigationIcon
|
||||||
import org.fossify.commons.helpers.ensureBackgroundThread
|
import org.fossify.commons.helpers.ensureBackgroundThread
|
||||||
import org.fossify.messages.R
|
import org.fossify.messages.R
|
||||||
|
|
@ -169,7 +175,7 @@ class ArchivedConversationsActivity : SimpleActivity() {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||||
fun refreshMessages(event: Events.RefreshMessages) {
|
fun refreshConversations(@Suppress("unused") event: Events.RefreshConversations) {
|
||||||
loadArchivedConversations()
|
loadArchivedConversations()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -682,7 +682,7 @@ class MainActivity : SimpleActivity() {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||||
fun refreshMessages(event: Events.RefreshMessages) {
|
fun refreshConversations(@Suppress("unused") event: Events.RefreshConversations) {
|
||||||
initMessenger()
|
initMessenger()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -180,7 +180,7 @@ class RecycleBinConversationsActivity : SimpleActivity() {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||||
fun refreshMessages(event: Events.RefreshMessages) {
|
fun refreshConversations(@Suppress("unused") event: Events.RefreshConversations) {
|
||||||
loadRecycleBinConversations()
|
loadRecycleBinConversations()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,6 @@ import org.fossify.commons.dialogs.RadioGroupDialog
|
||||||
import org.fossify.commons.dialogs.SecurityDialog
|
import org.fossify.commons.dialogs.SecurityDialog
|
||||||
import org.fossify.commons.extensions.addLockedLabelIfNeeded
|
import org.fossify.commons.extensions.addLockedLabelIfNeeded
|
||||||
import org.fossify.commons.extensions.beGone
|
import org.fossify.commons.extensions.beGone
|
||||||
import org.fossify.commons.extensions.beGoneIf
|
|
||||||
import org.fossify.commons.extensions.beVisible
|
import org.fossify.commons.extensions.beVisible
|
||||||
import org.fossify.commons.extensions.beVisibleIf
|
import org.fossify.commons.extensions.beVisibleIf
|
||||||
import org.fossify.commons.extensions.getBlockedNumbers
|
import org.fossify.commons.extensions.getBlockedNumbers
|
||||||
|
|
@ -49,7 +48,7 @@ import org.fossify.messages.helpers.LOCK_SCREEN_NOTHING
|
||||||
import org.fossify.messages.helpers.LOCK_SCREEN_SENDER
|
import org.fossify.messages.helpers.LOCK_SCREEN_SENDER
|
||||||
import org.fossify.messages.helpers.LOCK_SCREEN_SENDER_MESSAGE
|
import org.fossify.messages.helpers.LOCK_SCREEN_SENDER_MESSAGE
|
||||||
import org.fossify.messages.helpers.MessagesImporter
|
import org.fossify.messages.helpers.MessagesImporter
|
||||||
import org.fossify.messages.helpers.refreshMessages
|
import org.fossify.messages.helpers.refreshConversations
|
||||||
import java.util.Locale
|
import java.util.Locale
|
||||||
import kotlin.system.exitProcess
|
import kotlin.system.exitProcess
|
||||||
|
|
||||||
|
|
@ -133,7 +132,7 @@ class SettingsActivity : SimpleActivity() {
|
||||||
if (
|
if (
|
||||||
blockedNumbersAtPause != -1 && blockedNumbersAtPause != getBlockedNumbers().hashCode()
|
blockedNumbersAtPause != -1 && blockedNumbersAtPause != getBlockedNumbers().hashCode()
|
||||||
) {
|
) {
|
||||||
refreshMessages()
|
refreshConversations()
|
||||||
}
|
}
|
||||||
|
|
||||||
arrayOf(
|
arrayOf(
|
||||||
|
|
@ -238,7 +237,7 @@ class SettingsActivity : SimpleActivity() {
|
||||||
private fun setupChangeDateTimeFormat() = binding.apply {
|
private fun setupChangeDateTimeFormat() = binding.apply {
|
||||||
settingsChangeDateTimeFormatHolder.setOnClickListener {
|
settingsChangeDateTimeFormatHolder.setOnClickListener {
|
||||||
ChangeDateTimeFormatDialog(this@SettingsActivity) {
|
ChangeDateTimeFormatDialog(this@SettingsActivity) {
|
||||||
refreshMessages()
|
refreshConversations()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -40,6 +40,7 @@ import androidx.annotation.StringRes
|
||||||
import androidx.appcompat.content.res.AppCompatResources
|
import androidx.appcompat.content.res.AppCompatResources
|
||||||
import androidx.constraintlayout.widget.ConstraintLayout
|
import androidx.constraintlayout.widget.ConstraintLayout
|
||||||
import androidx.core.content.res.ResourcesCompat
|
import androidx.core.content.res.ResourcesCompat
|
||||||
|
import androidx.core.net.toUri
|
||||||
import androidx.core.view.ViewCompat
|
import androidx.core.view.ViewCompat
|
||||||
import androidx.core.view.WindowCompat
|
import androidx.core.view.WindowCompat
|
||||||
import androidx.core.view.WindowInsetsAnimationCompat
|
import androidx.core.view.WindowInsetsAnimationCompat
|
||||||
|
|
@ -47,6 +48,7 @@ import androidx.core.view.WindowInsetsCompat
|
||||||
import androidx.core.view.updateLayoutParams
|
import androidx.core.view.updateLayoutParams
|
||||||
import androidx.documentfile.provider.DocumentFile
|
import androidx.documentfile.provider.DocumentFile
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import com.google.gson.Gson
|
import com.google.gson.Gson
|
||||||
import com.google.gson.reflect.TypeToken
|
import com.google.gson.reflect.TypeToken
|
||||||
import org.fossify.commons.dialogs.ConfirmationDialog
|
import org.fossify.commons.dialogs.ConfirmationDialog
|
||||||
|
|
@ -122,6 +124,7 @@ import org.fossify.messages.extensions.deleteScheduledMessage
|
||||||
import org.fossify.messages.extensions.deleteSmsDraft
|
import org.fossify.messages.extensions.deleteSmsDraft
|
||||||
import org.fossify.messages.extensions.dialNumber
|
import org.fossify.messages.extensions.dialNumber
|
||||||
import org.fossify.messages.extensions.emptyMessagesRecycleBinForConversation
|
import org.fossify.messages.extensions.emptyMessagesRecycleBinForConversation
|
||||||
|
import org.fossify.messages.extensions.filterNotInByKey
|
||||||
import org.fossify.messages.extensions.getAddresses
|
import org.fossify.messages.extensions.getAddresses
|
||||||
import org.fossify.messages.extensions.getDefaultKeyboardHeight
|
import org.fossify.messages.extensions.getDefaultKeyboardHeight
|
||||||
import org.fossify.messages.extensions.getFileSizeFromUri
|
import org.fossify.messages.extensions.getFileSizeFromUri
|
||||||
|
|
@ -172,6 +175,7 @@ import org.fossify.messages.helpers.THREAD_NUMBER
|
||||||
import org.fossify.messages.helpers.THREAD_TEXT
|
import org.fossify.messages.helpers.THREAD_TEXT
|
||||||
import org.fossify.messages.helpers.THREAD_TITLE
|
import org.fossify.messages.helpers.THREAD_TITLE
|
||||||
import org.fossify.messages.helpers.generateRandomId
|
import org.fossify.messages.helpers.generateRandomId
|
||||||
|
import org.fossify.messages.helpers.refreshConversations
|
||||||
import org.fossify.messages.helpers.refreshMessages
|
import org.fossify.messages.helpers.refreshMessages
|
||||||
import org.fossify.messages.messaging.cancelScheduleSendPendingIntent
|
import org.fossify.messages.messaging.cancelScheduleSendPendingIntent
|
||||||
import org.fossify.messages.messaging.isLongMmsMessage
|
import org.fossify.messages.messaging.isLongMmsMessage
|
||||||
|
|
@ -195,9 +199,6 @@ import org.greenrobot.eventbus.Subscribe
|
||||||
import org.greenrobot.eventbus.ThreadMode
|
import org.greenrobot.eventbus.ThreadMode
|
||||||
import org.joda.time.DateTime
|
import org.joda.time.DateTime
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import androidx.core.net.toUri
|
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
|
||||||
import org.fossify.messages.extensions.filterNotInByKey
|
|
||||||
|
|
||||||
class ThreadActivity : SimpleActivity() {
|
class ThreadActivity : SimpleActivity() {
|
||||||
private var threadId = 0L
|
private var threadId = 0L
|
||||||
|
|
@ -312,7 +313,7 @@ class ThreadActivity : SimpleActivity() {
|
||||||
override fun onPause() {
|
override fun onPause() {
|
||||||
super.onPause()
|
super.onPause()
|
||||||
saveDraftMessage()
|
saveDraftMessage()
|
||||||
bus?.post(Events.RefreshMessages())
|
bus?.post(Events.RefreshConversations())
|
||||||
isActivityVisible = false
|
isActivityVisible = false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1069,7 +1070,7 @@ class ThreadActivity : SimpleActivity() {
|
||||||
numbers.forEach {
|
numbers.forEach {
|
||||||
addBlockedNumber(it)
|
addBlockedNumber(it)
|
||||||
}
|
}
|
||||||
refreshMessages()
|
refreshConversations()
|
||||||
finish()
|
finish()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1085,7 +1086,7 @@ class ThreadActivity : SimpleActivity() {
|
||||||
deleteConversation(threadId)
|
deleteConversation(threadId)
|
||||||
}
|
}
|
||||||
runOnUiThread {
|
runOnUiThread {
|
||||||
refreshMessages()
|
refreshConversations()
|
||||||
finish()
|
finish()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1097,7 +1098,7 @@ class ThreadActivity : SimpleActivity() {
|
||||||
ensureBackgroundThread {
|
ensureBackgroundThread {
|
||||||
restoreAllMessagesFromRecycleBinForConversation(threadId)
|
restoreAllMessagesFromRecycleBinForConversation(threadId)
|
||||||
runOnUiThread {
|
runOnUiThread {
|
||||||
refreshMessages()
|
refreshConversations()
|
||||||
finish()
|
finish()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1108,7 +1109,7 @@ class ThreadActivity : SimpleActivity() {
|
||||||
ensureBackgroundThread {
|
ensureBackgroundThread {
|
||||||
updateConversationArchivedStatus(threadId, true)
|
updateConversationArchivedStatus(threadId, true)
|
||||||
runOnUiThread {
|
runOnUiThread {
|
||||||
refreshMessages()
|
refreshConversations()
|
||||||
finish()
|
finish()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1118,7 +1119,7 @@ class ThreadActivity : SimpleActivity() {
|
||||||
ensureBackgroundThread {
|
ensureBackgroundThread {
|
||||||
updateConversationArchivedStatus(threadId, false)
|
updateConversationArchivedStatus(threadId, false)
|
||||||
runOnUiThread {
|
runOnUiThread {
|
||||||
refreshMessages()
|
refreshConversations()
|
||||||
finish()
|
finish()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1188,7 +1189,7 @@ class ThreadActivity : SimpleActivity() {
|
||||||
markThreadMessagesUnread(threadId)
|
markThreadMessagesUnread(threadId)
|
||||||
runOnUiThread {
|
runOnUiThread {
|
||||||
finish()
|
finish()
|
||||||
bus?.post(Events.RefreshMessages())
|
bus?.post(Events.RefreshConversations())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1273,7 +1274,7 @@ class ThreadActivity : SimpleActivity() {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hadUnreadItems) {
|
if (hadUnreadItems) {
|
||||||
bus?.post(Events.RefreshMessages())
|
bus?.post(Events.RefreshConversations())
|
||||||
}
|
}
|
||||||
|
|
||||||
return items
|
return items
|
||||||
|
|
@ -1581,6 +1582,7 @@ class ThreadActivity : SimpleActivity() {
|
||||||
messagesDB.insertOrUpdate(message)
|
messagesDB.insertOrUpdate(message)
|
||||||
if (shouldUnarchive()) {
|
if (shouldUnarchive()) {
|
||||||
updateConversationArchivedStatus(message.threadId, false)
|
updateConversationArchivedStatus(message.threadId, false)
|
||||||
|
refreshConversations()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ import org.fossify.messages.R
|
||||||
import org.fossify.messages.activities.SimpleActivity
|
import org.fossify.messages.activities.SimpleActivity
|
||||||
import org.fossify.messages.extensions.deleteConversation
|
import org.fossify.messages.extensions.deleteConversation
|
||||||
import org.fossify.messages.extensions.updateConversationArchivedStatus
|
import org.fossify.messages.extensions.updateConversationArchivedStatus
|
||||||
import org.fossify.messages.helpers.refreshMessages
|
import org.fossify.messages.helpers.refreshConversations
|
||||||
import org.fossify.messages.models.Conversation
|
import org.fossify.messages.models.Conversation
|
||||||
|
|
||||||
class ArchivedConversationsAdapter(
|
class ArchivedConversationsAdapter(
|
||||||
|
|
@ -83,12 +83,12 @@ class ArchivedConversationsAdapter(
|
||||||
|
|
||||||
activity.runOnUiThread {
|
activity.runOnUiThread {
|
||||||
if (newList.none { selectedKeys.contains(it.hashCode()) }) {
|
if (newList.none { selectedKeys.contains(it.hashCode()) }) {
|
||||||
refreshMessages()
|
refreshConversations()
|
||||||
finishActMode()
|
finishActMode()
|
||||||
} else {
|
} else {
|
||||||
submitList(newList)
|
submitList(newList)
|
||||||
if (newList.isEmpty()) {
|
if (newList.isEmpty()) {
|
||||||
refreshMessages()
|
refreshConversations()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,6 @@ import org.fossify.messages.extensions.markThreadMessagesRead
|
||||||
import org.fossify.messages.extensions.markThreadMessagesUnread
|
import org.fossify.messages.extensions.markThreadMessagesUnread
|
||||||
import org.fossify.messages.extensions.renameConversation
|
import org.fossify.messages.extensions.renameConversation
|
||||||
import org.fossify.messages.extensions.updateConversationArchivedStatus
|
import org.fossify.messages.extensions.updateConversationArchivedStatus
|
||||||
import org.fossify.messages.helpers.refreshMessages
|
|
||||||
import org.fossify.messages.messaging.isShortCodeWithLetters
|
import org.fossify.messages.messaging.isShortCodeWithLetters
|
||||||
import org.fossify.messages.models.Conversation
|
import org.fossify.messages.models.Conversation
|
||||||
|
|
||||||
|
|
@ -189,12 +188,12 @@ class ConversationsAdapter(
|
||||||
|
|
||||||
activity.runOnUiThread {
|
activity.runOnUiThread {
|
||||||
if (newList.none { selectedKeys.contains(it.hashCode()) }) {
|
if (newList.none { selectedKeys.contains(it.hashCode()) }) {
|
||||||
refreshMessages()
|
refreshConversations()
|
||||||
finishActMode()
|
finishActMode()
|
||||||
} else {
|
} else {
|
||||||
submitList(newList)
|
submitList(newList)
|
||||||
if (newList.isEmpty()) {
|
if (newList.isEmpty()) {
|
||||||
refreshMessages()
|
refreshConversations()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -220,12 +219,12 @@ class ConversationsAdapter(
|
||||||
|
|
||||||
activity.runOnUiThread {
|
activity.runOnUiThread {
|
||||||
if (newList.none { selectedKeys.contains(it.hashCode()) }) {
|
if (newList.none { selectedKeys.contains(it.hashCode()) }) {
|
||||||
refreshMessages()
|
refreshConversations()
|
||||||
finishActMode()
|
finishActMode()
|
||||||
} else {
|
} else {
|
||||||
submitList(newList)
|
submitList(newList)
|
||||||
if (newList.isEmpty()) {
|
if (newList.isEmpty()) {
|
||||||
refreshMessages()
|
refreshConversations()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -317,7 +316,7 @@ class ConversationsAdapter(
|
||||||
|
|
||||||
private fun refreshConversations() {
|
private fun refreshConversations() {
|
||||||
activity.runOnUiThread {
|
activity.runOnUiThread {
|
||||||
refreshMessages()
|
refreshConversations()
|
||||||
finishActMode()
|
finishActMode()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ import org.fossify.messages.R
|
||||||
import org.fossify.messages.activities.SimpleActivity
|
import org.fossify.messages.activities.SimpleActivity
|
||||||
import org.fossify.messages.extensions.deleteConversation
|
import org.fossify.messages.extensions.deleteConversation
|
||||||
import org.fossify.messages.extensions.restoreAllMessagesFromRecycleBinForConversation
|
import org.fossify.messages.extensions.restoreAllMessagesFromRecycleBinForConversation
|
||||||
import org.fossify.messages.helpers.refreshMessages
|
import org.fossify.messages.helpers.refreshConversations
|
||||||
import org.fossify.messages.models.Conversation
|
import org.fossify.messages.models.Conversation
|
||||||
|
|
||||||
class RecycleBinConversationsAdapter(
|
class RecycleBinConversationsAdapter(
|
||||||
|
|
@ -95,12 +95,12 @@ class RecycleBinConversationsAdapter(
|
||||||
|
|
||||||
activity.runOnUiThread {
|
activity.runOnUiThread {
|
||||||
if (newList.none { selectedKeys.contains(it.hashCode()) }) {
|
if (newList.none { selectedKeys.contains(it.hashCode()) }) {
|
||||||
refreshMessages()
|
refreshConversations()
|
||||||
finishActMode()
|
finishActMode()
|
||||||
} else {
|
} else {
|
||||||
submitList(newList)
|
submitList(newList)
|
||||||
if (newList.isEmpty()) {
|
if (newList.isEmpty()) {
|
||||||
refreshMessages()
|
refreshConversations()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -104,6 +104,10 @@ fun refreshMessages() {
|
||||||
EventBus.getDefault().post(Events.RefreshMessages())
|
EventBus.getDefault().post(Events.RefreshMessages())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun refreshConversations() {
|
||||||
|
EventBus.getDefault().post(Events.RefreshConversations())
|
||||||
|
}
|
||||||
|
|
||||||
/** Not to be used with real messages persisted in the telephony db. This is for internal use only (e.g. scheduled messages, notification ids etc). */
|
/** Not to be used with real messages persisted in the telephony db. This is for internal use only (e.g. scheduled messages, notification ids etc). */
|
||||||
fun generateRandomId(length: Int = 9): Long {
|
fun generateRandomId(length: Int = 9): Long {
|
||||||
val millis = DateTime.now(DateTimeZone.UTC).millis
|
val millis = DateTime.now(DateTimeZone.UTC).millis
|
||||||
|
|
|
||||||
|
|
@ -99,7 +99,7 @@ class MessagesImporter(private val activity: SimpleActivity) {
|
||||||
}
|
}
|
||||||
|
|
||||||
messageWriter.fixConversationDates()
|
messageWriter.fixConversationDates()
|
||||||
refreshMessages()
|
refreshConversations()
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
activity.showErrorToast(e)
|
activity.showErrorToast(e)
|
||||||
}
|
}
|
||||||
|
|
@ -153,7 +153,7 @@ class MessagesImporter(private val activity: SimpleActivity) {
|
||||||
messagesFailed++
|
messagesFailed++
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
refreshMessages()
|
refreshConversations()
|
||||||
}
|
}
|
||||||
when {
|
when {
|
||||||
messagesFailed > 0 && messagesImported > 0 -> {
|
messagesFailed > 0 && messagesImported > 0 -> {
|
||||||
|
|
|
||||||
|
|
@ -2,4 +2,5 @@ package org.fossify.messages.models
|
||||||
|
|
||||||
class Events {
|
class Events {
|
||||||
class RefreshMessages
|
class RefreshMessages
|
||||||
|
class RefreshConversations
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ import org.fossify.messages.extensions.updateLastConversationMessage
|
||||||
import org.fossify.messages.helpers.IS_MMS
|
import org.fossify.messages.helpers.IS_MMS
|
||||||
import org.fossify.messages.helpers.MESSAGE_ID
|
import org.fossify.messages.helpers.MESSAGE_ID
|
||||||
import org.fossify.messages.helpers.THREAD_ID
|
import org.fossify.messages.helpers.THREAD_ID
|
||||||
|
import org.fossify.messages.helpers.refreshConversations
|
||||||
import org.fossify.messages.helpers.refreshMessages
|
import org.fossify.messages.helpers.refreshMessages
|
||||||
|
|
||||||
class DeleteSmsReceiver : BroadcastReceiver() {
|
class DeleteSmsReceiver : BroadcastReceiver() {
|
||||||
|
|
@ -23,6 +24,7 @@ class DeleteSmsReceiver : BroadcastReceiver() {
|
||||||
context.deleteMessage(messageId, isMms)
|
context.deleteMessage(messageId, isMms)
|
||||||
context.updateLastConversationMessage(threadId)
|
context.updateLastConversationMessage(threadId)
|
||||||
refreshMessages()
|
refreshMessages()
|
||||||
|
refreshConversations()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ import org.fossify.messages.extensions.conversationsDB
|
||||||
import org.fossify.messages.extensions.markThreadMessagesRead
|
import org.fossify.messages.extensions.markThreadMessagesRead
|
||||||
import org.fossify.messages.helpers.MARK_AS_READ
|
import org.fossify.messages.helpers.MARK_AS_READ
|
||||||
import org.fossify.messages.helpers.THREAD_ID
|
import org.fossify.messages.helpers.THREAD_ID
|
||||||
import org.fossify.messages.helpers.refreshMessages
|
import org.fossify.messages.helpers.refreshConversations
|
||||||
|
|
||||||
class MarkAsReadReceiver : BroadcastReceiver() {
|
class MarkAsReadReceiver : BroadcastReceiver() {
|
||||||
override fun onReceive(context: Context, intent: Intent) {
|
override fun onReceive(context: Context, intent: Intent) {
|
||||||
|
|
@ -20,7 +20,7 @@ class MarkAsReadReceiver : BroadcastReceiver() {
|
||||||
ensureBackgroundThread {
|
ensureBackgroundThread {
|
||||||
context.markThreadMessagesRead(threadId)
|
context.markThreadMessagesRead(threadId)
|
||||||
context.conversationsDB.markRead(threadId)
|
context.conversationsDB.markRead(threadId)
|
||||||
refreshMessages()
|
refreshConversations()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,7 @@ import org.fossify.messages.extensions.shouldUnarchive
|
||||||
import org.fossify.messages.extensions.showReceivedMessageNotification
|
import org.fossify.messages.extensions.showReceivedMessageNotification
|
||||||
import org.fossify.messages.extensions.updateConversationArchivedStatus
|
import org.fossify.messages.extensions.updateConversationArchivedStatus
|
||||||
import org.fossify.messages.helpers.ReceiverUtils.isMessageFilteredOut
|
import org.fossify.messages.helpers.ReceiverUtils.isMessageFilteredOut
|
||||||
|
import org.fossify.messages.helpers.refreshConversations
|
||||||
import org.fossify.messages.helpers.refreshMessages
|
import org.fossify.messages.helpers.refreshMessages
|
||||||
import org.fossify.messages.models.Message
|
import org.fossify.messages.models.Message
|
||||||
|
|
||||||
|
|
@ -93,6 +94,7 @@ class MmsReceiver : MmsReceivedReceiver() {
|
||||||
context.updateConversationArchivedStatus(mms.threadId, false)
|
context.updateConversationArchivedStatus(mms.threadId, false)
|
||||||
}
|
}
|
||||||
refreshMessages()
|
refreshMessages()
|
||||||
|
refreshConversations()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ import org.fossify.commons.extensions.showErrorToast
|
||||||
import org.fossify.commons.extensions.toast
|
import org.fossify.commons.extensions.toast
|
||||||
import org.fossify.messages.R
|
import org.fossify.messages.R
|
||||||
import org.fossify.messages.extensions.deleteMessage
|
import org.fossify.messages.extensions.deleteMessage
|
||||||
|
import org.fossify.messages.helpers.refreshConversations
|
||||||
import org.fossify.messages.helpers.refreshMessages
|
import org.fossify.messages.helpers.refreshMessages
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
|
|
@ -52,6 +53,7 @@ class MmsSentReceiver : SendStatusReceiver() {
|
||||||
|
|
||||||
override fun updateAppDatabase(context: Context, intent: Intent, receiverResultCode: Int) {
|
override fun updateAppDatabase(context: Context, intent: Intent, receiverResultCode: Int) {
|
||||||
refreshMessages()
|
refreshMessages()
|
||||||
|
refreshConversations()
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@ import org.fossify.messages.extensions.getAddresses
|
||||||
import org.fossify.messages.extensions.messagesDB
|
import org.fossify.messages.extensions.messagesDB
|
||||||
import org.fossify.messages.helpers.SCHEDULED_MESSAGE_ID
|
import org.fossify.messages.helpers.SCHEDULED_MESSAGE_ID
|
||||||
import org.fossify.messages.helpers.THREAD_ID
|
import org.fossify.messages.helpers.THREAD_ID
|
||||||
|
import org.fossify.messages.helpers.refreshConversations
|
||||||
import org.fossify.messages.helpers.refreshMessages
|
import org.fossify.messages.helpers.refreshMessages
|
||||||
import org.fossify.messages.messaging.sendMessageCompat
|
import org.fossify.messages.messaging.sendMessageCompat
|
||||||
|
|
||||||
|
|
@ -52,6 +53,7 @@ class ScheduledMessageReceiver : BroadcastReceiver() {
|
||||||
context.deleteScheduledMessage(messageId)
|
context.deleteScheduledMessage(messageId)
|
||||||
context.conversationsDB.deleteThreadId(messageId)
|
context.conversationsDB.deleteThreadId(messageId)
|
||||||
refreshMessages()
|
refreshMessages()
|
||||||
|
refreshConversations()
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
context.showErrorToast(e)
|
context.showErrorToast(e)
|
||||||
} catch (e: Error) {
|
} catch (e: Error) {
|
||||||
|
|
|
||||||
|
|
@ -13,8 +13,18 @@ import org.fossify.commons.helpers.SimpleContactsHelper
|
||||||
import org.fossify.commons.helpers.ensureBackgroundThread
|
import org.fossify.commons.helpers.ensureBackgroundThread
|
||||||
import org.fossify.commons.models.PhoneNumber
|
import org.fossify.commons.models.PhoneNumber
|
||||||
import org.fossify.commons.models.SimpleContact
|
import org.fossify.commons.models.SimpleContact
|
||||||
import org.fossify.messages.extensions.*
|
import org.fossify.messages.extensions.getConversations
|
||||||
|
import org.fossify.messages.extensions.getNameFromAddress
|
||||||
|
import org.fossify.messages.extensions.getNotificationBitmap
|
||||||
|
import org.fossify.messages.extensions.getThreadId
|
||||||
|
import org.fossify.messages.extensions.insertNewSMS
|
||||||
|
import org.fossify.messages.extensions.insertOrUpdateConversation
|
||||||
|
import org.fossify.messages.extensions.messagesDB
|
||||||
|
import org.fossify.messages.extensions.shouldUnarchive
|
||||||
|
import org.fossify.messages.extensions.showReceivedMessageNotification
|
||||||
|
import org.fossify.messages.extensions.updateConversationArchivedStatus
|
||||||
import org.fossify.messages.helpers.ReceiverUtils.isMessageFilteredOut
|
import org.fossify.messages.helpers.ReceiverUtils.isMessageFilteredOut
|
||||||
|
import org.fossify.messages.helpers.refreshConversations
|
||||||
import org.fossify.messages.helpers.refreshMessages
|
import org.fossify.messages.helpers.refreshMessages
|
||||||
import org.fossify.messages.models.Message
|
import org.fossify.messages.models.Message
|
||||||
|
|
||||||
|
|
@ -112,6 +122,7 @@ class SmsReceiver : BroadcastReceiver() {
|
||||||
context.updateConversationArchivedStatus(threadId, false)
|
context.updateConversationArchivedStatus(threadId, false)
|
||||||
}
|
}
|
||||||
refreshMessages()
|
refreshMessages()
|
||||||
|
refreshConversations()
|
||||||
context.showReceivedMessageNotification(newMessageId, address, body, threadId, bitmap)
|
context.showReceivedMessageNotification(newMessageId, address, body, threadId, bitmap)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,13 @@ import androidx.lifecycle.Lifecycle
|
||||||
import androidx.lifecycle.ProcessLifecycleOwner
|
import androidx.lifecycle.ProcessLifecycleOwner
|
||||||
import org.fossify.commons.extensions.getMyContactsCursor
|
import org.fossify.commons.extensions.getMyContactsCursor
|
||||||
import org.fossify.commons.helpers.ensureBackgroundThread
|
import org.fossify.commons.helpers.ensureBackgroundThread
|
||||||
import org.fossify.messages.extensions.*
|
import org.fossify.messages.extensions.getMessageRecipientAddress
|
||||||
|
import org.fossify.messages.extensions.getNameFromAddress
|
||||||
|
import org.fossify.messages.extensions.getThreadId
|
||||||
|
import org.fossify.messages.extensions.messagesDB
|
||||||
|
import org.fossify.messages.extensions.messagingUtils
|
||||||
|
import org.fossify.messages.extensions.notificationHelper
|
||||||
|
import org.fossify.messages.helpers.refreshConversations
|
||||||
import org.fossify.messages.helpers.refreshMessages
|
import org.fossify.messages.helpers.refreshMessages
|
||||||
|
|
||||||
/** Handles updating databases and states when a SMS message is sent. */
|
/** Handles updating databases and states when a SMS message is sent. */
|
||||||
|
|
@ -48,6 +54,7 @@ class SmsStatusSentReceiver : SendStatusReceiver() {
|
||||||
|
|
||||||
context.messagesDB.updateType(messageId, type)
|
context.messagesDB.updateType(messageId, type)
|
||||||
refreshMessages()
|
refreshMessages()
|
||||||
|
refreshConversations()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue