mirror of
https://github.com/oxen-io/session-android.git
synced 2025-03-31 09:02:16 +00:00
add a flag to disable unsend requests
This commit is contained in:
parent
144992d817
commit
b9dd229207
@ -209,6 +209,9 @@ class ConversationActivityV2 : PassphraseRequiredActionBarActivity(), InputBarDe
|
|||||||
const val PICK_GIF = 10
|
const val PICK_GIF = 10
|
||||||
const val PICK_FROM_LIBRARY = 12
|
const val PICK_FROM_LIBRARY = 12
|
||||||
const val INVITE_CONTACTS = 124
|
const val INVITE_CONTACTS = 124
|
||||||
|
|
||||||
|
//flag
|
||||||
|
val isUnsendRequestsEnabled = false
|
||||||
}
|
}
|
||||||
// endregion
|
// endregion
|
||||||
|
|
||||||
@ -1169,7 +1172,54 @@ class ConversationActivityV2 : PassphraseRequiredActionBarActivity(), InputBarDe
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Remove this after the unsend request is enabled
|
||||||
|
fun deleteMessagesWithoutUnsendRequest(messages: Set<MessageRecord>) {
|
||||||
|
val messageCount = messages.size
|
||||||
|
val messageDataProvider = MessagingModuleConfiguration.shared.messageDataProvider
|
||||||
|
val messageDB = DatabaseFactory.getLokiMessageDatabase(this@ConversationActivityV2)
|
||||||
|
val builder = AlertDialog.Builder(this)
|
||||||
|
builder.setTitle(resources.getQuantityString(R.plurals.ConversationFragment_delete_selected_messages, messageCount, messageCount))
|
||||||
|
builder.setMessage(resources.getQuantityString(R.plurals.ConversationFragment_this_will_permanently_delete_all_n_selected_messages, messageCount, messageCount))
|
||||||
|
builder.setCancelable(true)
|
||||||
|
val openGroup = DatabaseFactory.getLokiThreadDatabase(this).getOpenGroupChat(threadID)
|
||||||
|
builder.setPositiveButton(R.string.delete) { _, _ ->
|
||||||
|
if (openGroup != null) {
|
||||||
|
val messageServerIDs = mutableMapOf<Long, MessageRecord>()
|
||||||
|
for (message in messages) {
|
||||||
|
val messageServerID = messageDB.getServerID(message.id, !message.isMms) ?: continue
|
||||||
|
messageServerIDs[messageServerID] = message
|
||||||
|
}
|
||||||
|
for ((messageServerID, message) in messageServerIDs) {
|
||||||
|
OpenGroupAPIV2.deleteMessage(messageServerID, openGroup.room, openGroup.server)
|
||||||
|
.success {
|
||||||
|
messageDataProvider.deleteMessage(message.id, !message.isMms)
|
||||||
|
}.failUi { error ->
|
||||||
|
Toast.makeText(this@ConversationActivityV2, "Couldn't delete message due to error: $error", Toast.LENGTH_LONG).show()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for (message in messages) {
|
||||||
|
if (message.isMms) {
|
||||||
|
DatabaseFactory.getMmsDatabase(this@ConversationActivityV2).deleteMessage(message.id)
|
||||||
|
} else {
|
||||||
|
DatabaseFactory.getSmsDatabase(this@ConversationActivityV2).deleteMessage(message.id)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
endActionMode()
|
||||||
|
}
|
||||||
|
builder.setNegativeButton(android.R.string.cancel) { dialog, _ ->
|
||||||
|
dialog.dismiss()
|
||||||
|
endActionMode()
|
||||||
|
}
|
||||||
|
builder.show()
|
||||||
|
}
|
||||||
|
|
||||||
override fun deleteMessages(messages: Set<MessageRecord>) {
|
override fun deleteMessages(messages: Set<MessageRecord>) {
|
||||||
|
if (!isUnsendRequestsEnabled) {
|
||||||
|
deleteMessagesWithoutUnsendRequest(messages)
|
||||||
|
return
|
||||||
|
}
|
||||||
val allSentByCurrentUser = messages.all { it.isOutgoing }
|
val allSentByCurrentUser = messages.all { it.isOutgoing }
|
||||||
if (thread.isOpenGroupRecipient) {
|
if (thread.isOpenGroupRecipient) {
|
||||||
val messageCount = messages.size
|
val messageCount = messages.size
|
||||||
|
@ -7,6 +7,7 @@ import android.view.MenuItem
|
|||||||
import network.loki.messenger.R
|
import network.loki.messenger.R
|
||||||
import org.session.libsession.messaging.open_groups.OpenGroupAPIV2
|
import org.session.libsession.messaging.open_groups.OpenGroupAPIV2
|
||||||
import org.session.libsession.utilities.TextSecurePreferences
|
import org.session.libsession.utilities.TextSecurePreferences
|
||||||
|
import org.thoughtcrime.securesms.conversation.v2.ConversationActivityV2
|
||||||
import org.thoughtcrime.securesms.conversation.v2.ConversationAdapter
|
import org.thoughtcrime.securesms.conversation.v2.ConversationAdapter
|
||||||
import org.thoughtcrime.securesms.database.DatabaseFactory
|
import org.thoughtcrime.securesms.database.DatabaseFactory
|
||||||
import org.thoughtcrime.securesms.database.model.MediaMmsMessageRecord
|
import org.thoughtcrime.securesms.database.model.MediaMmsMessageRecord
|
||||||
@ -35,6 +36,14 @@ class ConversationActionModeCallback(private val adapter: ConversationAdapter, p
|
|||||||
val userPublicKey = TextSecurePreferences.getLocalNumber(context)!!
|
val userPublicKey = TextSecurePreferences.getLocalNumber(context)!!
|
||||||
fun userCanDeleteSelectedItems(): Boolean {
|
fun userCanDeleteSelectedItems(): Boolean {
|
||||||
val allSentByCurrentUser = selectedItems.all { it.isOutgoing }
|
val allSentByCurrentUser = selectedItems.all { it.isOutgoing }
|
||||||
|
|
||||||
|
// Remove this after the unsend request is enabled
|
||||||
|
if (!ConversationActivityV2.isUnsendRequestsEnabled) {
|
||||||
|
if (openGroup == null) { return true }
|
||||||
|
if (allSentByCurrentUser) { return true }
|
||||||
|
return OpenGroupAPIV2.isUserModerator(userPublicKey, openGroup.room, openGroup.server)
|
||||||
|
}
|
||||||
|
|
||||||
val allReceivedByByCurrentUser = selectedItems.all { !it.isOutgoing }
|
val allReceivedByByCurrentUser = selectedItems.all { !it.isOutgoing }
|
||||||
if (openGroup == null) { return allSentByCurrentUser || allReceivedByByCurrentUser }
|
if (openGroup == null) { return allSentByCurrentUser || allReceivedByByCurrentUser }
|
||||||
if (allSentByCurrentUser) { return true }
|
if (allSentByCurrentUser) { return true }
|
||||||
|
Loading…
x
Reference in New Issue
Block a user