Add delivery receipts to the MSL.

This commit is contained in:
Greyson Parrelli
2021-06-30 14:36:00 -04:00
committed by Alex Hart
parent 5372f79c40
commit 3d0e15e2b8
15 changed files with 182 additions and 88 deletions

View File

@@ -300,6 +300,9 @@ class ConversationSettingsFragment : DSLSettingsFragment(
recipient = state.recipient,
onDisableProfileSharingClick = {
viewModel.disableProfileSharing()
},
onDeleteSessionClick = {
viewModel.deleteSession()
}
)
)

View File

@@ -24,6 +24,7 @@ import org.thoughtcrime.securesms.recipients.RecipientId
import org.thoughtcrime.securesms.recipients.RecipientUtil
import org.thoughtcrime.securesms.util.FeatureFlags
import org.whispersystems.libsignal.util.guava.Optional
import org.whispersystems.libsignal.util.guava.Preconditions
import java.io.IOException
private val TAG = Log.tag(ConversationSettingsRepository::class.java)
@@ -185,12 +186,22 @@ class ConversationSettingsRepository(
}
}
fun disableProfileSharing(recipientId: RecipientId) {
fun disableProfileSharingForInternalUser(recipientId: RecipientId) {
Preconditions.checkArgument(FeatureFlags.internalUser(), "Internal users only!");
SignalExecutors.BOUNDED.execute {
DatabaseFactory.getRecipientDatabase(context).setProfileSharing(recipientId, false)
}
}
fun deleteSessionForInternalUser(recipientId: RecipientId) {
Preconditions.checkArgument(FeatureFlags.internalUser(), "Internal users only!");
SignalExecutors.BOUNDED.execute {
DatabaseFactory.getSessionDatabase(context).deleteAllFor(recipientId)
}
}
@WorkerThread
fun isMessageRequestAccepted(recipient: Recipient): Boolean {
return RecipientUtil.isMessageRequestAccepted(context, recipient)

View File

@@ -116,6 +116,8 @@ sealed class ConversationSettingsViewModel(
open fun disableProfileSharing(): Unit = error("This ViewModel does not support this interaction")
open fun deleteSession(): Unit = error("This ViewModel does not support this interaction")
open fun initiateGroupUpgrade(): Unit = error("This ViewModel does not support this interaction")
private class RecipientSettingsViewModel(
@@ -237,7 +239,11 @@ sealed class ConversationSettingsViewModel(
}
override fun disableProfileSharing() {
repository.disableProfileSharing(recipientId)
repository.disableProfileSharingForInternalUser(recipientId)
}
override fun deleteSession() {
repository.deleteSessionForInternalUser(recipientId)
}
}

View File

@@ -19,7 +19,8 @@ object InternalPreference {
class Model(
private val recipient: Recipient,
val onDisableProfileSharingClick: () -> Unit
val onDisableProfileSharingClick: () -> Unit,
val onDeleteSessionClick: () -> Unit
) : PreferenceModel<Model>() {
val body: String get() {
@@ -58,10 +59,12 @@ object InternalPreference {
private val body: TextView = itemView.findViewById(R.id.internal_preference_body)
private val disableProfileSharing: View = itemView.findViewById(R.id.internal_disable_profile_sharing)
private val deleteSession: View = itemView.findViewById(R.id.internal_delete_session)
override fun bind(model: Model) {
body.text = model.body
disableProfileSharing.setOnClickListener { model.onDisableProfileSharingClick() }
deleteSession.setOnClickListener { model.onDeleteSessionClick() }
}
}
}