From 0b062074b14cd545b649f6155f82288862846a8c Mon Sep 17 00:00:00 2001 From: Harris Date: Tue, 19 Oct 2021 10:33:15 +1100 Subject: [PATCH 1/3] feat: switch unsend flag --- .../securesms/conversation/v2/ConversationActivityV2.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivityV2.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivityV2.kt index bfcf6bbab..be0c82643 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivityV2.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivityV2.kt @@ -224,7 +224,7 @@ class ConversationActivityV2 : PassphraseRequiredActionBarActivity(), InputBarDe const val INVITE_CONTACTS = 124 //flag - const val IS_UNSEND_REQUESTS_ENABLED = false + const val IS_UNSEND_REQUESTS_ENABLED = true } // endregion From 00d6ce76b598f65e120437ab1b31a32a9d7c6a25 Mon Sep 17 00:00:00 2001 From: Harris Date: Tue, 19 Oct 2021 11:12:48 +1100 Subject: [PATCH 2/3] fix: contacts without stored profile information display similar to closed groups for unsend --- .../v2/DeleteOptionsBottomSheet.kt | 33 +++++++++++++++---- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/DeleteOptionsBottomSheet.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/DeleteOptionsBottomSheet.kt index 4d84f7c0f..ccf30b55b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/DeleteOptionsBottomSheet.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/DeleteOptionsBottomSheet.kt @@ -4,23 +4,39 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.core.view.isVisible import com.google.android.material.bottomsheet.BottomSheetDialogFragment -import kotlinx.android.synthetic.main.fragment_conversation_bottom_sheet.* +import dagger.hilt.android.AndroidEntryPoint import kotlinx.android.synthetic.main.fragment_delete_message_bottom_sheet.* import network.loki.messenger.R +import org.session.libsession.messaging.contacts.Contact import org.session.libsession.utilities.recipients.Recipient +import org.thoughtcrime.securesms.database.SessionContactDatabase import org.thoughtcrime.securesms.util.UiModeUtilities +import javax.inject.Inject -class DeleteOptionsBottomSheet: BottomSheetDialogFragment(), View.OnClickListener { +@AndroidEntryPoint +class DeleteOptionsBottomSheet : BottomSheetDialogFragment(), View.OnClickListener { + + @Inject + lateinit var contactDatabase: SessionContactDatabase lateinit var recipient: Recipient + val contact by lazy { + val senderId = recipient.address.serialize() + // this dialog won't show for open group contacts + contactDatabase.getContactWithSessionID(senderId) + ?.displayName(Contact.ContactContext.REGULAR) + } var onDeleteForMeTapped: (() -> Unit?)? = null var onDeleteForEveryoneTapped: (() -> Unit)? = null var onCancelTapped: (() -> Unit)? = null - override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { return inflater.inflate(R.layout.fragment_delete_message_bottom_sheet, container, false) } @@ -34,9 +50,12 @@ class DeleteOptionsBottomSheet: BottomSheetDialogFragment(), View.OnClickListene override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - if (!this::recipient.isInitialized) { return dismiss() } - if (!recipient.isGroupRecipient) { - deleteForEveryoneTextView.text = resources.getString(R.string.delete_message_for_me_and_recipient, recipient.name) + if (!this::recipient.isInitialized) { + return dismiss() + } + if (!recipient.isGroupRecipient && !contact.isNullOrEmpty()) { + deleteForEveryoneTextView.text = + resources.getString(R.string.delete_message_for_me_and_recipient, contact) } deleteForMeTextView.setOnClickListener(this) deleteForEveryoneTextView.setOnClickListener(this) From f2f906fd3ef9207f783cf2539af846815b7695d2 Mon Sep 17 00:00:00 2001 From: jubb Date: Wed, 27 Oct 2021 17:26:44 +1100 Subject: [PATCH 3/3] refactor: closed groups delete for yourself and handle unsend request if it's from yourself or author now --- .../securesms/conversation/v2/DeleteOptionsBottomSheet.kt | 2 ++ .../messaging/sending_receiving/ReceivedMessageHandler.kt | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/DeleteOptionsBottomSheet.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/DeleteOptionsBottomSheet.kt index ccf30b55b..6272a9c22 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/DeleteOptionsBottomSheet.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/DeleteOptionsBottomSheet.kt @@ -4,6 +4,7 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.core.view.isVisible import com.google.android.material.bottomsheet.BottomSheetDialogFragment import dagger.hilt.android.AndroidEntryPoint import kotlinx.android.synthetic.main.fragment_delete_message_bottom_sheet.* @@ -57,6 +58,7 @@ class DeleteOptionsBottomSheet : BottomSheetDialogFragment(), View.OnClickListen deleteForEveryoneTextView.text = resources.getString(R.string.delete_message_for_me_and_recipient, contact) } + deleteForEveryoneTextView.isVisible = !recipient.isClosedGroupRecipient deleteForMeTextView.setOnClickListener(this) deleteForEveryoneTextView.setOnClickListener(this) cancelTextView.setOnClickListener(this) diff --git a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/ReceivedMessageHandler.kt b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/ReceivedMessageHandler.kt index a99c26868..4f94df7ce 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/ReceivedMessageHandler.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/ReceivedMessageHandler.kt @@ -144,7 +144,8 @@ private fun handleConfigurationMessage(message: ConfigurationMessage) { } fun MessageReceiver.handleUnsendRequest(message: UnsendRequest) { - if (message.sender != message.author) { return } + val userPublicKey = MessagingModuleConfiguration.shared.storage.getUserPublicKey() + if (message.sender != message.author && (message.sender != userPublicKey && userPublicKey != null)) { return } val context = MessagingModuleConfiguration.shared.context val storage = MessagingModuleConfiguration.shared.storage val messageDataProvider = MessagingModuleConfiguration.shared.messageDataProvider