mirror of
https://github.com/oxen-io/session-android.git
synced 2025-08-11 14:37:45 +00:00
Merge remote-tracking branch 'origin/dev' into closed_groups
# Conflicts: # app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivityV2.kt # app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationViewModel.kt # app/src/main/java/org/thoughtcrime/securesms/database/MmsDatabase.kt # app/src/main/java/org/thoughtcrime/securesms/database/SmsDatabase.java # app/src/main/java/org/thoughtcrime/securesms/database/Storage.kt # app/src/main/java/org/thoughtcrime/securesms/database/ThreadDatabase.java # app/src/main/java/org/thoughtcrime/securesms/database/model/ThreadRecord.java # app/src/main/java/org/thoughtcrime/securesms/preferences/SettingsViewModel.kt # app/src/main/res/layout/activity_conversation_v2.xml # app/src/test/java/org/thoughtcrime/securesms/conversation/v2/ConversationViewModelTest.kt
This commit is contained in:
@@ -38,6 +38,7 @@ interface MessageDataProvider {
|
||||
fun updateAudioAttachmentDuration(attachmentId: AttachmentId, durationMs: Long, threadId: Long)
|
||||
fun isMmsOutgoing(mmsMessageId: Long): Boolean
|
||||
fun isOutgoingMessage(timestamp: Long): Boolean
|
||||
fun isDeletedMessage(timestamp: Long): Boolean
|
||||
fun handleSuccessfulAttachmentUpload(attachmentId: Long, attachmentStream: SignalServiceAttachmentStream, attachmentKey: ByteArray, uploadResult: UploadResult)
|
||||
fun handleFailedAttachmentUpload(attachmentId: Long)
|
||||
fun getMessageForQuote(timestamp: Long, author: Address): Triple<Long, Boolean, String>?
|
||||
|
@@ -39,6 +39,13 @@ class MessageSendJob(val message: Message, val destination: Destination) : Job {
|
||||
val message = message as? VisibleMessage
|
||||
val storage = MessagingModuleConfiguration.shared.storage
|
||||
|
||||
// do not attempt to send if the message is marked as deleted
|
||||
message?.sentTimestamp?.let{
|
||||
if(messageDataProvider.isDeletedMessage(it)){
|
||||
return@execute
|
||||
}
|
||||
}
|
||||
|
||||
val sentTimestamp = this.message.sentTimestamp
|
||||
val sender = storage.getUserPublicKey()
|
||||
if (sentTimestamp != null && sender != null) {
|
||||
@@ -97,7 +104,10 @@ class MessageSendJob(val message: Message, val destination: Destination) : Job {
|
||||
Log.w(TAG, "Failed to send $message::class.simpleName.", error)
|
||||
val message = message as? VisibleMessage
|
||||
if (message != null) {
|
||||
if (!MessagingModuleConfiguration.shared.messageDataProvider.isOutgoingMessage(message.sentTimestamp!!)) {
|
||||
if (
|
||||
MessagingModuleConfiguration.shared.messageDataProvider.isDeletedMessage(message.sentTimestamp!!) ||
|
||||
!MessagingModuleConfiguration.shared.messageDataProvider.isOutgoingMessage(message.sentTimestamp!!)
|
||||
) {
|
||||
return // The message has been deleted
|
||||
}
|
||||
}
|
||||
|
@@ -511,9 +511,15 @@ object MessageSender {
|
||||
|
||||
fun handleFailedMessageSend(message: Message, error: Exception, isSyncMessage: Boolean = false) {
|
||||
val storage = MessagingModuleConfiguration.shared.storage
|
||||
val timestamp = message.sentTimestamp!!
|
||||
|
||||
// no need to handle if message is marked as deleted
|
||||
if(MessagingModuleConfiguration.shared.messageDataProvider.isDeletedMessage(message.sentTimestamp!!)){
|
||||
return
|
||||
}
|
||||
|
||||
val userPublicKey = storage.getUserPublicKey()!!
|
||||
|
||||
val timestamp = message.sentTimestamp!!
|
||||
val author = message.sender ?: userPublicKey
|
||||
|
||||
if (isSyncMessage) storage.markAsSyncFailed(timestamp, author, error)
|
||||
|
@@ -46,7 +46,8 @@ object LocalisedTimeUtil {
|
||||
"${this.inWholeHours}h ${minutesRemaining}m"
|
||||
} else if (this.inWholeMinutes > 0) {
|
||||
val secondsRemaining = this.minus(1.minutes.times(this.inWholeMinutes.toInt())).inWholeSeconds
|
||||
"${this.inWholeMinutes}m ${secondsRemaining}s"
|
||||
if(secondsRemaining > 0) "${this.inWholeMinutes}m ${secondsRemaining}s"
|
||||
else "${this.inWholeMinutes}m"
|
||||
} else {
|
||||
"0m ${this.inWholeSeconds}s"
|
||||
}
|
||||
|
@@ -114,7 +114,6 @@ interface TextSecurePreferences {
|
||||
fun isEnterSendsEnabled(): Boolean
|
||||
fun isPasswordDisabled(): Boolean
|
||||
fun setPasswordDisabled(disabled: Boolean)
|
||||
fun isScreenSecurityEnabled(): Boolean
|
||||
fun getLastVersionCode(): Int
|
||||
fun setLastVersionCode(versionCode: Int)
|
||||
fun isPassphraseTimeoutEnabled(): Boolean
|
||||
@@ -219,7 +218,6 @@ interface TextSecurePreferences {
|
||||
const val LED_BLINK_PREF_CUSTOM = "pref_led_blink_custom"
|
||||
const val PASSPHRASE_TIMEOUT_INTERVAL_PREF = "pref_timeout_interval"
|
||||
const val PASSPHRASE_TIMEOUT_PREF = "pref_timeout_passphrase"
|
||||
const val SCREEN_SECURITY_PREF = "pref_screen_security"
|
||||
const val ENTER_SENDS_PREF = "pref_enter_sends"
|
||||
const val THREAD_TRIM_ENABLED = "pref_trim_threads"
|
||||
internal const val LOCAL_NUMBER_PREF = "pref_local_number"
|
||||
@@ -666,11 +664,6 @@ interface TextSecurePreferences {
|
||||
setBooleanPreference(context, DISABLE_PASSPHRASE_PREF, disabled)
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun isScreenSecurityEnabled(context: Context): Boolean {
|
||||
return getBooleanPreference(context, SCREEN_SECURITY_PREF, context.resources.getBoolean(R.bool.screen_security_default))
|
||||
}
|
||||
|
||||
fun getLastVersionCode(context: Context): Int {
|
||||
return getIntegerPreference(context, LAST_VERSION_CODE_PREF, 0)
|
||||
}
|
||||
@@ -1298,10 +1291,6 @@ class AppTextSecurePreferences @Inject constructor(
|
||||
setBooleanPreference(TextSecurePreferences.DISABLE_PASSPHRASE_PREF, disabled)
|
||||
}
|
||||
|
||||
override fun isScreenSecurityEnabled(): Boolean {
|
||||
return getBooleanPreference(TextSecurePreferences.SCREEN_SECURITY_PREF, true)
|
||||
}
|
||||
|
||||
override fun getLastVersionCode(): Int {
|
||||
return getIntegerPreference(TextSecurePreferences.LAST_VERSION_CODE_PREF, 0)
|
||||
}
|
||||
|
Reference in New Issue
Block a user