diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt index 02539457ad..4c864fa355 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt @@ -1639,12 +1639,20 @@ class ConversationFragment : linkPreviews: List = linkPreviewViewModel.onSend(), preUploadResults: List = emptyList(), bypassPreSendSafetyNumberCheck: Boolean = false, + isViewOnce: Boolean = false, afterSendComplete: () -> Unit = {} ) { if (scheduledDate != -1L && ReenableScheduledMessagesDialogFragment.showIfNeeded(requireContext(), childFragmentManager, null, scheduledDate)) { return } + if (SignalStore.uiHints().hasNotSeenTextFormattingAlert() && bodyRanges != null && bodyRanges.rangesCount > 0) { + Dialogs.showFormattedTextDialog(requireContext()) { + sendMessage(body, mentions, bodyRanges, messageToEdit, quote, scheduledDate, slideDeck, contacts, clearCompose, linkPreviews, preUploadResults, bypassPreSendSafetyNumberCheck, isViewOnce, afterSendComplete) + } + return + } + if (inputPanel.isRecordingInLockedMode) { inputPanel.releaseRecordingLock() return @@ -1672,7 +1680,8 @@ class ConversationFragment : contacts = contacts, linkPreviews = linkPreviews, preUploadResults = preUploadResults, - bypassPreSendSafetyNumberCheck = bypassPreSendSafetyNumberCheck + bypassPreSendSafetyNumberCheck = bypassPreSendSafetyNumberCheck, + isViewOnce = isViewOnce ) disposables += send @@ -3130,18 +3139,14 @@ class ConversationFragment : slideDeck = SlideDeck().apply { slides.forEach { addSlide(it) } }, contacts = emptyList(), clearCompose = true, - linkPreviews = emptyList() + linkPreviews = emptyList(), + isViewOnce = result.isViewOnce ) { viewModel.deleteSlideData(slides) } } private fun sendPreUploadMediaMessage(result: MediaSendActivityResult) { - if (SignalStore.uiHints().hasNotSeenTextFormattingAlert() && result.bodyRanges != null && result.bodyRanges.rangesCount > 0) { - Dialogs.showFormattedTextDialog(requireContext()) { sendPreUploadMediaMessage(result) } - return - } - sendMessage( body = result.body, mentions = result.mentions, @@ -3153,7 +3158,8 @@ class ConversationFragment : contacts = emptyList(), clearCompose = true, linkPreviews = emptyList(), - preUploadResults = result.preUploadResults + preUploadResults = result.preUploadResults, + isViewOnce = result.isViewOnce ) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationRepository.kt index fbed431974..00cf996e4c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationRepository.kt @@ -215,7 +215,8 @@ class ConversationRepository( contacts: List, linkPreviews: List, preUploadResults: List, - identityRecordsState: IdentityRecordsState? + identityRecordsState: IdentityRecordsState?, + isViewOnce: Boolean ): Completable { val sendCompletable = Completable.create { emitter -> if (body.isEmpty() && slideDeck?.containsMediaSlide() != true && preUploadResults.isEmpty() && contacts.isEmpty()) { @@ -259,7 +260,8 @@ class ConversationRepository( mentions = mentions, sharedContacts = contacts, linkPreviews = linkPreviews, - attachments = outgoingMessageSlideDeck?.asAttachments() ?: emptyList() + attachments = outgoingMessageSlideDeck?.asAttachments() ?: emptyList(), + isViewOnce = isViewOnce ) if (preUploadResults.isEmpty()) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationViewModel.kt index ae0899d2fc..de9582410d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationViewModel.kt @@ -346,7 +346,8 @@ class ConversationViewModel( contacts: List, linkPreviews: List, preUploadResults: List, - bypassPreSendSafetyNumberCheck: Boolean + bypassPreSendSafetyNumberCheck: Boolean, + isViewOnce: Boolean ): Completable { return repository.sendMessage( threadId = threadId, @@ -362,7 +363,8 @@ class ConversationViewModel( contacts = contacts, linkPreviews = linkPreviews, preUploadResults = preUploadResults, - identityRecordsState = if (bypassPreSendSafetyNumberCheck) null else identityRecordsStore.state + identityRecordsState = if (bypassPreSendSafetyNumberCheck) null else identityRecordsStore.state, + isViewOnce = isViewOnce ).observeOn(AndroidSchedulers.mainThread()) }